2010-06-21 111 views
5

我用仪器来测试PhoneApp 我通过仪表java.lang.SecurityException异常:权限拒绝:

我创建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 
------------------------------------------------------------------------------------- 

请帮助。

回答

1

我想问题可能是您用来签署“主” 应用和测试应用是不同的 证书。我 假设您的测试应用程序定义 本身作为您的 主应用程序的仪器。这样做可以让你的测试 应用在主应用程序的进程中运行, 访问它的类,等等,从而为 安全原因,两个应用程序必须 同一证书签名。

答案来自this forum

+0

你看到 当我是我的应用程序在我们的平台(电话设备) 我没有得到这样的权限拒绝! 仅当我在参考手机上安装并运行我的apk时,才会发生这种情况,例如Google或其他任何其他Nexus One。 我的应用程序测试手机应用程序,是在电话 运行? – ilana 2010-06-21 07:55:53

1

清理项目,并立即建立。 看看自己的AndroidManifest如果有这样的一个itent: 在Eclipse:

category android:name="android.intent.category.LAUNCHER" 
0

我加入待测签名的我的应用程序在Android开发者网站所描述的证书固定同样的问题去Windows>首选项> Android>构建并添加自定义调试密钥存储您的应用程序密钥库。

重建测试包,你应该很好去。

希望这会有所帮助。

1

这个错误是因为你正在测试的系统权限级别的应用程序和应用程序进行测试应该在系统/数据和application_test项目可以安装在数据/应用

0

这个问题可以通过卸载来解决apk文件和来自仿真器的测试应用程序。然后用re-sign.jar辞掉应用程序,然后安装apk,然后运行测试应用程序。

1

这是一个

'签名匹配'

问题。确保测试项目的APK和其目标项目的APK使用相同的证书进行签名。

3

你找到一个解决这个问题?当我有一个测试apk仍然安装在使用另一个密钥签名的设备上时,我可以重现这一点。

因此,为了解决执行第一ADB卸载与您的应用程序的两个包和你的测试包。

adb uninstall com.android.phone 
adb uninstall com.android.phonetests 
+0

这对我有用 – 2016-11-25 16:24:34

0

有一个类似的问题,没有运气得到任何签名同意。

使用调试应用程序的构建(./gradlew assembleDebug)而不是释放可以帮助完全规避问题,因为调试应用程序不需要安装会之前,他们签署。

0

该解决方案是一个系统应用

在我而言,当我创建InstrumentationTest情况下,对现有系统的应用程序(我们正在建立一个基于AOSP我们自己的Android操作系统)

发生这个错误我们建立正常使用基于文件Android.mk命令mm的APK,这里的关键是LOCAL_CERTIFICATE

在目标系统的应用程序和测试案例项目由您开发查找Android.mk

系统应用的Android.mk LOCAL_CERTIFICATE值应与InstrumentationTest情况下,项目的Android.mk LOCAL_CERTIFICATE

祝你好运!

相关问题