注:下文默认 Android studio 及 SDK、grandl 已安装。Android Studio下载地址 这里。
环境
- 系统:macOS
- ionic:v_3.19.0
- Android studio: v_3.0
常规打包
- 添加Android平台并打包Android app(debug测试版):
- 项目根目录执行命令:
ionic cordova build android --prod
(app体积小,打包时间稍长)
or
ionic cordova build android
(app体积大,打包时间稍短) - 打包生成的文件地址:
项目根目录/platforms/android/build/outputs/apk/android-debug.apk
- 项目根目录执行命令:
- 添加Android平台并打包Android app(发布版):
- 项目根目录执行命令:
ionic cordova build android --prod --release
(生成未签名版) - 打包生成的文件地址:
项目根目录/platforms/android/build/outputs/apk/android-release-unsigned.apk
- 项目根目录执行命令:
签名步骤
创建私钥,项目根目录下执行命令(记住设置的别名):
keytool -genkey -v -keystore [自定义秘钥文件名,如 my-app].jks -keyalg RSA -keysize 2048 -validity 10000 -alias [自定义app别名,如 my-alias]
-
接下来会让设置秘钥库口令(记住秘钥):
-
设置秘钥库口令后会让输入一些APP信息:
按照提示依次输入后会在项目根目录生成秘钥文件 xxx.jks、
将 xxx.jks 与 android-release-unsigned.apk 放在同一目录下,执行签名命令:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [上步生成的xxx.jks] android-release-unsigned.apk [步骤1命令中设置的app别名,如 my-alias]
-
优化 apk 文件:
- 切换到 zipalign 路径
macOS:~/Library/Android/sdk/build-tools/VERSION 如:25.0.1/
- 将上步骤中已签名的 android-release-unsigned.apk 放入该目录中(与zipalign同级),执行优化命令:
zipalign -v 4 android-release-unsigned.apk [自定义最终生成的apk的名字,如 HelloWorld.apk]
- 切换到 zipalign 路径
验证 apk 是否已签名
和上步骤相同目录(上步已优化的apk在该目录下)下执行命令:
apksigner verify [上步中自定义的apk名字,如 HelloWorld.apk]
签名过程中问题及处理
-
执行签名步骤5时如报错:
解决:将 秘钥文件 xxx.jks 与 android-release-unsigned.apk 放在同一目录下。
-
执行签名步骤6时报错:
- 错误1:
./zipalign -v 4 android-release-unsigned.apk [自定义最终生成的apk的名字,如 HelloWorld.apk]
-
错误2:
解决:已签名的 android-release-unsigned.apk 放入 zipalign 所在路径中。
- 错误1: