INSTALL_FAILED_NO_MATCHING_ABIS bei der Installation von apk

478

Ich habe versucht, meine App in Android L Preview Intel Atom Virtual Device zu installieren. Dies ist mit folgendem Fehler fehlgeschlagen:

INSTALL_FAILED_NO_MATCHING_ABIS

Was bedeutet das?

Peter Zhao
quelle
Überprüfen Sie diesen Link für Android 3.0.1 Problem: stackoverflow.com/a/49473570/3400991
Shobhakar Tiwari

Antworten:

633

INSTALL_FAILED_NO_MATCHING_ABISDies ist der Fall, wenn Sie versuchen, eine App zu installieren, die native Bibliotheken und keine native Bibliothek für Ihre CPU-Architektur enthält. Wenn Sie beispielsweise eine App für armv7 kompiliert haben und versuchen, sie auf einem Emulator zu installieren, der stattdessen die Intel- Architektur verwendet, funktioniert sie nicht.

Hiemanshu Sharma
quelle
1
@ DanielOchoa Es liegt daran, dass sie nicht zwei Bilder für eine Vorschau-Version pflegen. Wenn L offiziell gestartet wird, wird es sicher auch ein Intel x86-Image geben.
Hiemanshu Sharma
1
Wie man dieses Problem löst. Ich benutze Genymotion Emulater und installiere Gapps und Genymotion-ARM-Translation_v1.1 bekomme immer noch dieses Problem.
Prashant Maheshwari Andro
3
Wenn Sie dieses Problem bei Genymotion auch bei Verwendung des ARM-Übersetzers haben, liegt dies daran, dass Sie ein virtuelles x86-Gerät wie Google Nexus 10 erstellen. Wählen Sie stattdessen ein virtuelles ARM-Gerät wie eines der benutzerdefinierten Tablets.
enl8enmentnow
1
Irgendeine Idee, warum dies auf einem Nexus 9 mit 5.1.1 nicht funktioniert. Es funktioniert gut auf einem Sony Xperia Z2-Tablet mit 4.4.2. Zusammengestellt Sdk 21, min 17 abd zielte 22.
Bear
3
Ich hatte dieses Problem, als ich den Android Studio-Emulator für ein Nexus 5x auf meinem Windows-Computer verwendete. Aus Geschwindigkeitsgründen [10x schneller] simuliert das Telefon standardmäßig so, als würde es mit einer Intel x86-Architektur arbeiten. [Snapdragon 808 von Nexus 5x basiert tatsächlich auf ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . Ich habe den Fehler beim Aufrufen des AVD-Managers behoben, das simulierte Gerät ausgewählt, auf dem der Fehler aufgetreten ist, und auf die Schaltfläche Bearbeiten geklickt, auf der ich eine ARM-Architektur (armeabi-v7a) eingerichtet habe. Nach dieser Änderung plus Neustart des Emulators verlief die Installation ohne Probleme
Antonino
150

INSTALL_FAILED_NO_MATCHING_ABIS ist, wenn Sie versuchen, eine App zu installieren, die native Bibliotheken und keine native Bibliothek für Ihre CPU-Architektur enthält. Wenn Sie beispielsweise eine App für armv7 kompiliert haben und versuchen, sie auf einem Emulator zu installieren, der stattdessen die Intel-Architektur verwendet, funktioniert sie nicht.

Verwenden von Xamarin unter Visual Studio 2015. Beheben Sie dieses Problem durch:

  1. Öffnen Sie Ihre Xamarin .sln
  2. Klicken Sie mit der rechten Maustaste auf Ihr Android-Projekt
  3. Klicken Sie auf Eigenschaften
  4. Klicken Sie auf Android-Optionen
  5. Klicken Sie auf die Registerkarte "Erweitert"
  6. Aktivieren Sie unter "Unterstützte Architekturen" Folgendes:

    1. armeabi-v7a
    2. x86
  7. speichern

  8. F5 (bauen)

Bearbeiten: Es wurde berichtet, dass diese Lösung auch in Visual Studio 2017 funktioniert .

Bearbeiten 2: Es wurde berichtet, dass diese Lösung auch unter Visual Studio 2017 für Mac funktioniert .

Asher Girlande
quelle
6
Diese Lösung funktionierte auch in Visual Studio 2017 für ein Xamarin.Android-Projekt.
Corentinaltepe
1
Dies funktionierte auch für mich bei Verwendung eines Android WebView App-Projekts
JRodd
4
Auf Xamarin scheint es an jedem neuen Tag ein neues, unerwartetes Hindernis zu geben, das mich daran hindert, meine Anwendung auszuführen (die gestern funktioniert hat). Da sich meine csproj-Datei in der Dropbox befindet, konnte ich den Versionsverlauf überprüfen, und diese Eigenschaft war gestern nicht in der Datei enthalten, sie fehlte insgesamt. Heute musste ich die x86-Option hinzufügen, damit die App ausgeführt wird. Warum um alles in der Welt verwendet Xamarin oder Android plötzlich andere Standardwerte? Das ist so frustrierend! Wie auch immer, dank Leuten wie Ihnen kann ich die Arbeit überwinden und weitermachen. Vielen Dank und +1 für dich!
TMan
2
Ich wünschte, ich könnte mehr als einmal upvoten ... Getestet und arbeite an VS 2017 für Mac.
JordiVilaplana
Für Visual Studio Community 2019 für Mac: 1. Klicken Sie mit der rechten Maustaste auf Ihr Android-Projekt. 2. Klicken Sie auf Optionen. 3. Klicken Sie auf Android Build. 4. Erweitert
null
87

Ich poste eine Antwort aus einem anderen Thread, weil es für mich gut funktioniert hat. Der Trick besteht darin, Unterstützung für beide Architekturen hinzuzufügen:

Posting dies, weil ich keine direkte Antwort finden konnte und mir ein paar verschiedene Posts ansehen musste, um das zu bekommen, was ich wollte ...

Ich konnte den x86 Accelerated (HAXM) -Emulator verwenden, indem ich ihn einfach zum build.gradle-Skript meines Moduls hinzufügte. Inside android {} block:

splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

Ausführen (erstellen) ... Jetzt befindet sich eine (yourapp) -x86-debug.apk in Ihrem Ausgabeordner. Ich bin mir sicher, dass es eine Möglichkeit gibt, die Installation beim Ausführen zu automatisieren, aber ich starte einfach meinen bevorzugten HAXM-Emulator und verwende die Befehlszeile:

adb install (yourapp)-x86-debug.apk
Driss Bounouar
quelle
2
Fehler [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim
Hat bei mir nicht funktioniert und konnte keine (yourapp)-x86-debug.apkDatei in meiner Projektausgabe finden.
Eido95
Ich möchte APKs nicht unbedingt aufteilen. Ist das eine Option? @ DrissBounouar
Eric
Sie können die universelle apk verwenden, vermutlich hat sie beide Architekturen.
Driss Bounouar
immer noch vor dem gleichen Problem
Vikash Parajuli
61

Wenn Sie Genymotion verwenden, müssen Sie ARM Translation und GApps installieren

R00Wir
quelle
In einigen von Ihnen verwendeten APIs müssen Sie sowohl "ARM Translation Installer v1.1" als auch "GApps für Ihre Android-Version" hinzufügen.
Saneryee
4
UPDATE 28. Mai 2017: Dieses Handbuch wird nicht mehr unterstützt und funktioniert wahrscheinlich nicht. Bitte benutzen Sie es nicht mehr und bitten Sie nicht mehr um Unterstützung. von xda-Entwicklern
AndroidCoolestRulest
1
Sie können diesem Link folgen , um ARM Translation
Devansh Maurya
37

Dies ist in der Tat ein seltsamer Fehler, der durch Multidexing Ihrer App verursacht werden kann. Verwenden Sie den folgenden Block in der build.gradle- Datei Ihrer App, um dies zu umgehen :

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]
IgorGanapolsky
quelle
1
Hallo. Dadurch wurde mein Projekt erfolgreich erstellt, aber es gab mir immer noch den gleichen Fehler. Ich arbeite an Mac, Genymotion. Sind diese von Ihnen angegebenen Einstellungen im Allgemeinen nur für die Debug-Version oder auch für die Release-Erstellung vorgesehen?
myDoggyWritesCode
@ user3241111 Dies kann sowohl für Debug als auch für Prod verwendet werden. Haben Sie versucht, Ihr Projekt zu bereinigen? Oder vielleicht Android Studio ungültig machen / neu starten?
IgorGanapolsky
1
@ user3241111 Wenn Sie gradlew für Befehlszeilenterminal-Builds verwenden, können Sie Ihr Projekt dennoch mit gradle bereinigen.
IgorGanapolsky
1
Ich habe diese Lösung ausprobiert, sie hat funktioniert. In meinem Projekt gab es kein APP_ABI. Aber ich habe es entsprechend hinzugefügt und es baut nur eine apk und es funktioniert. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode
1
Außerdem habe ich gerade den aktivierten Gradle-Daemon hinzugefügt und er hat den Prozess so beschleunigt ... Wie auch immer, danke für Ihre Unterstützung :)
myDoggyWritesCode
11

Ich weiß, dass es hier viele Antworten gab, aber die TL; DR-Version lautet wie folgt (wenn Sie Xamarin Studio verwenden):

  1. Klicken Sie im Lösungsbaum mit der rechten Maustaste auf das Android-Projekt
  2. Wählen Options
  3. Gehe zu Android Build
  4. Gehen Sie zur AdvancedRegisterkarte
  5. Überprüfen Sie die Architekturen, die Sie in Ihrem Emulator verwenden (wahrscheinlich x86/ armeabi-v7a/ armeabi).
  6. Mach eine Kickass App :)
Jonathan Perry
quelle
11

Diese Lösung hat bei mir funktioniert. Versuchen Sie dies, und fügen Sie der build.gradle- Datei Ihrer App die folgenden Zeilen hinzu

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}
Vaibhav
quelle
11

Auf Android 8:

apache.commons.io:2.4

es gibt INSTALL_FAILED_NO_MATCHING_ABIS, versuchen Sie es auf 2.5 oder 2.6 zu ändern und es wird funktionieren oder es auskommentieren.

Saba
quelle
6
Vielen Dank, du rettest meinen Tag. Ich weiß nicht, warum ich bekam: Implementierung 'org.apache.directory.studio:org.apache.commons.io:2.4'
Pierrick HYMBERT
7

Der Kommentar von @ enl8enmentnow sollte eine Antwort sein, um das Problem mithilfe von genymotion zu beheben:

Wenn Sie dieses Problem bei Genymotion auch bei Verwendung des ARM-Übersetzers haben, liegt dies daran, dass Sie ein virtuelles x86-Gerät wie Google Nexus 10 erstellen. Wählen Sie stattdessen ein virtuelles ARM-Gerät wie eines der benutzerdefinierten Tablets.

muetzenflo
quelle
1
Ich arbeite an einem Mac und wahrscheinlich ist er für ein virtuelles x86-Gerät gebaut. Ich habe es auch mit dem benutzerdefinierten Tablet von genymotion versucht, es hat nicht funktioniert und bei der Installation den gleichen Fehler
gemeldet
7

das hat bei mir funktioniert ... Android> Gradle Scripts> build.gradle (Modul: App) in Android hinzufügen *

android {
  //   compileSdkVersion 27
     defaultConfig {
        //
     }
     buildTypes {
        //
     }
    // buildToolsVersion '27.0.3'

    splits {
           abi {
                 enable true
                 reset()
                 include 'x86', 'armeabi-v7a'
                 universalApk true
               }
    }
 }

Geben Sie hier die Bildbeschreibung ein


quelle
6

Visual Studio Mac - Sie können die Unterstützung hier ändern:

Geben Sie hier die Bildbeschreibung ein

LeRoy
quelle
6

Ich hatte dieses Problem mit der BitcoinJ-Bibliothek (org.bitcoinj: bitcoinj-core: 0.14.7), die build.gradle (in der Modul-App) eine Paketoption innerhalb des Android-Bereichs hinzugefügt hat. Es hat mir geholfen.

android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}
ediBersh
quelle
Vielen Dank. Es hat mir bei der Integration von Bitcoin J geholfen.
Umer Kiani
Vielen Dank, ich versuche viele Lösungen, aber diese Lösung funktioniert für mich für mich Mein Problem ist für scrypt-1.4.0.jar nicht in Android Pie Version (Nokia 7.1) installiert Gerät
Sagar Pithiya
3

In meinem Fall wurde in einem Xamarin-Projekt in Visual Studio ein Fehler behoben, der durch Auswahl von Eigenschaften -> Android-Optionen behoben wurde, und aktivieren Sie die Option Laufzeiten freigeben und Schnelle Bereitstellung verwenden, in einigen Fällen eine davon Geben Sie hier die Bildbeschreibung ein

Saleem Kalro
quelle
2

Für genymotion auf dem Mac wurde beim Installieren meiner apk der Fehler INSTALL_FAILED_NO_MATCHING_ABIS angezeigt.

In meinem Projekt gab es kein "APP_ABI", aber ich habe es entsprechend hinzugefügt und es hat nur eine Apk für beide Architekturen erstellt, aber es hat funktioniert. https://stackoverflow.com/a/35565901/3241111

myDoggyWritesCode
quelle
2

In der Visual Studio Community Edition 2017 funktioniert die Auswahl der unterstützten ABIs aus den Android-Optionen manchmal nicht.

Stellen Sie in diesem Fall sicher, dass die .csproj-Datei die folgende Zeile und keine doppelten Zeilen in denselben Build-Konfigurationen enthält.

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

Um zu bearbeiten,

  1. Entladen Sie Ihr Android-Projekt
  2. Klicken Sie mit der rechten Maustaste und wählen Sie Projekt bearbeiten ...
  3. Stellen Sie sicher, dass Sie die obige Zeile in einer Build-Konfiguration nur einmal haben
  4. speichern
  5. Klicken Sie mit der rechten Maustaste auf Ihr Android-Projekt und laden Sie es neu
Kusal Dissanayake
quelle
1

Wenn Sie alles oben ausprobiert haben und trotzdem den gleichen Fehler "Weil ich dieses Problem bereits habe" haben, überprüfen Sie im Grunde, welche .jar oder .aar oder welches Modul, das Sie hinzugefügt haben, möglicherweise die einzige Bibliothek ist, die ndk verwendet, und diese unterstützt 8.0 nicht (Oreo) +, ebenfalls verwende ich die Microsoft SignalR-Socket-Bibliothek und füge ihre .jar-Dateien hinzu. Später habe ich herausgefunden, dass die App nicht in Oreo installiert ist. Danach entferne ich diese Bibliothek, da derzeit keine Lösung auf der Git-Seite vorhanden ist und ich mich für eine andere entscheide .

Überprüfen Sie daher die von Ihnen verwendete Bibliothek und suchen Sie danach, wenn Sie diese dringend benötigen.

Sumit Kumar
quelle
1

Ich hatte dieses Problem, als ich von Android 7 (Nougat) auf Android 8 (Oreo) umgestiegen bin.

Ich habe verschiedene oben aufgeführte Wege ausprobiert und zu meinem Pech hat nichts funktioniert.

Also habe ich die APK - Datei zu ZIP - Datei extrahiert es geändert und gefunden lib Ordner mit dem diese Datei war /x86_64/darwin/libscrypt.dylib so diese zu entfernen , habe ich ein Code in meinem build.gradle Modul unter Android Abschnitt (dh )

packagingOptions {
    exclude 'lib/x86_64/darwin/libscrypt.dylib'
    exclude 'lib/x86_64/freebsd/libscrypt.so'
    exclude 'lib/x86_64/linux/libscrypt.so'
}

Cheers Problem gelöst

Khan.N
quelle
1

Im Allgemeinen, um herauszufinden, welche Bibliotheksabhängigkeit eine inkompatible ABI aufweist,

  • Erstellen Sie eine APK-Datei in Android Studio (Menü Build> Build Bundle (s) / APK (s)> Build APK (s)) // aktuell am 01.04.2020
  • Benennen Sie die APK-Datei um und ersetzen Sie die Erweiterung "apk" durch die Erweiterung "zip".
  • Entpacken Sie die Zip-Datei in einen neuen Ordner
  • Gehe zum Ordner libs
  • Finden Sie heraus, welche * .jar-Bibliotheken mit inkompatiblen ABIs vorhanden sind

Sie können versuchen, die Version zu aktualisieren / diese Bibliotheken zu entfernen / zu ersetzen, um INSTALL_FAILED_NO_MATCHING_ABIS bei der Installation des apk-Problems zu lösen

Denis Dmitrienko
quelle
0

Das ist mir passiert. Ich habe den SDK-Manager überprüft und festgestellt, dass derjenige, den ich verwendet habe, ein Update hatte. Ich habe es aktualisiert und das Problem ging weg.

Barry Fruitman
quelle
0

Ziemlich spät, aber gerade darauf gestoßen. Dies ist für Xamarin.Android. Stellen Sie sicher, dass Sie nicht versuchen, im Release-Modus zu debuggen. Ich erhalte genau den gleichen Fehler, wenn ich mich im Release-Modus befinde und versuche zu debuggen. Durch einfaches Umschalten von Release auf Debug konnte Mine ordnungsgemäß installiert werden.

Nieminen
quelle
0

In meinem Fall musste ich die x86-Version der Anwendung herunterladen.

  1. Gehen Sie zu https://www.apkmirror.com/
  2. Suche nach der App
  3. Wählen Sie den ersten in der Liste aus
  4. Schauen Sie oben auf der Seite nach, wo sich [Firmenname]> [Anwendungsname]> [Versionsnummer] befindet.
  5. Klicken Sie auf den Anwendungsnamen
  6. Klicken Sie auf "Alle Varianten".
  7. Die Liste sollte eine x86-Variante zum Herunterladen enthalten
Fidel
quelle
0

In meinem Fall helfen mir die folgenden Optionen

Geben Sie hier die Bildbeschreibung ein

Stefan Michev
quelle