ionic android 发布

准备工作

1.密钥和证书管理工具:keytool

2.优化apk工具:zipalign


打包应用

1.打包apk,命令如下:

$ cordova build --release android

生成release版本的apk (ionic / cordova 命令均可) 。执行完这条命令后,cordova会根据你的config.xml生成一个未签名的apk包,默认存储在(platforms/android/build/outputs/android-release-unsigned.apk)。

2.生成密钥和证书,命令如下:

$ keytool -genkey -v -keystore key_name.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

-genkey执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来
参数说明:

-keystore key_name.keystore 证书的文件名;
-alias alias_name 表示证书的别名
-keyalg RSA 生成密钥文件所采用的算法
-keysize 2048 密钥文件的大小
-validity 10000 该数字证书的有效期;

输入后会要求输入两次密钥文件的密码,并回答一些关于你所在组织机构、地区等问题,回答完成截屏保存即可,密钥文件默认在项目的根目录。

3.签名apk,命令如下:

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1  -keystore key_name.keystore appName.apk alias_name

注意:alias_name 应与密钥文件中设置的alias_name一致!同时,keystore与apk需要在同一目录才可以使用上面的命令,否则需要手动指定相关文件目录位置。

4.优化(可选)
在Android SDK中的build-tools中包含了一个工具:zipalign,它可以优化apk,apk的MIME其实就是一个zip压缩文件,通过zipalign可以让apk序运行更快,首次被引入是在Android 1.6版本的SDK。
命令如下(先切换至apk所在目录):

$ zipalign -v 4 before.apk after.apk

部分API

  • keytool
-genkeypair [OPTION]...
     -alias <alias>                  要处理的条目的别名
     -keyalg                 密钥算法名称
     -keysize               密钥位大小
     -sigalg                 签名算法名称
     -destalias           目标别名
     -dname                   唯一判别名
     -startdate           证书有效期开始日期/时间
     -ext                     X.509 扩展
     -validity              有效天数
     -keypass                   密钥口令
     -keystore             密钥库名称
     -storepass                 密钥库口令
     -storetype           密钥库类型
     -providername     提供方名称
     -providerclass   提供方类名
     -providerarg               提供方参数
     -providerpath         提供方类路径
     -v                              详细输出
     -protected                      通过受保护的机制的口令

使用 “keytool -help” 获取所有可用命令,使用 “keytool -command_name -help” 获取 command_name 的用法

  • jarsigner
用法: jarsigner [选项] jar-file 别名 jarsigner -verify [选项] jar-file [别名...]

[-keystore <url>]           密钥库位置

[-storepass <口令>]         用于密钥库完整性的口令

[-storetype <类型>]         密钥库类型

[-keypass <口令>]           私有密钥的口令 (如果不同)

[-certchain <文件>]         替代证书链文件的名称

[-sigfile <文件>]           .SF/.DSA 文件的名称

[-signedjar <文件>]         已签名的 JAR 文件的名称

[-digestalg <算法>]        摘要算法的名称

[-sigalg <算法>]           签名算法的名称

[-verify]                   验证已签名的 JAR 文件

[-verbose[:suboptions]]     签名/验证时输出详细信息。
                            子选项可以是 all, grouped 或 summary

[-certs]                    输出详细信息和验证时显示证书

[-tsa <url>]                时间戳颁发机构的位置

[-tsacert <别名>]           时间戳颁发机构的公共密钥证书

[-altsigner <>]           替代的签名机制的类名

[-altsignerpath <路径列表>] 替代的签名机制的位置

[-internalsf]               在签名块内包含 .SF 文件

[-sectionsonly]             不计算整个清单的散列

[-protected]                密钥库具有受保护验证路径

[-providerName <名称>]      提供方名称

[-providerClass <>        加密服务提供方的名称
[-providerArg <参数>]]...   主类文件和构造器参数

[-strict]                   将警告视为错误

你可能感兴趣的:(ionic android 发布)