INSTALL_FAILED_NO_MATCHING_ABIS podczas instalacji apk

Odpowiedzi:

633

INSTALL_FAILED_NO_MATCHING_ABISjest, gdy próbujesz zainstalować aplikację, która ma biblioteki natywne i nie ma biblioteki natywnej dla twojej architektury procesora. Na przykład, jeśli skompilowałeś aplikację dla armv7 i próbujesz zainstalować ją na emulatorze korzystającym z architektury Intel, zamiast tego nie będzie działać.

Hiemanshu Sharma
źródło
1
@DanielOchoa Jest tak, ponieważ nie zamierzają utrzymywać dwóch zdjęć w wersji zapoznawczej. Po oficjalnym uruchomieniu L jestem pewien, że pojawi się również obraz Intel x86.
Hiemanshu Sharma
1
Jak pokonać ten problem. Korzystam z Genymotion Emulater i instaluję Gapps, a Genymotion-ARM-Translation_v1.1 wciąż otrzymuję ten problem.
Prashant Maheshwari Andro
3
Jeśli masz ten problem w Genymotion nawet podczas korzystania z translatora ARM, dzieje się tak dlatego, że tworzysz urządzenie wirtualne x86, takie jak Google Nexus 10. Zamiast tego wybierz urządzenie wirtualne ARM, takie jak jeden z tabletów niestandardowych.
powiększenie teraz
1
Każdy pomysł, dlaczego to nie zadziała na Nexusie 9 z 5.1.1. Działa dobrze na tablecie Sony Xperia Z2 z systemem 4.4.2. Opracowano Sdk 21, min. 17 abd skierowane na 22.
Niedźwiedź
3
Miałem ten problem podczas korzystania z emulatora Android Studio dla Nexusa 5x na moim komputerze z systemem Windows. Ze względu na szybkość [10x szybsza] domyślnie symuluje telefon tak, jakby działał z architekturą Intel x86 [Snapdragon 808 Nexusa 5x jest w rzeczywistości oparty na ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] . Naprawiłem błąd wchodząc do menedżera AVD, wybierając symulowane urządzenie, które mi dało błąd, i klikając przycisk Edytuj, w którym skonfigurowałem architekturę ARM (armeabi-v7a). Po ponownym uruchomieniu tej zmiany plus emulatora instalacja przebiegła bez problemów
Antonino
150

INSTALL_FAILED_NO_MATCHING_ABIS ma miejsce, gdy próbujesz zainstalować aplikację, która ma biblioteki natywne i nie ma biblioteki natywnej dla twojej architektury procesora. Na przykład, jeśli skompilowałeś aplikację dla armv7 i próbujesz zainstalować ją na emulatorze korzystającym z architektury Intel, zamiast tego nie będzie działać.

Korzystanie z Xamarin w Visual Studio 2015. Napraw ten problem przez:

  1. Otwórz swój Xamarin .sln
  2. Kliknij prawym przyciskiem myszy swój projekt Androida
  3. Kliknij właściwości
  4. Kliknij Opcje systemu Android
  5. Kliknij kartę „Zaawansowane”
  6. W sekcji „Obsługiwane architektury” zaznacz następujące elementy:

    1. armeabi-v7a
    2. x86
  7. zapisać

  8. F5 (kompilacja)

Edycja: Zgłoszono również, że to rozwiązanie działa w programie Visual Studio 2017 .

Edycja 2: Zgłoszono również, że to rozwiązanie działa w programie Visual Studio 2017 dla komputerów Mac .

Asher Girlanda
źródło
6
To rozwiązanie działało również w programie Visual Studio 2017 w przypadku projektu Xamarin.Android.
corentinaltepe
1
Działa
4
Wydaje się na Xamarinie, że każdego nowego dnia pojawia się nowa, nieoczekiwana przeszkoda uniemożliwiająca mi uruchomienie mojej aplikacji (która działała wczoraj). Ponieważ mój plik csproj znajduje się na Dropbox, mogłem sprawdzić historię wersji, a tej właściwości nie było w pliku wczoraj, zupełnie jej brakowało. Dzisiaj musiałem dodać opcję x86, aby uruchomić aplikację. Dlaczego, do diabła, Xamarin lub Android nagle używa różnych wartości domyślnych? To takie frustrujące! W każdym razie dzięki ludziom takim jak ty mogę przezwyciężyć i zająć się pracą. Wielkie dzięki i +1 dla Ciebie!
TMan
2
Chciałbym móc głosować więcej niż jeden raz ... Testowałem i pracuję nad VS 2017 dla komputerów Mac.
JordiVilaplana
Visual Studio Community 2019 dla komputerów Mac: 1. Kliknij prawym przyciskiem myszy projekt Android 2. Kliknij Opcje 3. Kliknij Android Build 4. Advanced
null
87

Wysyłam odpowiedź z innego wątku, ponieważ to, co mi się udało, polega na dodaniu obsługi obu architektur:

Publikowanie tego, ponieważ nie mogłem znaleźć bezpośredniej odpowiedzi i musiałem spojrzeć na kilka różnych postów, aby uzyskać to, co chciałem zrobić ...

Byłem w stanie użyć emulatora x86 Accelerated (HAXM), po prostu dodając to do skryptu build.gradle mojego modułu W bloku Androida {}:

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

Uruchom (kompiluj) ... Teraz w folderze wyjściowym będzie (twoja aplikacja) -x86-debug.apk. Jestem pewien, że istnieje sposób na zautomatyzowanie instalacji po uruchomieniu, ale właśnie uruchamiam preferowany emulator HAXM i używam wiersza polecenia:

adb install (yourapp)-x86-debug.apk
Driss Bounouar
źródło
2
Błąd [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim
Nie działało dla mnie i nie mogłem znaleźć (yourapp)-x86-debug.apkpliku w wynikach mojego projektu.
Eido95
Niekoniecznie chcę dzielić pliki APK, czy to jest opcja? @DrissBounouar
ericn
Możesz użyć uniwersalnego apka, prawdopodobnie ma on obie architektury.
Driss Bounouar,
wciąż stoi ten sam problem
Vikash Parajuli
61

Jeśli korzystasz z Genymotion, musisz zainstalować ARM Translation i GApps

R00We
źródło
W niektórych używanych interfejsach API należy dodać zarówno „ARM Translation Installer v1.1”, jak i „GApps dla wersji Androida”.
saneryee
4
AKTUALIZACJA 28 maja 2017 r .: Ten przewodnik nie jest już obsługiwany i prawdopodobnie nie działa. Nie używaj go ani nie proś o wsparcie. od xda-developers
AndroidCoolestRulest
1
Możesz skorzystać z tego linku, aby zainstalować ARM Translation
Devansh Maurya
37

To rzeczywiście dziwny błąd, który może być spowodowany przez multideksowanie aplikacji. Aby obejść ten problem, użyj następującego bloku w pliku build.gradle aplikacji:

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]
Igor Ganapolski
źródło
1
Cześć. To sprawiło, że mój projekt został pomyślnie skompilowany, ale nadal dał mi ten sam błąd. Pracuję na Macu, genymotion. Ponadto, ogólnie rzecz biorąc, czy te ustawienia, które powiedziałeś, są tylko dla wersji debugowania czy też dla kompilacji wydania?
myDoggyWritesCode
@ user3241111 Można tego użyć zarówno do debugowania, jak i prod. Czy próbowałeś wyczyścić swój projekt? A może unieważnij / uruchom ponownie Android Studio?
IgorGanapolsky
1
@ user3241111 Jeśli używasz gradlew do kompilacji terminala z wiersza poleceń, nadal możesz wyczyścić swój projekt za pomocą gradle.
IgorGanapolsky
1
Wypróbowałem to rozwiązanie, zadziałało .. W moim projekcie nie było żadnej APP_ABI. Ale odpowiednio go dodałem i zbudował tylko jedną aplikację i działa. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode
1
Dodałem też włączonego demona gradle i tak bardzo przyspieszyłem ten proces ... W każdym razie dziękuję za wsparcie :)
myDoggyWritesCode
11

Wiem, że było tu wiele odpowiedzi, ale wersja TL; DR jest taka (jeśli używasz Xamarin Studio):

  1. Kliknij prawym przyciskiem myszy projekt Androida w drzewie rozwiązań
  2. Wybierz Options
  3. Iść do Android Build
  4. Iść do Advanced zakładki
  5. Sprawdź architektury używane w emulatorze (Prawdopodobnie x86/ armeabi-v7a/armeabi )
  6. Stwórz aplikację typu kickass :)
Jonathan Perry
źródło
11

To rozwiązanie działało dla mnie. Spróbuj, dodaj następujące wiersze w pliku build.gradle aplikacji

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}
Vaibhav
źródło
11

W systemie Android 8:

apache.commons.io:2.4

daje INSTALL_FAILED_NO_MATCHING_ABIS, spróbuj zmienić go na 2.5 lub 2.6 i zadziała lub skomentuje.

Saba
źródło
6
Dziękuję bardzo, ratujesz mój dzień. Nie wiem, dlaczego dostałem: implementacja 'org.apache.directory.studio:org.apache.commons.io:2.4'
Pierrick HYMBERT
7

Komentarz @ Enl8enmentnow powinien być odpowiedzią na rozwiązanie problemu za pomocą genymotion:

Jeśli masz ten problem w Genymotion nawet podczas korzystania z translatora ARM, dzieje się tak dlatego, że tworzysz urządzenie wirtualne x86, takie jak Google Nexus 10. Zamiast tego wybierz urządzenie wirtualne ARM, takie jak jeden z tabletów niestandardowych.

muetzenflo
źródło
1
Pracuję na komputerze Mac i prawdopodobnie jest on zbudowany na urządzenie wirtualne x86. Próbowałem też z niestandardowym tabletem genymotion, nie działał i dał ten sam błąd podczas instalacji
myDoggyWritesCode
7

to działało dla mnie ... Android> Skrypty stopniowe> build.gradle (Moduł: aplikacja) dodaj wewnątrz Androida *

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

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

wprowadź opis zdjęcia tutaj


źródło
6

Visual Studio mac - możesz zmienić obsługę tutaj:

wprowadź opis zdjęcia tutaj

LeRoy
źródło
6

miałem ten problem przy użyciu biblioteki bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) dodanej do build.gradle (w aplikacji modułu) opcji pakowania w zakresie Androida. pomogło mi.

android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}
ediBersh
źródło
Dzięki. Pomogło mi to w integracji Bitcoin J.
Umer Kiani,
Dziękuję bardzo, próbuję wielu rozwiązań, ale to rozwiązanie działa dla mnie Mój problem dotyczy scrypt-1.4.0.jar nie instaluje się w wersji Android Pie (Nokia 7.1) Urządzenie
Sagar Pithiya
3

W moim przypadku w projekcie Xamarin błąd w Visual Studio został usunięty przez wybranie właściwości -> Opcje systemu Android i zaznaczenie Użyj Udostępnij czasy uruchamiania i Użyj szybkiego wdrażania, w niektórych przypadkach jeden z nich wprowadź opis zdjęcia tutaj

Saleem Kalro
źródło
2

W przypadku genymotion na Macu, podczas instalowania mojego apka pojawiał się błąd INSTALL_FAILED_NO_MATCHING_ABIS.

W moim projekcie nie było „APP_ABI”, ale odpowiednio go dodałem i zbudowałem tylko jedną aplikację dla obu architektur, ale działało. https://stackoverflow.com/a/35565901/3241111

myDoggyWritesCode
źródło
2

W edycji Visual Studio Community Edition 2017 czasami wybór obsługiwanych ABI z Opcji Androida nie działa.

W takim przypadku sprawdź, czy .csproj ma następujący wiersz i nie ma zduplikowanych wierszy w tych samych konfiguracjach kompilacji.

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

Aby edytować,

  1. Zwolnij swój projekt na Androida
  2. Kliknij prawym przyciskiem myszy i wybierz Edytuj projekt ...
  3. Upewnij się, że powyższa linia ma tylko jeden raz w konfiguracji kompilacji
  4. Zapisać
  5. Kliknij prawym przyciskiem myszy swój projekt Androida i załaduj ponownie
Kusal Dissanayake
źródło
1

Zasadniczo, jeśli wypróbowałeś wszystko powyżej i nadal masz ten sam błąd „Ponieważ ja też mam ten problem”, sprawdź, który plik .jar, .aar lub moduł, który dodałeś, może być biblioteką używającą ndk, i która nie obsługuje wersji 8.0 (Oreo) +, podobnie używam biblioteki gniazd Microsoft SignalR, dodając jej pliki .jar, a następnie odkryłem, że aplikacja nie instaluje się w Oreo, a następnie usuwam tę bibliotekę, ponieważ obecnie nie ma rozwiązania na jej stronie git i idę po inną .

Więc sprawdź bibliotekę, której używasz i przeszukaj ją, jeśli chętnie jej potrzebujesz.

Sumit Kumar
źródło
1

Napotkałem ten problem po przejściu z Androida 7 (Nougat) na Androida 8 (Oreo).

Wypróbowałem kilka sposobów wymienionych powyżej i na moje nieszczęście nic nie działało.

Więc zmieniłem plik .apk na plik .zip, wyodrębniłem go i znalazłem folder lib, w którym ten plik był /x86_64/darwin/libscrypt.dylib, więc aby go usunąć, dodałem kod w module build.gradle poniżej sekcji Androida (tj. )

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

Pozdrawiam problem rozwiązany

Khan.N
źródło
1

W ogólnym przypadku, aby dowiedzieć się, która zależność biblioteki ma niekompatybilny ABI,

  • skompiluj plik APK w Android Studio (menu Kompiluj> Kompiluj pakiety / APK (y)> Kompiluj APK (y)) // aktualne na 01.04.2020
  • zmień nazwę pliku APK, zastępując rozszerzenie „apk” rozszerzeniem „zip”
  • rozpakuj plik zip do nowego folderu
  • przejdź do folderu libs
  • dowiedz się, które biblioteki * .jar z niekompatybilnymi ABI są dostępne

Możesz spróbować zaktualizować wersję / usunąć / zamienić te biblioteki, aby rozwiązać INSTALL_FAILED_NO_MATCHING_ABIS podczas instalacji problemu z apk

Denis Dmitrienko
źródło
0

To mi się przydarzyło. Sprawdziłem Menedżera SDK i powiedział mi, że ten, którego używam, ma aktualizację. Zaktualizowałem to i problem zniknął.

Barry Fruitman
źródło
0

Całkiem późno, ale właśnie na to wpadłem. To jest dla Xamarin.Android. Upewnij się, że nie próbujesz debugować w trybie wydania. Otrzymuję ten sam błąd, jeśli jestem w trybie zwolnienia i próbuję debugować. Po prostu przejście z wersji na debugowanie pozwoliło mojej poprawnie zainstalować.

Nieminen
źródło
0

W moim przypadku musiałem pobrać wersję aplikacji x86.

  1. Idź do https://www.apkmirror.com/
  2. Wyszukaj aplikację
  3. Wybierz pierwszy z listy
  4. Spójrz na górę strony, gdzie znajduje się [Nazwa firmy]> [Nazwa aplikacji]> [Numer wersji]
  5. Kliknij nazwę aplikacji
  6. Kliknij „Wszystkie warianty”
  7. Lista powinna zawierać wariant x86 do pobrania
Fidel
źródło
0

W moim przypadku ustawienie opcji obserwowania pomaga mi

wprowadź opis zdjęcia tutaj

Stefan Michev
źródło