`
stephen830
  • 浏览: 3011582 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

为方便Robotium自动测试需要对apk用本地安卓sdk中的debug.keystore进行重新签名

 
阅读更多

 

 

 

参考 http://blog.sina.com.cn/s/blog_6abda9bc01015zoc.html

 

为进行Robotium自动测试需要对apk用本地安卓sdk中的debug.keystore进行重新签名

 

操作主要用的工具为jarsigner
jarsigner工具位于电脑java sdk安装目录中的bin目录下
例如,在我的mac电脑上是:

/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin

 

下面提到的 /Users/zjq/Documents/temp/Calculator.apk 是我测试使用的demo。

 

第1步:查看apk签名信息

jarsigner -verify -verbose -certs /Users/zjq/Documents/temp/Calculator.apk

执行结果如下:

s        713 Fri Jun 13 00:08:12 CST 2014 META-INF/MANIFEST.MF

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

         875 Fri Jun 13 00:08:14 CST 2014 META-INF/ANDROIDD.SF
        1211 Fri Jun 13 00:08:14 CST 2014 META-INF/ANDROIDD.RSA
sm      1856 Thu Jan 27 01:01:34 CST 2011 res/layout/main.xml

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      1456 Thu Jan 27 01:01:34 CST 2011 AndroidManifest.xml

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      1588 Thu Jan 27 01:01:34 CST 2011 resources.arsc

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      3966 Thu Jan 27 01:01:34 CST 2011 res/drawable-hdpi/icon.png

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      1537 Thu Jan 27 01:01:34 CST 2011 res/drawable-ldpi/icon.png

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      2200 Thu Jan 27 01:01:34 CST 2011 res/drawable-mdpi/icon.png

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]

sm      3716 Thu Jan 27 01:01:34 CST 2011 classes.dex

      X.509, CN=Android Debug, O=Android, C=US
      [证书的有效期为14-1-13 下午2:44至44-1-6 下午2:44]
      [CertPath 未验证: Path does not chain with any of the trust anchors]


  s = 已验证签名
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书
  i = 在身份作用域内至少找到了一个证书

jar 已验证。

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

 说明:这个 apk已经存在签名信息了。

 

第2步: 删掉apk中的签名信息

将 Calculator.apk 复制1个取名为 Calculator_unsign.apk

然后将 Calculator_unsign.apk 改名为 Calculator_unsign.zip

然后用winrar工具打开Calculator_unsign.zip,找到里面的META-INF目录,把这个META-INF目录删除,然后退出winrar。

 

 将图中的META-INF目录删掉,然后将Calculator_unsign.zip 重新改名为 Calculator_unsign..apk

再次查看 Calculator_unsign.apk的签名信息,执行命令:

jarsigner -verify -verbose -certs /Users/zjq/Documents/temp/Calculator_unsign.apk

 执行结果:

jarsigner -verify -verbose -certs /Users/zjq/Documents/temp/Calculator_unsign.apk

  s = 已验证签名
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书
  i = 在身份作用域内至少找到了一个证书

没有清单。
jar 未签名。(缺少签名或无法对签名进行语法分析)

 

第3步 对apk包重新签名

执行命令:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore /Users/zjq/.android/debug.keystore -storepass android -keypass android /Users/zjq/Documents/temp/Calculator_unsign.apk androiddebugkey

 如果使用的是jdk1.7以下的版本,则命令中不需要加上参数 -digestalg SHA1 -sigalg MD5withRSA

/Users/zjq/.android/debug.keystore 是你电脑上android中的debug.keystore 。

为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置: Ubuntu: ~/.android/debug.keystore (win7:c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore),“user”对应于你自己的windows操作系统用户名,这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)

 

 第4步 用zipalign工具修正刚签名的apk包

zipalign工具位置:/Users/zjq/Documents/adt-bundle-mac-x86_64-20131030/sdk/tools

即在你的android sdk的tools目录中。

 zipalign能够使apk文件中未压缩的数据在4个字节边界上对齐(4个字节是一个性能很好的值)

执行命令:

./zipalign 4 /Users/zjq/Documents/temp/Calculator_unsign.apk /Users/zjq/Documents/temp/Calculator_sign.apk

 

 到此,新的apk包就生成了

Calculator_sign.apk

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 93.2 KB
分享到:
评论

相关推荐

    android apk fast resign for robotsium 自动化测试 安卓apk重签名工具.zip

    apk重新签名设计为robotium 再次设计的安卓一键重签名工具。用过robotium的应该都知道 re-sign.jar的存在,但是很多人用它却签名失败了。 重签名其原理就是获取apk正式签名,使用系统自带的 debug.keystore默认签名...

    debug-keystore.zip

    `debug.keystore`是Android SDK为开发者提供的一个默认的密钥存储库,主要用于调试阶段对APK进行签名。在开发环境中,当您通过Android Studio或Gradle构建应用时,系统会自动使用此`debug.keystore`来签名您的应用,...

    robotium apk重签名

    在例子中,使用了Eclipse默认的debug keystore,路径为`E:\ME\SOFT\android-sdk-windows\.android\debug.keystore`,密码均为`android`,待签名APK路径为`E:\ME\Sign\a.apk`,key别名为`androiddebugkey`。...

    用于对Android升级包和APK进行签名

    1. **Debug签名**:开发者在开发过程中通常使用调试签名,它由Android Studio自动生成,方便快速测试。 2. **Release签名**:发布应用到Google Play或其他平台时,应使用正式的发布签名。这需要一个安全的密钥库,...

    android-sdk-windows.rar

    5. **签名与发布**: 使用keystore文件对APK进行签名,然后通过Google Play或其他分发渠道发布应用。 四、持续学习与进阶 1. **Android Jetpack**: 官方推荐的架构组件,包括LiveData、Room、ViewModel等,简化开发...

    apk签名密钥及zipalign工具

    3. **签名APK**:使用Jarsigner工具,用刚才生成的私钥对APK进行签名。这会将签名信息添加到APK中。 4. **验证签名**:用户在安装时,系统会使用公钥验证APK的签名,确保其未被修改。 **zipalign工具** zipalign是...

    APK重新签名.doc

    有时,开发者需要对APK进行重新签名,这可能是为了替换原有的签名,以便在不同的环境中部署或测试,或者是为了调试和发布。本文将详细介绍如何对Android APK进行重新签名的步骤,以及涉及的相关工具和技术。 首先,...

    Android 打包签名 从生成keystore到完成签名.zip

    在Android系统中,每个安装的APK都需要进行数字签名,以验证应用的来源和完整性。签名的主要作用包括: 1. **验证身份**:签名可以证明应用是由特定开发者发布的,有助于建立用户对应用的信任。 2. **保证完整性**...

    android签名[参考].pdf

    - **DEBUG签名**:在开发过程中,Eclipse会自动使用SDK提供的默认DEBUG KEY(debug.keystore)对应用进行签名。DEBUG KEY的密码均为“android”,且有效期为一年。当DEBUG KEY过期或需要更改签名时,删除debug....

    ant打包apk

    在Android开发过程中,构建APK应用包是一个至关重要的步骤,而`ant`是一个广泛使用的自动化构建工具,尤其在早期的Android开发中非常流行。本文将详细介绍如何使用`ant`脚本来打包APK,并探讨相关知识点。 `ant`是...

    制作安卓签名证书工具.rar

    3. **导出APK**:在Android Studio中,选择Build > Generate Signed Bundle / APK,然后按照向导指引导入刚才创建的keystore文件,输入密码,完成签名过程。 四、"制作安卓签名证书工具" 你提到的"制作安卓签名...

    Android SDK (SDK Platforms)-android-15.zip

    10. **发布与签名**:完成应用开发后,开发者需要使用SDK中的zipalign工具进行优化,然后使用keystore对APK进行签名,以确保应用的唯一性和安全性。最后,可以将APK上传到Google Play Store或其他分发渠道。 总结来...

    在eclipse中将android工程打包成apk.pdf

    - `-keystore android.keystore`:指定keystore文件名为`android.keystore`。 运行该命令后,系统会提示输入密码以及一系列个人信息(如姓名、组织名称等),这些信息将用于创建数字证书。命令执行完成后,会在...

    Android签名工具

    - 对于调试版应用,可以使用debug.keystore文件,这是Android SDK自动提供的,方便快速测试。 4. **APK的发布与签名** 在Google Play商店发布应用时,必须提供已签名的APK。签名验证通过后,应用才能被上传并分发...

    android打包APK

    对于测试版应用,可以使用“Debug Certificate”,生产版则需使用“Release Certificate”并创建签名文件(.keystore)。 5. 输入证书的相关信息,包括别名、密码等。 6. 点击"Finish",Eclipse将开始编译和打包过程...

    修改Android签名证书keystore的密码、别名alias以及别名密码

    以上步骤的目的是将一个用于发布正式版本的keystore修改为一个便于开发调试的keystore,这样可以更方便地接入各种第三方SDK,并且在调试过程中省去频繁地生成和签名APK包的麻烦。需要注意的是,所有的密码更改都应该...

    Android生成.apk全过程

    开发者需要使用自己的密钥库(keystore)和密钥(alias)对 APK 进行签名。 4. **优化 APK**:根据需要进行 APK 的优化,比如代码的混淆(proguard)来保护代码不被轻易阅读,减少 APK 的体积等。 5. **生成 APK ...

    Android 资源 platform.pk8 platform.x509.pem signapk.

    3. 使用`signapk.jar`或`apksigner`(Android SDK提供的工具)对APK进行签名。 4. 如果是发布版本,还需要对APK进行ZIPalign优化,提高加载速度。 了解并熟练掌握这些知识对于Android开发者来说至关重要,因为它们...

    签名所需的工具包

    SignApk是Android SDK的一部分,它允许开发者使用Java Keytool生成的Keystore文件对APK进行签名。使用SignApk的命令行形式如下: ``` java -jar SignApk.jar keystore_file alias_name input_apk output_apk ``` ...

Global site tag (gtag.js) - Google Analytics