首先需要Android环境,并且机器上安装配置了jdk,然后ionic环境都齐备。
APP签名就是应用要安装到Android手机上的一个认证密钥。而这个签名是应用开发者自己生成,相同签名的应用高版本是可以覆盖低版本的应用的。同时,APP签名也是应用打包发布到应用市场的必要元素。
在开发过程中,肯定会用到真机调试,如果没有特意去生成签名供应用使用,Android 的ADT会提供一个默认的debug版本的签名,也就是debug.keystore,存放在:
,以便使开发者能够将应用安装到手机上预览并且调试,但debug.keystore的密钥是只能用于调试阶段,真正要发布那么肯定是需要自己生成一个.keystore的密钥的。
接下来,就开始生成签名的工作:
需要用到:
1、keytool:生成keystore文件,是JDK自带的加密工具,只需生成一次,然后保存在本地,之后签名直接使用这个文件不需要重新生成
2、jarsigner:对apk签名,是JDK自带的签名工具,如果要将apk发布到android应用市场,就需要对release版本的apk文件使用keystore文件进行签名
3、zipalign:是Android的build-tool的压缩代码工具,可以将apk体积最小化
三个工具目录如下图(分别是我自己jdk和Android SDK的安装目录):
准备工作就绪后,开始先生成一个未签名的apk:
首先执行:ionic cordova build android --prod --release,最终执行完会在以下目录生成apk文件(PS:我加了crosswalk,所以会有两个apk):
然后使用keytool生成keystore文件,也就是数字签名:
keytool -genkey -v -keystore myapp.keystore -alias myapp.keystore -keyalg RSA -validity 36500
-genkey 意味着执行的是生成数字证书操作
-v 表示将生成证书的详细信息打印出来,显示在dos窗口中
-keystore myapp.keystore 表示生成的数字证书的文件名为myapp.keystore(myapp是自己起的名称)
-alias myapp.keystore 表示证书的别名为myapp.keystore,可以不和上面的名称一样
-keyalg RSA 表示生成密钥文件所采用的算法为RSA
-validity 36500 表示该数字证书的有效期为36500天
执行该命令过程会要求输入密钥口令以及其他信息,看着填就行
使用jarsigner为你的apk进行签名
jarsigner -verbose -keystore myapp.keystore -signedjar E:\myapp.apk E:\test\platforms\android\build\outputs\apk\android-armv7-release-unsigned.apk myapp.keystore
-verbose 表示将签名过程中的详细信息打印出来,显示在控制台窗口中
-keystore myapp.keystore 表示签名所使用的数字证书所在位置
-signedjar E:\myapp.apk E:\test\platforms\android\build\outputs\apk\android-armv7-release-unsigned.apk 表示给E盘工程目录下的android-armv7-release-unsigned.apk文件签名,签名后的文件为E盘下的myapp.apk
myapp.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称
如下图:
到此,其实已经生成了一个可以发布到应用市场的apk了,如果想要更好,那么建议再使用ADT的zipalign对apk进行压缩一下。
首先到Android SDK目录去
.\\zipalign -v 4 E:\myapp.apk E:\myapp_compress.apk
-v 表示在DOS窗口打印出详细的优化信息
E:\myapp.apk E:\myapp_compress.apk 表示对已签名文件 E:\myapp.apk进行压缩优化,优化后的文件为E:\myapp_compress.apk
over!