在没有jarsigner / apksigner或任何Java工具的情况下为APK生成CERT.RSA

问题描述

我目前正在尝试使用此过程动态打包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命令。

有任何线索吗?

解决方法

首先,请确保您的minSdkVersion apksig与APK Signature v2 scheme进行签名,签名速度将提高一个数量级。

现在,假设您要做需要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密钥,则可能可以大大简化此代码并使其适合您的工具。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...