• 如何给apk文件签名


    1.签名的意义
      为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

    2.签名的步骤
      a.创建key
      b.使用步骤a中产生的key对apk签名

    3.具体操作

          方法一: 命令行下对apk签名(原理)


     
     1)创建key,需要用到keytool.exe (位于jdk1.6.0_24jrein目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于      jdk1.6.0_24in目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入

    > keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystore CERT.keystore 
    创建过程需要输入一些标识信息和密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): 
        CERT.keystore ---- 证书保存的文件名 
        CERT ---- 证书的别名 
        10000 ---- 10000天的有效期 
        2048 ---- 默认为1024 bits,Android 建议使用2048 bits或更高
    其他的详细信息可以使用keytool -help查看帮助 
    证书生成后使用如下命令可以查看证书的信息:

    > keytool -list -alias CERT -keystore CERT.keystore 

      2)使用jdk的jarsigner工具对apk文件签名

    > jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 
    (jarsigner -verbose -keystore d:project360Wallpaper.keystore -signedjar d:qihusign.apk d:Qihuunsign.apk cret)
    签名过程需要输入证书的密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): 
        CERT.keystore ---- 证书保存的文件名 
        CERT ---- 证书的别名 
    待签名的apk文件根根目录下如果有文件夹“META-INFO”,请先删除(重新签名就需要这样做)。
    如果不想创建过程输出太多信息,可以删除“-verbose” 。
    上述签名会直接覆盖原来的文件,如果不想被覆盖而签名为另外的新文件 signed.akp,
    只需将 to_sign.apk 改为 -signedjar to_sign.apk signed.akp 即可。
    签名后可以使用如下命令验证是否签名成功: 
    > jarsigner -verify to_sign.apk 
    如果需要查看更详细的验证信息,可修改为:
    > jarsigner -certs -verbose -verify to_sign.apk 
         注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。
         3)使用android sdk的zipalign工具优化已签名的apk文件
    > zipalign -v 4 unaligned.apk aligned.apk 
    注意要在签名后再zipalign。这个工具不是jdk自带的,而是在%ANDROID_HOME% oolszipalign.exe。

    例子:

     为APK重新生成签名

    1)、将证书复制到与需要重新签名的apk文件相同的目录下
    2)、进入该目录下执行以下语句

     
    jarsigner -verbose -keystore CERT.keystore -signedjar weibo_signed.apk 
    netease_microblog_android_unsigned.apk CERT  

    命令解释:
    jarsigner是Java的签名工具,JDK自带
    -verbose参数表示:显示出签名详细信息
    -keystore表示使用当前目录中的android.keystore签名证书文件。
    --signedjar weibo_signed.apk netease_microblog_android_unsigned.apk表示签名后生成的APK名称为 weibo_signed.apk,未签名的APK Android软件名称为netease_microblog_android_unsigned.apk
    CERT: 表示签名文件的别名,生成证书的时候有书写

    执行以上操作之后在目录下生成了weibo_signed.apk ,经过自己签名的APK文件

    方法二:使用Eclipse导出带签名的apk
      Eclipse直接能导出带签名的最终apk,非常方便,推荐使用,步骤如下:
      第一步:导出。
     
      第二步:创建密钥库keystore,输入密钥库导出位置和密码,记住密码,下次Use existing keystore会用到。
     
      第三步:填写密钥库信息,填写一些apk文件的密码,使用期限和组织单位的信息。

      第四步:生成带签名的apk文件,到此就结束了。

      第五步:如果下次发布版本的时候,使用前面生成的keystore再签名。


      第六步:Next,Next,结束!

    本文参考:http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html

                  http://blog.csdn.net/shandong_chu/article/details/7672474

  • 相关阅读:
    测试用例的设计
    测试经理的职责
    如果开发认为这不是bug,对QA来说应该怎么处理?
    我选择测试的过程
    API的知识点
    测试人员需要的技能
    时区转换的计算方式
    学习能力的必需
    制图工具
    JSON序列和反序列1
  • 原文地址:https://www.cnblogs.com/tianyalu/p/4738791.html
Copyright © 2020-2023  润新知