2010-06-21 110 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

祝你好運!

相關問題