我可以访问我正在测试的应用程序 (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 的两种方法对我来说都失败了。