手动apk加签名

430 阅读1分钟

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那说明我们很有默契...

image-20220517222451826

官方文档有警告,签名以前务必zipalign,否则签名是无效的,zipalign是对apk加载的一个优化,使得资源文件距离初始位置为4的整数倍。加快apk加载速度。这里可能涉及到mmap。

代码很短

zipalign -p -f -v 4 infile.apk outfile.apk

在sign之前加入zipalign就可以成功签名了。