त्रुटि का कारण क्या है "डिवाइस x86 का समर्थन करता है, लेकिन एपीके केवल armeabi-v7a का समर्थन करता है"


90

मैं GitHub से कुछ परियोजनाओं का परीक्षण करके एंड्रॉइड स्टूडियो के साथ खेल रहा हूं और जब मैं एपीके का अनुकरण करने की कोशिश करता हूं, तो यह मुझे एक एमुलेटर चुनने की अनुमति नहीं देता है।

यह मुझे बताता है:

डिवाइस x86 का समर्थन करता है, लेकिन एपीके केवल armeabi-v7a का समर्थन करता है

यह ऐसा क्यों करता है?


AVD का आपने क्या उपयोग किया? क्या सिस्टम छवि? GitHub प्रोजेक्ट क्या है?
OneCricketeer

दूसरे शब्दों में, इंटेल x86 चित्र एआरएम कोड को चलाने के लिए नहीं हैं।
OneCricketeer


मैं एक नेक्सस 10 चला रहा था जो एंड्रॉइड 5.1
अलेक्जेंडर

ठीक है, और क्या आपने ARM eabi v7 सिस्टम इमेज या इंटेल एटम x86 इमेज का उपयोग किया है? अपने एसडीके प्रबंधक की जाँच करें कि आपने क्या स्थापित किया है।
OneCricketeer

जवाबों:


85

मुझे एक ही समस्या थी, मैं मॉड्यूल: एप्लिकेशन से बिल्ड.ग्रेड को चेकआउट करता हूं । यह पता चला है कि ऐसा एक विन्यास है:

    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

जब मैंने ऑल आउट टिप्पणी की, तो सब कुछ ठीक रहा।

मैं रिएक्ट नेटिव एंड्रॉइड प्रोजेक्ट से निपटने की कोशिश कर रहा था


1
मुझे लगता है कि आप बिल्ड.ग्रेडल;)
रयान जेम्स

2
मेरे पास एक ही समस्या थी और मेरे लिए "x86" बस वहाँ गायब था
थोमस

1
इसने मेरे लिए काम किया - हालाँकि मुझे बस इतना करना था कि मैं अपने वास्तविक डिवाइस पर डिबग करूं और मैं फिर से इस लाइन को अनलॉक्ड कर सकूं।
बूमर रोजर्स

मुझे कौन सी धारा डालनी चाहिए?
17mrüm Çetin

जावा / कोटलिन में मेरे लिए काम नहीं किया, यह बनाता है, लेकिन app दुर्घटनाओं।
mozilla_firefox

77

USB डीबगिंग बंद करें और इसे हार्डवेयर डिवाइस पर वापस चालू करें।


10
उन टिप्पणियों को मैं आमतौर पर नीचा दिखाऊंगा, लेकिन वास्तव में, यह काम करता है!
अहमद हेगाज़ी

2
यह काम करता है क्योंकि Allow computer to connect to this deviceप्रॉम्प्ट ने पहली बार प्रदर्शित नहीं किया था, लेकिन दूसरी बार किया।
काइल क्लेग

यह एक कंप्यूटर पर काम करता है जिसे मैंने "इस कंप्यूटर के लिए याद रखें" पर चिह्नित किया था जब मैंने गिटहब से एक नई परियोजना शुरू की थी।
जेड बागली

इसलिए। एबीआई फिल्टर में नए प्रोसेसर आर्किटेक्चर को जोड़ने के बाद - स्टूडियो ने डिवाइस को पहचानना बंद कर दिया। इस टिप ने मुझे समस्या को हल करने में मदद की। !!
वेटलल

मेरे लिए यह एमुलेटर
अखिल सुरपुरम

41

Android Studio में, बिल्ड मेनू का चयन करें ,

यहाँ छवि विवरण दर्ज करें

उसके बाद Select बिल्ड वेरिएंट पर क्लिक करें ... और 'बिल्ड वेरिएंट' विंडो में x86Debug (या रिलीज़) चुनें

यहाँ छवि विवरण दर्ज करें

PS: Im मैक पर Android स्टूडियो 2.3 का उपयोग कर रहा है


यह पूरी तरह से काम करता है - मेरे ग्रेड सेटअप ने एआरएम और x86 बिल्ड दोनों को परिभाषित किया है, लेकिन मुझे एंड्रॉइड स्टूडियो को ARM वेरिएंट (iOS के लिए संभावना) के विपरीत x86 वेरिएंट बनाने का निर्देश देना पड़ा। धन्यवाद!
jevon

ध्यान दें कि आपको परियोजना का चयन करने की आवश्यकता है, या ऐसा करने का विकल्प बाहर निकाला जाएगा। मुझे लगता है कि कुछ अन्य स्थितियां भी हैं जो इसे ग्रे कर सकती हैं - आपको मेक क्लीन और पुनर्निर्माण की आवश्यकता हो सकती है।
ड्रोनज

16

लिनक्स पर: फाइल> अवैध कैश / फोन पर पुनः आरंभ करें: इसके बजाय इस डिवाइस को फोटो ट्रांसफर करने के लिए बदल दें (PTP)


1
उपरोक्त उत्तरों में से कोई भी काम नहीं कर रहा था। यह काम किया। बहुत बहुत धन्यवाद।
thedarkpassenger

मैं इससे बदल Camera (PTP)गया Media Device (MTP)और यह भी काम करता है। धन्यवाद!
कोनायुकी

11

मेरे पास इसी तरह का मुद्दा था और मैंने नीचे "abiFilters" सूची में "x86" मान जोड़कर इसे हल किया है -

[ओपन build.gradle (मॉड्यूल: एप्लिकेशन) फ़ाइल] और "के लिए खोज NDK " में deafultSection और इसे करने के लिए "86" जोड़!

ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

आशा करता हूँ की ये काम करेगा!!!


1
armeabiयदि आप SDK 19 और इसके बाद के संस्करण को लक्षित कर रहे हैं, तो आपको शायद छोड़ देना चाहिए । एंड्रॉइड खुद इसे 4.4 से शुरू करने का समर्थन नहीं करता है
mradzinski

9

लिनक्स मशीन के मेरे मामले में adb devicesदिखाया गया है

List of devices attached 
44b194f5    no permissions

फिर adb सर्वर को फिर से शुरू किया

sudo adb kill-server

और फिर

sudo adb start-server

फिर अपने डिवाइस को चालू करें डिबगिंग चालू करें और टाइप करें

adb devices
List of devices attached 
44b194f5    device

अंत में डिवाइस पर चलने में सक्षम था


7

मेरे मामले में मेरा ऐप कुछ देशी पुस्तकालयों का उपयोग करता है। प्रत्येक प्लेटफ़ॉर्म को निर्मित किए जाने वाले संगत परिमाण की आवश्यकता होती है।

तो x86 (या किसी भी अन्य) प्लेटफ़ॉर्म की मूल देयता उत्पन्न नहीं हुई है। आपको कहीं न कहीं एक एब्फ़िल्टर जोड़ना होगा:

कई स्थान हैं जहाँ अबी फ़िल्टर निर्दिष्ट किए जा सकते हैं:

  • Application.mk आप इस तरह की जरूरत मंच जोड़ने:

    APP_ABI := armeabi armeabi-v7a x86
    
  • build.gradle

    abiFilters खोजें, और इस तरह से आपकी आवश्यकता के लिए प्लेटफ़ॉर्म जोड़ें:

    abiFilters   "armeabi","armeabi-v7a","x86"
    


6

डिवाइस x86 का समर्थन करता है, लेकिन एपीके केवल armeabi-v7a का समर्थन करता है)

ऐसा लगता है जैसे आपने x86एमुलेटर में एक छवि का उपयोग किया है।

एक अलग बनाएँ। यदि आपको करना है, तो हाथ के उपकरणों को खोजने के लिए "अन्य चित्र" टैब चुनें।

या, एक वास्तविक डिवाइस पर चलाएं। आपके द्वारा सूचीबद्ध रेपो एक रास्पबेरी पाई 3 / ओड्रोइड पर चलने के लिए है, मुझे लगता है।


6

डेवलपर विकल्पों में बंद / चालू यूएसबी डिबगिंग की पुष्टि कर सकते हैं। हो सकता है कि एंड्रॉइड स्टूडियो में "सिलेक्शन डिपॉजिट टारगेट" विंडो को भी रद्द कर दें और यूएसबी डिबगिंग के बाद ऐप को फिर से चलाने की कोशिश करें।





2

अपने भौतिक उपकरण पर, मुझे यह मिलना शुरू हो गया। डेवलपर सेटिंग में जाना और USB डीबगिंग को बंद और चालू करना था।


2

यदि आप उबंटू का उपयोग करते हैं:

  1. सुनिश्चित करें कि यूएसबी डिबगिंग चालू है
  2. अपने केबल कनेक्शन की जाँच करें
  3. नोटिफिकेशन बार पर Android सिस्टम नोटिफिकेशन को चेक करें और इसे बदलने के लिए चार्ज स्टेट को फाइल ट्रांसफर के लिए टच करें
  4. अब टर्मिनल और टाइप करें: इस कमांड एडीबी रिस्टार्ट को चलाने के बाद adb डिवाइस और लिस्ट में आपका डिवाइस शो


0

असली फोन पर अपने कोड का परीक्षण करें। यदि आपके पास अभी भी एक ही मुद्दा है, तो अपने कोड को फिर से आयात करें और इससे पहले आपको अपने एसडीके को अपडेट करना चाहिए और एआरएम सिस्टम छवि के साथ एक नया एमुलेटर बनाना चाहिए।


0

कई बार इसका मतलब है कि आपने अपने लैपटॉप / कंप्यूटर को अपने डिवाइस तक नहीं पहुंचाया है। अपने डिवाइस पर एक नज़र डालें और "अनुमति दें" बटन पर क्लिक करें और साथ ही डीबगिंग अनुमतियां


0

एएमडी को x86 प्रोसेसर का उपयोग करके एआरएम एमुलेटर का उपयोग करने की तुलना में 10 गुना तेज है, लेकिन अधिकांश समय आप केवल एआरएम के लिए अपने एपीके को संकलित कर रहे हैं। एक x86 एवीडी का उपयोग करके तेजी से अनुकरण चलाने के लिए मुझे निम्नलिखित काम करना था (एक Cocos2d-x परियोजना के लिए):

  • एप्लिकेशन / JNI / Android.mk

    APP_ABI := armeabi-v7a:x86
    
  • gradle.properties

    PROP_APP_ABI=armeabi-v7a:x86
    
  • एप्लिकेशन / build.gradle

    android {
        ...
        defaultConfig {
            ...
            ndk {
                abiFilters = []
                abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
            }
        }
    }
    


0

एंड्रॉइड स्टूडियो को अपडेट करने के बाद मेरे साथ ऐसा हुआ। मेरे मामले में, ऐसा इसलिए हुआ क्योंकि निर्माण सेटिंग x86Debug-x86 में स्वचालित रूप से कॉन्फ़िगर नहीं की गई है। केवल बिल्ड ओपन करके इसे बदलें >> बिल्ड वेरिएंट चुनें >> आर्मएबी-वी 7 ए से बिल्ड वेरिएंट विकल्प को x86Debug-x86 में बदलें या आपको एमुलेटर में जो कुछ भी चाहिए।


0

सुरक्षा विकल्पों से अज्ञात स्रोतों को सक्षम करने का प्रयास करें । इसने मेरे लिए काम किया।


0

मैंने यह देखा

यदि आप अपने बिल्ड के लिए CMake का उपयोग कर रहे हैं, तो फ़ाइल \ proj.android \ gradle.properties की जाँच करें, और PROP_APP_ABI को x86 के लिए बिल्ड को शामिल करने के लिए अपडेट करें, या वैकल्पिक रूप से, आप बस armeabi-v7a या arm64-v8a Android का उपयोग कर सकते हैं इमेजिस।

उदाहरण: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86

यदि आप cmake का उपयोग नहीं कर रहे हैं, तो यदि आपको वहां ABI सेटिंग को बदलने की आवश्यकता है, तो \ proj.android \ app \ jni \ Application.mk में देखें।


StackOverflow में आपका स्वागत है, यदि उत्तर को समझने के लिए आवश्यक है तो कुछ और विवरण और कोड जोड़ें क्योंकि यह किसी की समस्या को हल करेगा।
नेन्सी कसुंदरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.