2022-5/17
背景
- 当下有一个需求就是对apk进行加固,最后选择了腾讯的乐固
- 乐固加固是加固好了,但是加固后的把我apk原来的签名给去了...
- 这个时候就需要我们对apk进行签名
解决方案
当时第一想到的是看看Android studio是否有对应的工具。but没发现。
所以google后发现唯一的解决方案就是利用apksigner(官方的sdk工具)
存放路径在 : sdk路径/build-tools/你中意的build-tool版本/apksigner.bat
实现方案
build-tools version : 30.0.3
代码不多就
apksigner.bat sign
--ks 你的keystore文件路径
--ks-key-alias 你的key-alias
--ks-pass pass:你的key-password
(ks-pass有好几种模式,具体可以看官方文档)
--out 输出路径 输入路径
然后回车就完事。
然后terminal也不会有输出.说明你就成功了。
坑点
如果你跟我一样没有在sign以前加zipalign那说明我们很有默契...
官方文档有警告,签名以前务必zipalign,否则签名是无效的,zipalign是对apk加载的一个优化,使得资源文件距离初始位置为4的整数倍。加快apk加载速度。这里可能涉及到mmap。
代码很短
zipalign -p -f -v 4 infile.apk outfile.apk
在sign之前加入zipalign就可以成功签名了。