使用安卓自带的工具apktool进行解包
apktool d /Users/zmb/Documents/android/apkname.apk -o /Users/zmb/Documents/android/apk
使用安卓自带的工具apktool进行封包
apktool b /Users/zmb/Documents/android/apk -o /Users/zmb/Documents/android/package.apk
签名
jarsigner -verbose -keystore 你的密钥 -storepass 密钥密码 -keypass 别名密码 -sigfile CERT -signedjar 签名后的apk路径 待签名的apk 别名
例子
jarsigner -verbose -keystore /Users/zmb/Documents/android/sign/zmb.jks -storepass zmb.jks的密码 -keypass zmb.jks的密码 -sigfile CERT -signedjar /Users/zmb/Documents/android/sign/a.apk /Users/zmb/Documents/android/mgo.apk zmbalias
上面这种签名只能进行V1签签名
这样会导致有的手机安装不上,因为有的手机会校验V3签名
如果只进行V1签名 则需要对齐一下
zipalign -v 4 /Users/zmb/Documents/android/sign/a.apk /Users/zmb/Documents/android/sign/align.apk
否则会装不上。
推荐用apksigner进行签名
签名文档https://developer.android.google.cn/studio/command-line/apksigner.html
用mac上Android SDK 下的apksigner进行签名/Users/zmb/Library/Android/sdk/build-tools/28.0.3/apksigner
apksigner sign --v1-signing-enabled true --v2-signing-enabled false --v3-signing-enabled false --v4-signing-enabled false --ks /Users/zmb/Documents/android/sign/zmb.keystore /Users/zmb/Documents/android/sign/package.apk
由于版本太低,只能进行V1和V2签名,然后校验签名的时候还是没通过,可以下载高一点版本的比如30
以上的build tool
,后面我这边找来了一个高版本的jar包,mac上运行jar包需要通过一下的命令
java -jar apksignerV2.jar sign --v1-signing-enabled true --v2-signing-enabled false --v3-signing-enabled false --v4-signing-enabled false --ks /Users/zmb/Documents/android/sign/zmb.keystore /Users/zmb/Documents/android/sign/mgo.apk
校验签名
java -jar apksignerV2.jar verify -v /Users/zmb/Documents/android/sign/mgo.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): false
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1
可以看到这里只进行了v1签名,其他v2,v3,v4都没签名。如果需要进行v2,v3,v4签名,则可以把相关的signing-enabled
设置为true
我这里之所以只做v1签名,是因为做了签名后要传到后台,后台需要插入渠道标识,如果做v2签名,插入后没有重新签名则会破坏它的签名,也会导致安装不上。v1是对每一个文件做签名的,它只会校验签了名的文件,并不会对后面插入的文件进行检查。