Android签名方案

签名方案有三种,V1、V2、V3

v1 方案:基于 JAR 签名。
v2 方案:APK 签名方案 v2,在 Android 7.0 引入。
v3 方案:APK 签名方案v3,在 Android 9.0 引入。

V1签名(jarsigner方式)

jarsigner -verbose -keystore (签名地址) -signedjar (签名后的apk地址) (待签名apk地址) (别名)
jarsigner -verbose -keystore D:\\demojks.jks -signedjar C:\demo_sign.apk C:\demo.apk Demo

jarsigner: 找不到 Demo 的证书链。Demo 必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。

别名位置错误。

V2签名(apksigner方式)

//直接用apksigner进行签名
apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
apksigner sign --ks D:\itlao5.keystore --ks-key-alias itlao5 --out D:\itlao5_signed.apk D:\itlao5.apk 

apksigner默认是同时支持V1与V2的

有一种使用Jar的签名V2的方式:

//使用Jar命令进行签名
java -jar apksigner.jar sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
//直接用apksigner进行验证
apksigner verify -v -print-certs (apk地址)

错误:
‘apksigner’ 不是内部或外部命令,也不是可运行的程序
解决:需要切到sdk的对应版本下面,如下例

C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\29.0.2>


在这里插入图片描述
可以看到这个APK只签名了V1。

在这里插入图片描述
这个是签了V1 V2 V3

V3 签名

使用V2的签名方式校验后发现,V1 V2 V3都签完了。

apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)

apksigner 签名后,可以进行Apk优化

cmd路径:
C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\29.0.2>
或者 Sdk/tools/

zipalign -v 4 原Apk 优化完Apk地址

非必须操作但是最好做下

地址:https://developer.android.google.cn/studio/command-line/zipalign.html

查看签名文件证书

keytool -list -v -keystore (文件路径)

给demo配置的jks如下:
在这里插入图片描述

详解Android v1、v2、v3签名(小结):https://www.jb51.net/article/174939.htm

Android 对APK进行v1+v2+v3签名:https://blog.csdn.net/Andrio/article/details/107855762

原来应用认领的时候用过,现在加固完还要用,特此记录:命令 jarsigner -verbose -keystore (签名地址) -signedjar (签名后的apk地址) (待签名apk地址) (别名)jarsigner -verbose -keystore D:\project_x_20210610\demojks.jks -signedjar C:\Users\Administrator\Desktop\demo_sign.apk C:\Users\Administrator\Deskt 如果没有配置的话,就在jdk的安装目录执行指令就行,下面是mac中的对应位置 /Users/jalen/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home/bin 输入下面的指令 一步搞定 /Users/jal
Apk签名,每一个Android开发者都不陌生。它就是对我们的apk加了一个校验参数,防止apk被掉包。一开始做Android开发,就接触到了apk签名;后来在微信开放平台、高德地图等平台注册时,需要填写apk签名的md5值和sha256值;再后来做系统应用,接触到了系统签名;而后就想了解下apk的生成机制,学习了如何用命令行进行签名。 大部分开发者对apk签名还停留在APK v2,对APK v3和APK v4了解很少,而且网上大部分文章讲解的含糊不清,所以根据官网文档重新整理一份。 apk签名APK v1到APK v2改动很大,是颠覆性的,而APK v3只是对APK v2的一次升级,APK v4则是一个补充。 本篇文章主要参考Android各版本改动: https://developer.android.google.cn/...
一、什么是apk签名 签名是摘要与非对称密钥加密相相结合的产物,摘要就像内容的一个指纹信息,一旦内容被篡改,摘要就会改变,签名是摘要的加密结果,摘要改变,签名也会失效。Android APK签名也是这个道理,如果APK签名跟内容对应不起来,Android系统就认为APK内容被篡改了,从而拒绝安装,以保证系统的安全性。 应用程序的作者使用自己的私钥签名APK文件,并将签名与公钥一起发布到APK中,这个过程称之为签名。当应用程序被安装时,用发布的公钥去解析签名,并与文件的hash进行比对,这个过程叫验签。 java.io.FileNotFoundException: /data/user/0/com.xx.xx/files/com_alibaba_aliyun_crash_defend_sd 35934 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.