如下截图所示,我今天就是遇到了这个问题,这个问题是比较好解决,但如果官网有显眼指引说明会不会对开发者更友好些呢?
首先我们给360的加固包是带有自己的签名的,然后经360加固过后(免费的加固服务),输出的包是没有签名的,所以我们就需要再重新签名一次,这时候就要注意了,前后签名的keystore要用同一个。不然一启动就崩溃/点击应用标图没有响应的感觉,应用主Activity都没机会显示
360 签名工具
可以纯手机自己在命令行签名加固后的apk,也可以用360加固助手(官网有提供下载)来签名,即它提供的工具包的签名功能是免费的,收费的是应用加固过程中的自动签名功能
注:工具包的签名本质上也是调命令行的工具去做签名,相关的命令有 zipalign、apksigner等
手动命令行签名
流程说明:
第一步:对加固后的apk做字节边界重组,使用zipalign命令
第二步:对align后的apk做签名,使用apksigner命令
zipalign
可以用zipalign查看下apk是否已经做了字节边界重组,示例如下
zipalign -c -v 4 xxx.apk
查验360免费加固后的apk是这样的结果,证明没有做align
对apk做节节边界重组,示例如下
//zipalign -f -v 4 输出的apk名, 输出的apk名zipalign -f -v 4 input.apk output.apk
apksigner
签名就好办了,加固前用于签我的keystore操作即可,示例如下
//下面是用了debug keystore做示例,注意需要替换自己的keystore,还有key alias
apksigner sign --ks debug.keystore --ks-key-alias androiddebugkey --out demo_enc_align_sign.apk demo_enc_align.apk
过程会提示输入keystore的密码
怎么确认加固包
解压apk,看dex中有如下内容即为加固包
复习相关的命令
查看apk的签名信息
keytool -printcert -jarfile
示例如下
查看keystore的信息
keytool -list -v -keystore
示例如下