Ionic3 Android生成签名打包

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!

posted @ 2018-07-30 17:29  晒晒  阅读(112)  评论(0)    收藏  举报