主要应用场景为,在apk加固之后原apk的签名会被覆盖。如果是通过某网站比如说腾讯加固等,一般会提供放置签名重新签名的位置。 但,如果是和其他安全公司合作并且不想一般也不应该交出自己的签名,那么当应用已经成apk后我们怎么为其打上v1v2签名呢?
其实这个时候AS依旧为我们提供了工具。
但重中之重是,必须要有java环境!!!!,有些纯写安卓的,比如我在公司就写安卓,其他的没怎么用,AS自己会提供java的编译不需要java环境,于是乎用的时候再找就慢了。没有的看到先下,下好了再看!
打开你存放SDK的文件夹,Sdk->build-tools->在这里有你下载的所有版本的build-tools。(至于你应用的build-tools是在app级的build.gradle的android闭包里的defaultconfig闭包中)不过用高版本的也可以。选择好后继续路径Sdk->build-tools->30.0.3->lib到这里,就可以看到我们的主角apksigner.jar了
找到apksigner,为了方便起见,你可以把你要签名的apk和签名文件.jks放到这里来。(这样路径可以不用复制比较短)
接下来在此文件夹打开终端,(题外话)windows可以装一个可视化终端,也可以用cmd的cd到文件夹,我记得还可以进入一个蓝色的界面可以在本文件夹操作。
接下来就是命令
java -jar apksigner.jar sign --ks kestore的路径 --out output.apk input.apk
如果都放本文件夹那kestore的路径就是./xxx.jks,input.apk换成你自己apk。 不过上述代码只针对密钥库里有切仅有一个密钥的时候。不然会报错提示必须使用 --ks-key-alias来通过别名确认具体密钥。
java -jar apksigner.jar sign --ks kestore的路径 --ks-key-alias 密钥别名 --out output.apk input.apk
最后检测一下
java -jar apksigner.jar verify -v output.apk
会出现v1-v4的检测,只要v1v2是true,说明签名成功。
|