通用版加固工具
jar包形式的命令行加固工具,适用于多种平台,包括Win/Mac/Linux,支持apk、aab格式,适合自动打包。以下均以Windows环境下描述,其他系统环境使用方法类似。
下载地址
使用说明
- 使用方式:命令行模式(注意,第一次使用需要配置config.ini文件。应用加固只需要配置appkey及签名信息即可)
- 命令行模式参数:
java -jar NHPProtect.jar -yunconfig -fullapk -apksign -zipalign -input %inputapk%
- 参数说明如下:
参数 | 说明 |
---|---|
-yunconfig | 必填项,表示自动从易盾后台获取加固参数 |
-input | 必填项,参数后面跟待加固的APK文件路径 |
-apksign | 对加固后的 APK 包签名(不加该参数,则不对加固包体进行签名) |
-zipalign | 对加固后的 APK 包对齐(不加该参数,则不对加固包体进行对齐) |
config.ini文件配置说明
config.ini必须要跟NHPProtect.jar在同一目录下,它的功能主要有以下三点:
设置appkey
用户需要将appkey填写在该配置文件中,格式如下所示。Appkey请在服务管理中查询(若无appkey,请联系客服)。
[appkey]
key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
配置签名相关信息
若需要进行自动签名操作,除了在命令行中加入”-apksign”参数外,还需要在config.ini文件中设置签名相关信息,格式和含义如下所示。
[apksign]
keystore=D:\xxx\xx.keystore
alias=xxx
pswd=xxx
aliaspswd=xxx
signmod=xxx
keystore: 存储签名信息的文件,使用绝对路径表示
alias: 签名别名
pswd: 对应签名信息的密码
aliaspswd: 对应签名别名的密码
signmod | 说明 |
---|---|
0 | 表示同时使用v1、v2、v3签名 |
1 | 表示只使用v1签名 |
2 | 表示只使用v2签名 |
若signmod输入为其他字符,则默认值为0,同时使用v1 v2和v3签名
若config.ini里不包含signmod,则默认为1,只进行v1签名。
(注:只使用v2签名,仅支持Android 7.0 以上系统,请谨慎使用)
以上5个信息,任意一项有误的话,签名均会失败。
为了兼容更多的签名版本需求,新增配置signver。优先级:signver>signmod。 signmod逻辑未做修改,现有逻辑不受影响,需要自由配置签名版本时可在config文件加上signver信息。
[apksign]
keystore=D:\xxx\xx.keystore
alias=xxx
pswd=xxx
aliaspswd=xxx
signmod=xxx
signver=v1+v2
Google play上架问题
如果使用-apksign 签名aab文件(用jarsigner签的)无法上架应用商店,可以使用 本参数 -aabUseApksig , 使用 apksigner对aab进行签名。
示例:java -jar NHPProtect.jar -yunconfig -fullapk -zipalign -apksign -aabUseApksig -input xxx.aab
ps.当前谷歌官网上提示不可使用apksiner签名aab,实际上可行。 所以不推荐优先使用 aabUseApksig。