#手机APK加固后二次打包教程
说一下背景,在以前apk被反编译是家常便饭,但是现在我们再去反编译会发现很难,那是因为现在的防破解的技术越来越好了。比如说有比较原始的代码混淆,进一步的自我校验、dex变形等等。今天要讲的就是apk经过加固(具体怎么操作不清楚,比较高端),把我们的签名给破坏了,需要用命令行二次打包。
刚开始我也不太明白,于是百度,Google,都描述的不是很详细,那么吸取了他们的精华,我就一步步带大家来进行二次签名。
1.准备JDK(JDK有版本区分,我们公司使用的keystore是用JDK6生成的,用JDK8重新签名的话打不开应用直接闪退,所以需要准备对应的JDK)
2.进入命令行(cmd),并cd到jdk的bin目录下(没切到bin目录下会默认去JAVAHOME下找)
3.进行打包
键入命令:jarsigner -verbose -keystore (keystore全路径或者相对路径) -signedjar (签名后的apk) (未签名前的apk) keystore别名
(举个栗子:)
回车
输入密码
至此,大功告成。以上为绝对路径,想要使用相对路径的,自己去尝试,补充一下几个参数说明
jarsigner:签名命令
-verbose 在输出设备上显示虚拟机运行信息
-keystore :keystore文件的存储位置
my-release-key.keystore:当前目录下的签名证书
-signedjar:签名后跟第一个签名后的别名,第二个签名前的apk名字
lightpole:证书别名
2020.10.23更新,在新的项目上这个命令无法签名成功,固写出新的命令方式。
-
找到本地buildToolsVersion版本对应的apksigner的路径
-
在当前文件夹下输入签名命令(路径都写全路径)
apksigner sign --ks 你的签名文件 --ks-key-alias 你的签名文件的别名 --ks-key-alias 签名的别名 --ks-pass pass:签名密码 –in 需要签名的apk文件 –out 签名后的apk存放路径
例子:D:\work\Android\AndroidStudio_sdk\build-tools\28.0.3>apksigner sign --ks D:\shmobile.jks --ks-key-alias shmobile --ks-pass pass:keypass --in D:\download\in.apk --out D:\download\out.apk
命令行敲完之后,如果没有报错,就可以去输出目录找签名apk了。
###Thank you!!第一次用MD写文章,感觉都不会用。