zoukankan      html  css  js  c++  java
  • Android.PublishApplication

    发布应用

    3. 为App签名

    Android 要求App在安装前,需要使用证书(certificate)来进行数字签名(be digitally signed).

    Android 用证书来标识一个App的作者或者开发商。该证书不需要由证书管理机构(certificate authority)来签发。

    Android app 经常使用自签发的证书(self-signed certificate)。App开发者来保存证书的私钥。

    3.1 在debug模式下签名

    不能发布一个在debug模式下签名的app。Android Studio 和 ADT plugin for Eclipse在debug模式下

    自动为你的app进行签名。

    3.2 在release模式下签名

    在release模式下,用自己的证书为自己的app签名,步骤:

    1 创建keystore。keystore是一个包含了一组私钥的二进制文件。keystore必须保存

    在安全可靠的地方。

    2 创建私钥。私钥代表随app被标识的实体,实体可以是人或者公司。

    3 构建project。为app生成一个未签名的apk。

    4 签名app。用你的私钥来生成apk的签名版本。

    在完成这个过程后,可以发布你的app。

    keystore和private key需要放在安全可靠的地方,并且有可靠的备份。

    如果发布app到Google Play,然后丢失了用来签名app的private key,那么就无法对该app进行更新。

    因此必须用同一个key来对所有的版本进行签名。

    3.3 在Android Studio中进行签名 (略)

    3.4 在ADT中进行签名 (略)

    3.5 签名的考虑因素

    3.6 保证私钥的安全

    3.7 debug证书的过期

    3.8 手动对app进行签名

    可以使用Android SDK 和 JDK的工具在命令行为app进行签名。

    1.用keytool创建私钥

    $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

    10000天有效期,生成一个keystore:my-release-key.keystore。 该keystore包含一个key,alias_name是key的名字。

    2.在release模式下编译app来获得一个未签名的apk。

    3.用jarsigner和私钥来对app进行签名:

    $ jarsigner -verbose -sigalg SHAwithRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

    可以用不同的key来对apk进行多次签名。

    4. 确认apk已被签名:

    $ jarsigner -verify -verbose -certs my_application.apk

    5. 用zipalign对齐apk包

    $ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

    4. 使用ant自动化Android App的构建过程 

    4.1 创建构建文件build.xml

    ant 类似make工具,build.xml 类似makefile文件

    使用android工具来创建build.xml文件。

    4.2 创建ant.properites文件

    注:在自动化构建中使用jarsigner

    在用ant构建工具来构建app时,可以通过ant.properties来为jarsigner提供参数,例如

    key.store.password=storepass

    key.alias.password=aliaspass

    key.store=path/to/keystore

    key.alias=alias_name

    4.3

    jarsigner -verify xxx.apk

    笔者的jdk版本是: java version "1.6.0_65"。由于在Mac OS X运行上面的命令,jarsigner是乱码,bad grammar

    请同事在同事机器上运行上面的命令,有以下输出:

    "jar 已验证。

    警告:
    此 jar 包含证书链未验证的条目。

    有关详细信息, 请使用 -verbose 和 -certs 选项重新运行。"

    该问题原因参见Ref[3]。

    Reference:

    1. jarsigner

    http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html

    2. 在ant中提供password来直接自动化构建

    http://stackoverflow.com/questions/9932498/signing-applications-automatically-with-password-in-ant 

    3. 此 jar 包含证书链未验证的条目

    http://stackoverflow.com/questions/8387983/jarsigner-this-jar-contains-entries-whose-certificate-chain-is-not-validated

    ---
  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/cwgk/p/3980408.html
Copyright © 2011-2022 走看看