Android7.0引入了全新的APK Signature Scheme v2签名方式,使用传统的JDK jarsigner命令行签名只能进行v1签名,如果要进行v2签名就要使用SDK提供的apksigner工具。
apksigner.jar在版本>25的SDK\build-tools\中。
基于此,使用JavaFx编写了安卓Apk签名工具,方便快速进行v1&v2签名。
- 无需记忆复杂的命令行,点击几下即可方便快速的签名。
- 使用xml格式配置签名密钥,可以配置多个签名密钥。
- 开放源码,无需担心恶意工具入侵你的Apk。
使用说明
运行环境
- Windows系统
- JDK1.8&环境变量
1.下载源码编译运行
-
clone/下载代码到你的电脑,导入到IDEA中运行,编译完成后,点击Run Main运行。
-
程序初始化后会先读取默认的签名配置文件(代码根目录\config.xml)
-
点击“编辑密钥配置”编辑你的密钥配置。
-
如果点击“编辑密钥配置”没反应,应该是没有配置xml的默认打开程序,可以找到"config.xml"用记事本打开编辑。
-
编辑完,点保存关闭后。点击“编辑后,刷新密钥配置”,重新读取配置。
-
可以参考config.xml格式,复制编辑保存成新的签名配置,签名前选择新密钥配置即可。
-
-
选择一个未签名的apk签名,配置渠道信息,然后打开签名后Apk的位置,验证签名状态。
-
修改代码,适应你的需求。
2.下载压缩包解压运行
-
进入Releases v1.2,下载附件ApkSignTools.7z
-
解压后,双击"ApkSignTools.exe"运行签名程序。
-
程序初始化后会先读取默认的签名配置文件(程序安装路径\app\config.xml)
-
点击“编辑密钥配置”编辑你的密钥配置。
-
如果点击“编辑密钥配置”没反应,应该是没有配置xml的默认打开程序,可以找到"config.xml"用记事本打开编辑。
-
编辑完,点保存关闭后。点击“编辑后,刷新密钥配置”,重新读取配置。
-
可以参考config.xml格式,复制编辑保存成新未新的签名配置,签名前选择新密钥配置即可。
-
-
选择一个未签名的apk签名,配置渠道信息,然后打开签名后Apk的位置,验证签名状态。
Apk渠道相关
基于美团渠道包解决方案 新增渠道写入功能。
需要注意的点是,由于写入多渠道空白文件会破坏App结构,在v1签名下没有影响,但是会导致v2签名成功后校验失败无法安装。
为了解决这个问题,需要在写入渠道后,v2签名前,使用zipalign.exe
先将apk对齐。
zipalign对齐
由于写入多渠道空白文件会破坏App结构,所以要先使用zipalign对齐。
zipalign -v 4 " + 需要签名的apk +" "+ 对齐后的apk
注意
zipalign.exe
位于AndroidSDK的build-tools
目录下,不同的系统平台会有差异。
签名相关命令
旧版v1签名
jarsigner -verbose -keystore 你的密钥 -storepass 密钥密码 -keypass 别名密码 -sigfile CERT -signedjar 签名后的apk路径 待签名的apk 别名
新版v1&v2签名
java -jar apksigner.jar sign --ks 你的密钥 --ks-key-alias 别名 --ks-pass pass:密钥密码 --key-pass pass:别名密码 --out 签名后的apk路径 待签名的apk
验证Apk签名状态
java -jar apksigner.jar verify -v my.apk
签名状态说明
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
第一行对应的结果,表示是否已使用v1签名。
第二行对应的结果,表示是否已使用v2签名。