Android升级到api 31后,ionic打出来的release包默认是一个aab文件,要想走以前的手动签名和zipalign的流程我需要打一个没有签名的apk的包,参考以下文章:
Android Platform Guide - Apache Cordova
Ionic Cordova Build for Android and iOS Platform Builds
zipalign | Android 开发者 | Android Developers
于是我们只要在package.json里面配置好打包时是ionic cordova build android --prod --release --buildConfig=build.json
然后在我们的ionic项目下新建一个build.json,里面的内容只留下一个packageType项目,项目的值是apk就好
{
"android": {
"debug": {
"keystore": "../android.keystore",
"storePassword": "android",
"alias": "mykey1",
"password" : "password",
"keystoreType": "",
"packageType": "apk"
},
"release": {
"keystore": "",
"storePassword": "",
"alias": "",
"password" : "",
"keystoreType": "",
"packageType": "apk"
}
}
}
这样我们再去打包出来的就是一个unsigned的apk。
然后手动签名,我用的是apksigner所以要先zipalign
step1
查一下自己的电脑的build-tools的路径
我的是这个 Android/sdk/build-tools/27.0.4
需要cd到这个目录下才能用zipalign和apksigner工具
然后就执行:
./zipalign -v 4 output.apk(绝对路径) app-release-unsigned.apk(绝对路径)
然后再签名:
apksigner sign -ks xxx.keystore(绝对路径) --v2-signing-enabled true --ks-key-alias your_alia_name --out signed.apk(绝对路径) output.apk(绝对路径)
然后输入你的keystore的密码就签好了。