zoukankan      html  css  js  c++  java
  • 用命令行发布android程序

    在开发android程序的过程中,我们使用ant debugant installd这两个命令就够了,不涉及到APK的签名。

    但是在正式发布我们的Android程序时,需要对APK签名。ant release生成一个release版程序。

    ant release在package这一步会生成一个未签名的apk:xxx-release-unsigned.apk。然后试图用ant.properties里面给出的keystore文件对这个apk签名,生成xxx-release.apk。如果ant.properties没有给出keystore,不会生成签名的apk。这时你运行ant installr就会失败,因为ant找不到xxx-release.apk

    解决方法有两种:(1)在ant.properties文件中设置key.store和key.alias,然后重新运行ant releaseant installr命令。(2)自己用命令对xxx-release-unsigned.apk签名和zipalign,生成xxx-release.apk,然后再运行ant installr

    不管用哪种方法,我们都要先准备好keystore文件。JDK提供了keytool程序,可以生成key.store文件。

    keytool.exe -genkey -alias jollywing.android.keystore -keyalg RSA -validity 36500 -keystore android.keystore
    
    • -genkey 表示要进行的动作是生成keystore.
    • -alias 是这个keystore的别名。
    • -keyalg 表示生成密钥对的算法。
    • -validity 表示有效期,这里36500接近100年。
    • -keystore 指定最终生成的keystore文件名。

    运行命令,会提示输入密钥库口令。这个口令在给apk签名时还会问到。
    然后会询问一些信息,你的姓名、你的组织、你所在的地区等。
    最后还会询问key.alias的密钥口令,直接回车,表示使用和密钥库相同的口令。

    命令运行成功,还会得到一个警告信息:

    JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore android.keystore -destkeystore android.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

    我们可以运行警告信息中的命令,把密钥库转换成标准格式。这一步可选。

    然后我们可以签名了。两种方式,一种是用ant release命令签名,另一种是手动签名。

    如果用ant release命令签名,我们把android.keystore放在工程根目录下,即和build.xml和ant.properties相同的目录。然后编辑ant.properties,增加以下内容。

    key.store=android.keystore
    key.alias=jollywing.android.keystore
    key.store.password=<刚才设置的密钥库口令>
    key.alias.password=<刚才设置的密钥库别名口令>
    

    如果android.keysotre没放在工程根目录下,最好使用绝对路径指明keystore文件放在哪里。

    然后ant releaseant installr就OK了。

    最后再讲一下自己用命令对xxx-release-unsigned.apk进行签名。

    使用jdk中的jarsigner命令(apk就是一个jar包文件)。

    jarsigner -keystore <keystore文件的路径> <xxx-release-unsigned.apk的路径> 密钥库别名
    

    命令运行后,xxx-release-unsigned.apk就是已经签名的了。

    zipalign -v 4 <xxx-release-unsigned.apk的路径> <要生成的xxx-release.apk的路径>
    

    zipalign命令放在android sdk的build-tools目录下。

    好了,一个可以发布的apk新鲜出炉了,adb install <xxx-release.apk的路径>试试看吧。如果xxx-release.apk放在工程的bin目录下,也可以直接运行ant installr

    2017-11-25 周六

  • 相关阅读:
    宋浩《概率论与数理统计》笔记---6.2.1、统计量定义
    宋浩《概率论与数理统计》笔记---6.1、总体与样本
    宋浩《概率论与数理统计》笔记---5.2、中心极限定理
    PHP使用curl替代file_get_contents
    PHP中的ini_set() 函数
    通俗理解中心极限定理
    宋浩《概率论与数理统计》笔记---5.1.2、切比雪夫大数定理
    Options / Lifecycle Hooks
    idea各种图标的含义
    Gradle 基础入门
  • 原文地址:https://www.cnblogs.com/jiqingwu/p/android_sign_apk_commands.html
Copyright © 2011-2022 走看看