有时候我们的应用需要系统级的权限来实现一些功能(如静默安装),这时候需要给应用打上系统签名,常规操作打包apk,解压apk,删除META-INF中CERT.RSA和
CERT.SF,然后压缩,用系统签名工具签名,一顿操作后可能十分钟过去了,实在太过繁琐,因此我们做了一些简化,用gradle+shell帮我们实现自动化。
准备
1.android studio
2.系统签名文件(signapk.jar、platform.x509.pem、platform.pk8)
3.如果是mac系统,还需要libconscrypt_openjdk_jni.dylib这个文件
4.platform.x509.pem和platform.pk8是对应系统的签名,不同厂家可能有不同的
签名文件,我这里的是Google原生的签名文件。
5.文件在百度网盘
链接: https://pan.baidu.com/s/1_wGxfZcpmfmvCGPLSU-XWw 提取码: d46k
6.本文以mac系统为例,windows的按着这思路,也差不多
编写系统签名脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | unzip -q app-release.apk -d . /release
rm -f . /release/META-INF/CERT .RSA
rm -f . /release/META-INF/CERT .SF
cd . /release
for file in $( ls )
do
zip -r -q app-release-tmp.apk -xi $ file ;
done
mv app-release-tmp.apk ../
cd ..
java -jar signapk.jar platform.x509.pem platform.pk8 app-release-tmp.apk app-sign.apk
rm -f app-release-tmp.apk
rm -rf . /release
|
保存为sign.sh,与signapk.jar、platform.x509.pem、platform.pk8、libconscrypt_openjdk_jni.dylib放在同一目录下,我这里是放在项目的
app/release/sign/目录下
编写打包和调用系统签名脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | home= /Volumes/Samsung_T5/android/Demo/
debugDir=$home /app/build/outputs/apk/debug/
releaseDir=$home /app/build/outputs/apk/release/
signDir=$home /app/release/sign/
cd $home
if [ ! -d out ]; then
|