0

我目前正在尝试使用此过程即时打包 APK:

  • 当最终用户要求下载时,我在 APK 中添加了一个文件
  • 我签署了 APK(它是一直使用的同一个密钥)
  • 我提供 APK

问题是使用常用工具(apksigner、jarsigner)对 APK 进行签名对于大型 APK(500M +)可能会很耗时

我的目标是更新 META-INF 数据并只生成新的 CERT.RSA 文件(如果我没记错的话,这是 CERT.SF 的编码)

我已经成功找到了如何在 META-INF 目录中生成 MANIFEST.MF 和 CERT.SF。我只是找不到从 CERT.SF 生成 CERT.RSA 的算法或任何 openssl 命令。

有什么线索吗?

4

1 回答 1

0

首先,确保您的minSdkVersion< 24。如果您有 24 或以上,那么这些文件不是必需的,您只能使用APK Signature v2 方案签名apksig,这将是一个数量级的签名速度更快。

现在,假设您确实需要 v1 签名并希望手动生成它,我建议您查看JarSigner的 OpenJDK 实现。特别参见Block课程:https ://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/sun/security/tools/JarSigner.java#L2221-L2344

这是 *.RSA 文件的内容。正如你所看到的,它是一些东西组合的签名。如果您只使用 RSA 密钥,您可能可以稍微简化此代码并使其适应您的工具。

于 2020-09-22T20:27:41.973 回答