2010-06-21 13 views
5

मैं उपयोग इंस्ट्रुमेंटेशन PhoneApp परीक्षण करने के लिए मैं इंस्ट्रुमेंटेशनjava.lang.SecurityException: अनुमति इनकार:

मैं apk बनाया और नेक्सस वन पर स्थापित के माध्यम से अपने परीक्षण आवेदन लिखा था - एंड्रॉयड फोन - इस पारित कर दिया मेरे कोड मैं में मैं आंतरिक कक्षाओं का उपयोग कर रहा हूं जो मानक एसडीके का हिस्सा नहीं हैं। मैं इसे ग्रहण में नहीं बल्कि मेरे एम्बेडेड एनवी में बनाता हूं। मैं कंपनी में व्यस्त हूं जो एंड्रॉइड के लिए विकास कर रहा है, इसलिए मेरे पास सभी आंतरिक पुस्तकालयों के साथ एंड्रॉइड पेड़ है।

मैं अपने मैनिफेस्ट में उचित अनुमतियों का उपयोग करता हूं।

मेरे एपीके ने शायद कुछ हस्ताक्षर के साथ हस्ताक्षर किए !! लेकिन शायद यह हस्ताक्षर पर्याप्त नहीं है।

अब मैं एडीबी के माध्यम से परीक्षण चलाने के लिए और इस त्रुटि तुरंत मिल गया:

------------------------------------------------------------------------------------- 
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

मुझे लगता है कि समस्या हस्ताक्षर करने के लिए अपने "मुख्य" एप्लिकेशन और अपने परीक्षण एप्लिकेशन अलग है इस्तेमाल किया प्रमाण पत्र हो सकता है। I मान लें कि आपका परीक्षण ऐप को अपने मुख्य ऐप के एक उपकरण के रूप में परिभाषित कर रहा है। ऐसा करने से आपके परीक्षण ऐप को मुख्य ऐप की प्रक्रिया में चलाने के लिए अनुमति मिलती है, अपनी कक्षाओं आदि का उपयोग करता है, और इस प्रकार सुरक्षा कारणों से दो ऐप्स उसी प्रमाणपत्र से हस्ताक्षरित होना चाहिए।

उत्तर this forum से है।

+0

आप देखते हैं जब मैं अपने प्लेटफ़ॉर्म (फ़ोन डिवाइस) पर अपना ऐप हूं, मुझे ऐसी अनुमति अस्वीकार नहीं है !! यह तब होता है जब मैं संदर्भ फोन पर अपना एपीके स्थापित करता हूं और चलाता हूं उदाहरण के लिए नेक्सस वन Google या किसी अन्य। मेरा ऐप परीक्षण फ़ोन ऐप जो फोन पर चल रहा है ?? – ilana

1

अपनी परियोजना को साफ करें, और तुरंत निर्माण करें। और अपने AndroidManifest में देखने के लिए अगर वहाँ इस तरह एक itent है: ग्रहण में:

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

मैं प्रमाणपत्र परीक्षण के अंतर्गत अपने आवेदन पर हस्ताक्षर किए के रूप में Android डेवलपर साइट में वर्णित किया गया जोड़कर एक ही समस्या का समाधान होने के लिए जाना विंडोज> वरीयताएँ> एंड्रॉइड> कस्टम डिबग कीस्टोर में अपने ऐप कीस्टोर बनाएं और जोड़ें।

परीक्षण पैकेज को पुनर्निर्माण करें और आपको जाने के लिए अच्छा होना चाहिए।

उम्मीद है कि इससे मदद मिलती है।

1

त्रुटि है क्योंकि आपके एक प्रणाली अनुमति स्तर आवेदन और आवेदन प्रणाली/डेटा में होना चाहिए परीक्षण किया जाना और application_test परियोजना डेटा/एप्लिकेशन

0

यह समस्या को अनइंस्टॉल करके हल किया जा सकता में स्थापित किया जा सकता परीक्षण कर रहे हैं एपीके फ़ाइल और एम्यूलेटर से परीक्षण आवेदन। और उसके बाद एप्लिकेशन को पुनः-sign.jar के साथ इस्तीफा दें और फिर एपीके इंस्टॉल करें और फिर परीक्षण ऐप चलाएं।

1

यह एक

'हस्ताक्षर मिलान'

मुद्दा है। सुनिश्चित करें कि परीक्षण परियोजना का एपीके और इसके लक्ष्य परियोजना के एपीके को उसी प्रमाणपत्र के साथ हस्ताक्षरित किया गया है।

3

क्या आपको इस समस्या का समाधान मिला? जब मैं किसी अन्य कुंजी के साथ हस्ताक्षरित डिवाइस पर अभी भी एक परीक्षण एपीके स्थापित करता हूं तो मैं इसे पुन: उत्पन्न कर सकता हूं।

तो निष्पादित करने के लिए पहले एडीबी को अपने ऐप के पैकेज और अपने परीक्षणों के पैकेज दोनों के साथ अनइंस्टॉल करें।

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

यह मेरे लिए काम किया –

0

कोई भाग्य किसी भी हस्ताक्षर सहमत होने के लिए हो रही है के साथ एक समान मुद्दा था।

रिहाई के बजाय एक डिबग आवेदन का निर्माण (assembleDebug ./gradlew) का उपयोग करने से इस मुद्दे को पूरी तरह दरकिनार क्योंकि डिबग क्षुधा हस्ताक्षर किए जाने से पहले ही स्थापित कर रहे हैं की जरूरत नहीं है।

0

यह समाधान केवल सिस्टम एप्लिकेशन

मेरे मामले में के लिए है, यह त्रुटि तब होती हैं जब मैं

(हम अपने एंड्रॉयड AOSP के आधार पर ओएस निर्माण कर रहे हैं) मौजूदा प्रणाली अनुप्रयोग के लिए InstrumentationTest मामला बना हम आम तौर पर कमांड Android.mk फ़ाइल के आधार पर एपीके का निर्माण करें, यहां कुंजी LOCAL_CERTIFICATE है।

लक्षित सिस्टम ऐप में Android.mk और आपके द्वारा विकसित परीक्षण केस प्रोजेक्ट में खोजें।

प्रणाली एप्लिकेशन की Android.mk LOCAL_CERTIFICATE मूल्य InstrumentationTest मामले परियोजना की Android.mk LOCAL_CERTIFICATE मूल्य

गुड लक के साथ मेल खाना चाहिए!

संबंधित मुद्दे