Android技术知识Android开发Android开发经验谈

apk签名

2018-12-27  本文已影响6人  yin_xin

Never let success get to your head and never let failure get to your heart.
不要让成功冲昏了头脑,也不要把失败记在心里。

在实际开发过程中,经常遇到会对一个空包APK进行重签名的情况,例如第三方加固平台,或者应用认领等,APK签名众所周知存在V1和V2两种方式的,对apk签名可以使用一下两种方式:

如上面所有APK文件的签名是分v1和v2的区别,jarsigner方式只支持V1签名,apksigner方式支持两种签名方式,那么v1和v2有什么区别呢?

v1与v2区别

APK文件其实是一个ZIP压缩文件,分为三部分,头文件、中央目录、结尾内容,V1签名和V2签名主要区别如下。

jarsigner

在签名命令格式:

cd到jdk的bin目录或者直接应用jarsgner完整路径
jarsgner -verbose -keystore [keystorePath] -singnedjar [apkOut] [apkln] [alias]

apksigner

cd Android SDK/build-tools/SDK版本, 输入命令或者直接引用apksigner
apksigner sign --ks [keystorePath] --ks-key-alias [alias] --out [apkOut] [apkln]

我将apksigner签名命令整理成一个signer.shshell脚本,简化平时的操作。

#signer命令的路径
signer=$"/Users/xxxx/Library/Android/sdk/build-tools/27.0.3/apksigner"
ks=$1
alias=$2
inApk=$3
outApk=${inApk%.*}$"_signed.apk"
${signer} sign --ks ${ks} --ks-key-alias ${alias} --out ${outApk} ${inApk}

使用signer.sh [keystorePath][alias] [apkln]

上一篇 下一篇

猜你喜欢

热点阅读