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?

Alexander Ibarra
quelle
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
github.com/jreyes/mirror
Alexander Ibarra
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 .

Bruce Lee
quelle
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.

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

Rafahoro
quelle
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.

rudicjovan
quelle
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!!!

Roopesh Reddy
quelle
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

Sachin K.
quelle
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"
yao
quelle
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.

OneCricketeer
quelle
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.

Val Geyvandov
quelle
5

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

-> Charge Only. 

Zu

-> Transfer file.
Sushil Chaudhary
quelle
4

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

Iman Marashi
quelle
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.

svguerin3
quelle
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
Mohsen Khalili
quelle
1

adb kill-server

ADB-Startserver

Es funktioniert für mich unter Windows.

Siddhartha Shankar
quelle
1

Der folgende Code hat bei mir funktioniert:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
C-lio Garcia
quelle
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.

Adi
quelle
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.

NVA
quelle
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})
            }
        }
    }
nikc
quelle
0

Neustart des Geräts gelöst Problem für mich (React-native)

O. Borcuhin
quelle
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.

Rico Valentino
quelle
0

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

Sathish Subramani
quelle
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.

David Arribas
quelle
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