Was ist der Grund für den Fehler "Gerät unterstützt x86, aber APK unterstützt nur armeabi-v7a"


88

Ich spiele mit Android Studio herum, indem ich einige Projekte von GitHub teste. Wenn ich versuche, die apk zu emulieren, kann ich keinen Emulator auswählen.

Es sagt mir:

Gerät unterstützt x86, aber APK unterstützt nur armeabi-v7a

Warum macht es das?


Welche AVD haben Sie verwendet? Welches System-Image? Welches GitHub-Projekt?
OneCricketeer

Mit anderen Worten, auf den Intel x86-Images wird kein ARM-Code ausgeführt.
OneCricketeer


Ich wollte ein Nexus 10 mit Android 5.1
Alexander Ibarra

Okay, und haben Sie das ARM eabi v7-System-Image oder ein Intel Atom x86-Image verwendet? Überprüfen Sie in Ihrem SDK-Manager, was Sie installiert haben.
OneCricketeer

Antworten:


82

Ich hatte das gleiche Problem, ich checke die build.gradle von module: app . Es stellt sich heraus, dass es eine solche Konfiguration gibt:

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

Als ich alles auskommentierte, funktionierte alles gut.

Ich habe versucht, mich mit dem React Native Android-Projekt zu befassen .


1
Ich denke du meintest build.gradle;)
Ryan James

2
Ich hatte das gleiche Problem und für mich fehlte "x86" nur dort
Thomas

1
Dies funktionierte für mich - alles was ich tun musste, war das Debuggen auf meinem tatsächlichen Gerät zuzulassen und ich konnte diese Zeile wieder auskommentieren.
Boomer Rogers

Welchen Abschnitt soll ich ndk setzen?
Ömrüm Çetin

Hat bei mir in Java / Kotlin nicht funktioniert, es wird erstellt, aber die App stürzt ab.
mozilla_firefox

77

Deaktivieren Sie das USB-Debugging und schalten Sie es wieder auf dem Hardwaregerät aus.


10
Diese Kommentare würde ich normalerweise ablehnen, aber tatsächlich funktioniert es!
Ahmed Hegazy

2
Dies funktioniert, weil die Allow computer to connect to this deviceEingabeaufforderung nicht beim ersten, sondern beim zweiten Mal angezeigt wurde.
Kyle Clegg

Dies funktionierte auf einem Computer, auf dem ich "Für diesen Computer speichern" markiert war, als ich ein neues Projekt von GitHub aus startete.
Z. Bagley

So. Nach dem Hinzufügen einer neuen Prozessorarchitektur zum ABI-Filter erkannte Studio das Gerät nicht mehr. Dieser Tipp hat mir geholfen, das Problem zu beheben. !!
Vetalll

Für mich geschieht dies in Emulator
Akhil Surapuram

42

Wählen Sie in Android Studio das Menü Erstellen .

Geben Sie hier die Bildbeschreibung ein

Klicken Sie dann auf Build-Variante auswählen ... und wählen Sie im Fenster "Varianten erstellen " die Option x86Debug (oder Release) aus.

Geben Sie hier die Bildbeschreibung ein

PS: Ich benutze Android Studio 2.3 auf dem Mac


Dies funktionierte perfekt - mein Gradle-Setup definierte sowohl ARM- als auch x86-Builds, aber ich musste Android Studio anweisen, die x86-Variante im Gegensatz zur ARM-Variante (wahrscheinlich für iOS) zu erstellen. Vielen Dank!
Jevon

Beachten Sie, dass Sie das Projekt auswählen müssen, da sonst die Option dazu ausgegraut ist. Ich denke, es gibt einige andere Bedingungen, die es auch grau machen können - Sie müssen möglicherweise sauber machen und neu erstellen.
Dronz

16

Unter Linux: Datei> Cache ungültig machen / neu starten Am Telefon: Laden Sie stattdessen diese Geräteänderung auf Fotos übertragen (PTP) auf.


1
Keine der oben genannten Antworten funktionierte. Das hat funktioniert. Vielen Dank.
Passagier

Ich habe von Camera (PTP)zu gewechselt Media Device (MTP)und es funktioniert auch. Danke dir!
Konayuki

11

Ich hatte ein ähnliches Problem und habe es behoben, indem ich der Liste "abiFilters" wie unten den Wert "x86" hinzugefügt habe -

[Öffnen Sie die Datei build.gradle (Modul: App)] und suchen Sie in deafultSection nach " ndk " und fügen Sie "x86" hinzu!

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

Ich hoffe es hilft!!!


1
Sie sollten wahrscheinlich fallen lassen, armeabiwenn Sie auf SDK 19 und höher abzielen. Android selbst unterstützt es nicht ab 4.4
mradzinski

9

In meinem Fall von Linux-Maschine adb devicesgezeigt

List of devices attached 
44b194f5    no permissions

Starten Sie dann den ADB-Server neu

sudo adb kill-server

und dann

sudo adb start-server

Schließen Sie dann Ihr Gerät an, schalten Sie das Debuggen ein und geben Sie ein

adb devices
List of devices attached 
44b194f5    device

Endlich konnte auf dem Gerät ausgeführt werden


7

In meinem Fall verwendet meine App einige native Bibliotheken. Für jede Plattform müssen die entsprechenden Bibliotheken erstellt werden.

Die native Bibliothek der x86-Plattform (oder einer anderen Plattform) wird also nicht generiert. Sie müssen irgendwo einen Abifilter hinzugefügt haben:

Es gibt mehrere Stellen, an denen Abi-Filter angegeben werden können:

  • Application.mk fügt die Plattform, die Sie benötigen, folgendermaßen hinzu:

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

    Finden Sie abiFilters und fügen Sie die Plattform hinzu, die Sie wie folgt benötigen:

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


6

Gerät unterstützt x86, aber APK unterstützt nur armeabi-v7a)

Klingt so, als hätten Sie ein x86Bild im Emulator verwendet.

Erstellen Sie eine separate. Wählen Sie die Registerkarte "Andere Bilder", um Armgeräte zu finden, falls erforderlich.

Oder führen Sie es auf einem tatsächlichen Gerät aus. Das von Ihnen aufgelistete Repo soll auf einem Raspberry Pi 3 / ODroid laufen, denke ich.


6

Kann bestätigen, dass das Problem durch Ein- und Ausschalten des USB-Debugging in den Entwickleroptionen behoben wurde. Brechen Sie möglicherweise sogar das Fenster "Bereitstellungsziel auswählen" in Android Studio ab und versuchen Sie, die App erneut auszuführen, nachdem Sie das USB-Debugging umgeschaltet haben.


5

Bei mir hat es geklappt, die Kabeloption von zu ändern

-> Charge Only. 

Zu

-> Transfer file.

4

Gehen Sie einfach zum Gerät Settings >> Developer Options >> Restore Default Settingsund aktivieren Sie esUSB debugging


2

Auf meinem physischen Gerät bekam ich dies. Das Update bestand darin, in die Entwicklereinstellungen zu wechseln und das USB-Debugging aus- und einzuschalten.


2

Wenn Sie Ubuntu verwenden:

  1. Stellen Sie sicher, dass das USB-Debugging aktiviert ist
  2. Überprüfen Sie Ihre Kabelverbindung
  3. Überprüfen Sie in der Benachrichtigungsleiste die Benachrichtigung des Android-Systems und berühren Sie sie, um den Ladezustand in Dateiübertragung zu ändern
  4. Gehen Sie jetzt zum Terminal und geben Sie Folgendes ein: adb Geräte, nachdem Sie diesen Befehl ausgeführt haben. adb restart und Ihr Gerät wird in der Liste angezeigt


1

Der folgende Code hat bei mir funktioniert:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}

danke es funktioniert.
John dahat

0

Testen Sie Ihren Code auf einem echten Telefon. Wenn Sie immer noch das gleiche Problem haben, importieren Sie Ihren Code erneut. Zuvor sollten Sie Ihr SDK aktualisieren und einen neuen Emulator mit ARM-Systemabbild erstellen.


0

Oft bedeutet dies, dass Sie Ihrem Laptop / Computer keinen Zugriff auf Ihr Gerät gewährt haben. Schauen Sie sich Ihr Gerät an und klicken Sie auf die Schaltfläche "Zugriff zulassen" sowie auf die Debugging-Berechtigungen.


0

Das Ausführen einer AVD mit dem x86-Prozessor ist 10-mal schneller als mit dem ARM-Emulator. Meistens kompilieren Sie jedoch nur Ihre APK für ARM. Um schnellere Emulationsläufe mit einer x86-AVD zu erzielen, musste ich Folgendes tun (für ein Cocos2d-x-Projekt):

  • app / jni / Android.mk

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

    PROP_APP_ABI=armeabi-v7a:x86
  • app / build.gradle

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


0

Es ist mir passiert, nachdem ich das Android Studio aktualisiert habe. In meinem Fall geschah dies, weil die Build-Einstellung nicht automatisch in x86Debug-x86 konfiguriert wurde. Ändern Sie es einfach, indem Sie Build >> Build-Variante auswählen >> Ändern Sie die Build-Varianten-Option von armeabi-v7a in x86Debug-x86 oder was auch immer Sie im Emulator benötigen.


0

Versuchen Sie, unbekannte Quellen in den Sicherheitsoptionen zu aktivieren . Es hat bei mir funktioniert.


0

ich sehe es

Wenn Sie CMake für Ihre Builds verwenden, überprüfen Sie die Datei \ proj.android \ gradle.properties und aktualisieren Sie PROP_APP_ABI, um die Builds für x86 einzuschließen. Alternativ können Sie auch armeabi-v7a oder arm64-v8a Android verwenden Bilder.

Beispiel: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86

Wenn Sie cmake nicht verwenden, suchen Sie in \ proj.android \ app \ jni \ Application.mk nach, falls Sie dort die ABI-Einstellung ändern müssen.


Willkommen bei StackOverflow. Fügen Sie weitere Beschreibungen und Code hinzu, wenn Sie die Antwort verstehen möchten, da dadurch das Problem so schnell wie möglich behoben wird.
Nensi Kasundra
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.