Próbowałem zainstalować moją aplikację na urządzeniu wirtualnym Intel L Preview Intel Atom, błąd nie powiódł się:
INSTALL_FAILED_NO_MATCHING_ABIS
Co to znaczy?
Próbowałem zainstalować moją aplikację na urządzeniu wirtualnym Intel L Preview Intel Atom, błąd nie powiódł się:
INSTALL_FAILED_NO_MATCHING_ABIS
Co to znaczy?
Odpowiedzi:
INSTALL_FAILED_NO_MATCHING_ABIS
jest, 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ć.
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:
W sekcji „Obsługiwane architektury” zaznacz następujące elementy:
zapisać
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 .
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
(yourapp)-x86-debug.apk
pliku w wynikach mojego projektu.
Jeśli korzystasz z Genymotion, musisz zainstalować ARM Translation i GApps
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]
Wiem, że było tu wiele odpowiedzi, ale wersja TL; DR jest taka (jeśli używasz Xamarin Studio):
Options
Android Build
Advanced
zakładkix86
/ armeabi-v7a
/armeabi
)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.
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.
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
}
}
}
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'
}
}
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
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ć,
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.
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
W ogólnym przypadku, aby dowiedzieć się, która zależność biblioteki ma niekompatybilny ABI,
Możesz spróbować zaktualizować wersję / usunąć / zamienić te biblioteki, aby rozwiązać INSTALL_FAILED_NO_MATCHING_ABIS podczas instalacji problemu z apk
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ął.
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ć.
W moim przypadku musiałem pobrać wersję aplikacji x86.