为什么要签名app
- android app那么多,要给app一个唯一身份,有了这个唯一身份才能上传到app商店中
- 升级应用时若包名一致但签名不一致,APP也会安装失败
- 所以正式版app都要签名,还有许多我不知道的原因......
注意
- 打包前先检查你的app id,先起一个不会和别人重复的名字.很多人还在使用默认的
io.ionic.starter
,请赶紧改了.一般命名是com.公司英文名称.应用英文名称
制作签名文件(.keystore文件)
- 使用如下命令生成签名文件
keytool -genkey -v -keystore 你起的名字.keystore -alias 你起的别名 -keyalg RSA -validity 10000
使用签名文件
签名方式一
- 把上一部生成的签名文件复制到app根目录下
- 然后在app根目录下创建一个名字为
release-signing.properties
的文件,这个文件的内容如下
storeFile=E://work_space//jianshu//ionic2_tabs//ionic2_tabs.keystore
keyAlias=ionic2_tabs
storePassword=ionic2_tabs
keyPassword=ionic2_tabs
- 再把刚创建的
release-signing.properties
文件复制到./platforms/android
根目录下
找不到
./platforms/android
目录?执行命令cordova platform add android
- 最后执行打包命令
ionic cordova build android -release
或ionic cordova build android --prod --release
生成正式版app
真正的上线的版本都要使用--prod参数,这会压缩app,使app体积变小,启动更快.缺点是这个参数打包很慢,我这里大概需要5到10分钟
- 其实
release-signing.properties
和.keystore
文件放到项目根目录是为了方便使用。因为./platform/android
目录是动态生成的,release-signing.properties
打包前需要放到此目录下,所以把release-signing.properties
文件保存在项目跟目录下
签名方式二
- 首先执行打包命令
ionic cordova build android -release
或ionic cordova build android --prod --release
生成未签名的apk文件
- 复制.keystore文件到未签名的apk目录下
- 未签名的apk目录下执行签名命令
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore name.keystore android-release-unsigned.apk alias_name
注意签名命令执行完成,apk名字没有改变还是
android-release-unsigned.apk
,但实际是已经签名过的
最后
- 对apk优化
zipalign -v 4 已经签名的.apk apk别名.apk
- 关于
jarsigner
、zipalign
等工具的详情请自行百度