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