我目前正在尝试使用以下过程动态打包APK:
- 当终端用户要求下载时,我在APK中添加了一个文件
- 我在APK上签名(这是一直使用的同一个密钥(
- 我交付APK
问题是,对于大型APK(500M+(来说,使用通用工具(apksigner、jarsigner(签署APK可能会很耗时
我的目标是更新META-INF数据,只生成新的CERT.RSA文件(如果我没有弄错的话,这是CERT.SF的编码(
我已经成功地找到了如何在META-INF目录中生成MANIFEST.MF和CERT.SF。我只是找不到从CERT.SF生成CERT.RSA的算法或任何openssl命令
有线索吗?
首先,确保您的minSdkVersion
<24.如果你有24或以上,那么这些文件是不必要的,你只能使用apksig
使用APK Signature v2方案进行签名,这将比签名快一个数量级。
现在,假设do需要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密钥,您可能会大大简化此代码,并根据您的工具对其进行调整。