APK 签名 v1 v2 步骤

APK 签名 v1 v2 步骤

需要工具 **apksigner.jar jarsinger.exe keytool.exe zipalign.exe **

1.生成 keystore

keytool -genkey -v -keystore my.keystore -alias liuhan -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -dname "cn=Test,ou=Test,c=CA" -validity 10000

这里特别注意下:

​ -alias liuhan (liuhan) 是别名 后面我们需要使用这个别名来生成 v1 v2的签名

提示要输入密钥口令 这里我们要记住自己的密钥口令 后面会用到

参数:

-genkeypair 生成一条密钥对(由私钥和公钥组成)

-keystore 密钥库名字及存储位置(默认当前目录)

-alias 密钥对的别名(密钥库可以存在多个密钥对,用于区分不同密钥对)

-validity 密钥对的有效期(单位:天)

-keyalg 生成密钥对的算法(常用 RSA/DSA ,DSA 只用于签名,默认采用DSA 

生成结果图:

在这里插入图片描述

2.查看密钥库

keytool -list -v -keystore my.keystore

3.将未签名的apk进行四字节对齐操作

zipalign -v -f 4 D:\python_work\Apksign_cool\project.apk D:\python_work\Apksign_cool\zlign.apk

zipalign.exe -v -p 4 input.apk output.apk

zip对齐,因为APK包的本质是一个zip压缩文档,经过边界对齐方式优化能使包内未压缩的数据有序的排列,从而减少应用程序运行时的内存消耗 ,通过空间换时间的方式提高执行效率(zipalign后的apk包体积增大了100KB左右)。

zipalign命令选项不多:
-f : 输出文件覆盖源文件
-v : 详细的输出log
-p : outfile.zip should use the same page alignment for all shared object files within infile.zip
-c : 检查当前APK是否已经执行过Align优化。

另外上面的数字4是代表按照4字节(32位)边界对齐。

4.生成带v1 v2签名的apk

这里使用4步骤生成的zlign.apk 进行输入

java -jar ./apksigner.jar sign --ks my.keystore --ks-key-alias liuhan D:\python_work\Apksign_cool\out_zlign_v1_v2.apk   D:\python_work\Apksign_cool\zlign.apk

–ks my.keystore (my.keystore) 是证书的名字和路径

–ks-key-alias liuhan (liuhan ) 是my.keystore 的别名

D:\python_work\Apksign_cool\out_zlign_v1_v2.apk 这个参数是输出

D:\python_work\Apksign_cool\zlign.apk 这个参数是输入

java -jar apksigner.jar sign --ks xxx.jks --ks-key-alias xxx --ks-pass pass:xxxx --key-pass pass:xxxx --out output.apk moa.apk

java -jar apksigner.jar sign            //执行签名操作
--ks 你的jks路径                        //jks签名证书路径
--ks-key-alias 你的alias                  //生成jks时指定的alias
--ks-pass pass:你的密码                 //KeyStore密码
--key-pass pass:你的密码                //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk                        //输出路径
input.apk                               //被签名的apk

5.验证签名apk的信息

使用命令如下:

keytool -printcert -jarfile D:\python_work\Apksign_cool\project_zlign.apk

java -jar ./apksigner.jar verify -v --print-certs D:\python_work\Apksign_cool\project_zlign.apk

在这里插入图片描述

6.使用 jarsigner.exe 生成只有v1的签名的apk

jarsigner.exe -verbose -keystore D:\python_work\Apksign_cool\my.keystore  -digestalg SHA1 -sigalg SHA1withRSA  -signedjar D:\python_work\Apksign_cool\project_out.apk D:\python_work\Apksign_cool\project_zlign.apk liuhan

7.错误提示

使用 jarsigner.exe 生成的v1 签名的apk 在android11手机上安装时提示:

adb: failed to install D:\python_work\Apksign_cool\project_out.apk: Failure [-124: Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary]

compressed and aligned on a 4-byte boundary]

解决的话就是只能用  apksigner.jar 来签名

![在这里插入图片描述](https://img-blog.csdnimg.cn/fefc69a10d9f4f2fafb328def7767e17.png#pic_center)


猜你喜欢

转载自blog.csdn.net/qq_36535153/article/details/128052226
今日推荐