传统方法
主要参考文献1
打包
ionic cordova build android --prod --release
签名
jarsigner -verbose
-tsa http://timestamp.digicert.com -sigalg SHA1withRSA -digestalg SHA1
-keystore {加密文件名}
-signedjar {自定义apk名称}.apk
{未签名apk名称}.apk {加密文件别名}
说明:
-tsa:jdk1.8以后需要加这个,不然安装包无法安装
-verbose:指定生成详细输出。
-keystore:指定数字证书的存储路径。
-signedjar:该选项的三个参数分别分签名的APK包、未签名的APK包、数字证书别名。
优化
zipalign -f -v 4 {优化前apk名称}.apk {优化后apk名称}.apk
说明:
-f:指定强制覆盖已有文件。
-v:指定生成详细输出。
4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理。
sipts_v1.3.3.apk,就是签名完成且经过优化的APK安装包,该安装包可以对外发布了。
总结
- 需要打包后手动签名,比较麻烦
- 问题较多,特别是升级或者换电脑以后可能拿不到签名成功的版本,无法安装,比如文献2列出的问题
ionic打包时自动签名(推荐!!)
主要参考文献3和4
在cordova 9.0中以下方法会失效,暂时没找到解决方法,推荐使用360加固宝手动签名[5]
在【platforms/android】路径(新项目可能没有,那就先打包,不管签名的问题,确保现有这个文件夹)下,把加密文件放进去(关于如何创建加密文件的方法,参见下面的【附】),同时新建一个名为【release-signing.properties 】的文件。
release-signing.properties的文件内容为
storeFile=yourkeystore.keystore
key.store.password=yourPassword
key.alias=yourKeystoreAlias
key.alias.password=yourPassword
// storeFile 加密文件名
// key.alias 加密文件别名
// key.store.password 和 key.alias.password 的值是你签名时需要输入的密码
之后,再运行打包方法
ionic cordova build android --prod --release
会生成2个文件,使用第一个即可
注 该种方法生成的apk文件不能再使用zipalign优化,会签名报错(也可能是我本地jdk版本的问题-27.0.3),后面再看怎么解决。
附录
如何生成加密文件
keytool -genkey -keystore android.keystore -keyalg RSA -validity 40000 -alias android
说明:
-genkeypair:指定生成数字证书。
-alias:指定生成数字证书的别名。
-keyalg:指定生成数字证书的算法。使用RSA算法。
-validity:指定生成的数字证书的有效期。
-keystore:指定所生成的数字证书的存储路径。
会提示你升级,直接复制cmd中的提示代码,升级即可