我使用Instrumentation来测试PhoneApp 我通过Instrumentation
编写了我的测试应用程序我创建了apk并在Nexus One上安装了它 - Android手机 - 这个通过了 在我的代码中,我使用的内部类不是标准SDK的一部分。 我不是在Eclipse中构建它,而是在我的嵌入式环境中构建它。我是开发Android的公司所以我拥有和所有内部库的Android树。
我在清单中使用了适当的权限。
我的apk创建可能签名了一些签名!! 但可能这个签名不够好。
现在我通过adb运行测试并立即收到此错误:
-------------------------------------------------------------------------------------
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a
signature matching the target com.android.phone
INSTRUMENTATION_STATUS_CODE: -1
java.
lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.android.phonetests/com.android.phonetests.PhoneInstrumentationTestRunner} from pid=495, uid=495 not allowed because package com.android.phonetests does not have a
signature matching the target com.android.phone
-------------------------------------------------------------------------------------
请帮忙。
答案 0 :(得分:4)
您找到了解决此问题的方法吗?当我在使用另一个密钥签名的设备上安装测试apk时,我可以重现这一点。
因此,为了使用您的应用程序包和测试包修复执行第一次adb卸载。
adb uninstall com.android.phone
adb uninstall com.android.phonetests
答案 1 :(得分:1)
我认为问题可能是 用于签署“主要”的证书 应用程序和您的测试应用程序是不同一世 假设您的测试应用正在定义 本身作为你的仪器 主应用程序。这样做可以让你的测试 应用程序在主应用程序的进程中运行, 访问它的类等,因此 这两个应用必须是安全原因 用相同的证书签名。
答案来自this forum。
答案 2 :(得分:1)
清理您的项目,并立即构建。 如果有这样的迭代,请查看AndroidManifest:
category android:name="android.intent.category.LAUNCHER"
答案 3 :(得分:1)
错误是因为您正在测试系统权限级别的应用程序,要测试的应用程序应该在系统/数据中,而application_test项目可以安装在data / app中
答案 4 :(得分:1)
这是
'签名匹配'
问题。确保测试项目的APK和目标项目的APK使用相同的证书进行签名。
答案 5 :(得分:0)
我通过添加签名我的应用程序的证书来修复同样的问题,如Android开发者网站中所述: 在Eclipse中:转到Windows>偏好> Android>在自定义调试密钥库中构建和添加应用程序密钥库。
重建测试包,你应该好好去。
希望这有帮助。
答案 6 :(得分:0)
可以通过从模拟器中卸载apk文件和测试应用程序来解决此问题。然后使用re-sign.jar重新签名应用程序,然后安装apk然后运行测试应用程序。
答案 7 :(得分:0)
有一个类似的问题,没有运气让任何签名同意。
使用调试应用程序构建(./gradlew assembleDebug)而不是发布可以帮助完全解决问题,因为调试应用程序在安装之前不需要签名。
答案 8 :(得分:0)
此解决方案仅适用于系统应用
在我的情况下,当我为现有系统应用程序创建InstrumentationTest案例时出现此错误(我们正在构建基于AOSP的自己的Android操作系统)
我们通常使用基于mm
文件的Android.mk
命令构建apk,此处的关键是LOCAL_CERTIFICATE
。
在目标系统应用中查找Android.mk
以及由您开发的测试用例项目。
系统应用的Android.mk LOCAL_CERTIFICATE
值应与InstrumentationTest案例项目的Android.mk LOCAL_CERTIFICATE
值匹配