0

我可以访问我正在测试的应用程序 (myApp) 的代码,并且我有一套测试 (myTest)。当我运行我的测试时,Eclipse 会编译并安装 myApp 和 myTest 并且所有测试都运行良好。到现在为止还挺好。现在,我还希望能够针对 myApp 的 apk 执行这些测试,但由于签名问题,我无法使其正常工作。

据我了解,解决方案是使用 Android 调试密钥库的签名重新签名 myApp.apk,以便 myTest.apk 和 myApp.apk 具有相同的签名。Renas 关于该主题的Robotium 教程推荐了一个工具来执行此操作,re-sign.jar。这个工具似乎确实有效,我可以安装并运行生成的 apk 文件,但它与 myTest 的签名不同。换句话说,当我运行 myTest(在 Eclipse 中或从命令行调试)时,我收到错误消息,抱怨测试失败,因为 myApp 和 myTest 没有相同的签名。

如果我使用 re-sign.jar 重新签署 myApp.apk 和 myTest.apk,我可以解决这个问题。(虽然这不是一个解决方案,因为我无法调试,只能从命令行运行测试。而且,它很难看。)我不明白为什么会这样 - 因为 myTest.apk 是在我运行测试时自动创建的eclipse,它应该已经使用调试密钥库进行了签名,并且 re-sign.jar 应该只是重新应用相同的签名,对吗?

也许该工具已过时或损坏。好吧,Renas 的教程还包括手动重新签名 jar 的步骤,如下所示:

jarsigner -keystore c:\androiddev\.android\debug.keystore 
    -storepass android -keypass android C:\blah\myApp.apk androiddebugkey
zipalign 4 C:\blah\myApp.apk C:\blah\myApp2.apk

这似乎有效,然后运行“jarsigner -verify”返回“jar 验证”。但是,生成的 apk 将不会安装:

C:\blah>adb install myApp.apk
    3739 KB/s (1922522 bytes in 0.502s)
    pkg: /data/local/tmp/myApp.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

谁能告诉我这里发生了什么?Stack 还有其他几个关于“我如何在 apk 上使用 Robotium”的问题,答案是我之前链接到的教程,但是该教程中列出的签署 apk 的两种方法对我来说都失败了。

4

1 回答 1

0

问题是由于安装了 Java 7 并使用了 Java 6 的说明引起的。我能够签署 apk 并在添加以下参数后安装它: -sigalg MD5withRSA -digestalg SHA1 工作命令:

jarsigner -keystore c:\androiddev\.android\debug.keystore 
    -storepass android -keypass android C:\blah\myApp.apk androiddebugkey
    -sigalg MD5withRSA -digestalg SHA1      
zipalign 4 C:\blah\myApp.apk C:\blah\myApp2.apk
于 2013-06-03T15:43:12.703 回答