APK 加固流程
打包APK
通过 ./gradlew assembleRelease
命令打包,此时的apk没有加固,不符合安全需要
登录腾讯云执行加固操作
加固使用 腾讯云 -> 移动应用安全 -> 应用安全 加固方案,加固服务需要认证,自行选择适合自己的方式就行了
认证成功后,进入 应用加固 页面
点击去加固,点击 立即加固 ,上传应用成功后如下
点击 确认加固, 在线加固需要几分钟,加固完成后有加固结果显示
查看加固结果
此时加固就完成了,下载加固包就行了
重新签名
由于腾讯云应用安全需要将APK签名信息删除后才能加固,所以加固后的安装包是没有签名信息的,现在需要对加固包重新签名
使用 JDK 中的签名工具 jarsigner
运行 jarsigner,如果没有设置PATH环境变量,那可以从JDK安装路径下的bin目录中找到
代码语言:javascript复制$ jarsigner -help
用法: jarsigner [选项] jar-file 别名
jarsigner -verify [选项] jar-file [别名...]
[-keystore <url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 私有密钥的口令 (如果不同)
[-certchain <文件>] 替代证书链文件的名称
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的 JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
...
签名命令
代码语言:javascript复制jarsigner -verbose -keystore keystore文件路径 -signedjar 签名后生成的apk路径 待签名的apk路径 alias别名
个人本地apk添加签名,签名文件 keystore 和 apk 都在同一个目录下, 签名后的 apk1.apk 也在本地
代码语言:javascript复制$ jarsigner -verbose -keystore .my-release-key.keystore -signedjar .myapp1.apk .myapp.apk my-key-alias
输入密钥库的密码短语:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/MY-KEY-A.SF
正在添加: META-INF/MY-KEY-A.RSA
正在签名: lib/arm64-v8a/libbetter.so
正在签名: lib/arm64-v8a/libc _shared.so
...
正在签名: assets/0OO00l111l1l
正在签名: tencent_stub
[可信证书]
jar 已签名。
警告:
签名者证书为自签名证书。
这样就签名成功了。