Android-Emulator - INSTALL_FAILED_NO_MATCHING_ABIS: Native Bibliotheken konnten nicht extrahiert werden, res=-113

apkWenn ich versuche, eine Datei über das Python-Skript zu installieren monkeyrunner, erhalte ich den Fehler INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113. Wie kann ich dieses Problem lösen?

Details des virtuellen Geräts sind wie folgt aufgeführt:

  • CPU/ARM: x86
  • API-Level: 24
  • Ziel: Android 7.0 (Google Play)
Sie versuchen, eine Arm-APK auf einer x86- (oder x64-) Architektur zu installieren, die fehlende Arm-Bibliotheken (libhoudini.so usw.) enthält, daher erhalten Sie den Fehler.
Wie kann ich also diese fehlenden Bibliotheken installieren? @xavier_fakerat

Antworten (1)

Wie hier erwähnt: INSTALL_FAILED_NO_MATCHING_ABIS bei der Installation von apk :

INSTALL_FAILED_NO_MATCHING_ABIS ist, wenn Sie versuchen, eine App zu installieren, die über native Bibliotheken verfügt und keine native Bibliothek für Ihre CPU-Architektur hat. 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 dies nicht

Um dies zu umgehen, müssen Sie diese Bibliotheken in /system/lib.

Dies ist durch die Verwendung von libhoudini.soBibliotheken möglich. Sie können Ihren Emulator rooten und die Bibliotheken über adb in /system/lib.

Sie finden die Bibliotheken hier und die Anweisungen werden ebenfalls gegeben.

Im Allgemeinen müssen Sie Folgendes tun:

  • Laden Sie ein komprimiertes Paket aus dem Internet herunter und extrahieren Sie es nach / system / lib / arm(oder / system / lib64, je nachdem, ob die Plattform 32-Bit oder 64-Bit ist). Download-Link für x86-Houdini-Bibliotheken

  • Zweitens, um das Verzeichnis /proc/sys/ fs/ binfmt_miscunter dem Namen "Register" in der Datei in einer Zeichenfolge geschrieben, um dem Linux-Kernel mitzuteilen, alle verwenden den ARM-Befehlssatz ausführbare und dynamische Bibliothek ELF. Die Datei wird mit dem houdini-Programm geöffnet, und alle ausführbaren ARM64-Befehlssatz- und dynamischen Bibliotheks-ELF-Dateien werden mit dem houdini64-Programm geöffnet (in der ausführlichen Erklärung von binfmt_misc können Sie sich auf Linux beziehen, wie Sie einen Programmtyp mit einem bestimmten Programm angeben öffnen (durch binfmt_misc )

  • /system/libSie können adb als root neu mounten und den arm-Ordner (mit houdini-Bibliotheken) wie folgt direkt in den Ordner verschieben :

    adb -e push C:\Users\User25\Desktop\houdini\arm /system/lib

    (Denken Sie daran, den richtigen Pfad und die entsprechenden Berechtigungen festzulegen.)

  • Eine andere zweite Option, die ich persönlich ausprobiert habe, besteht darin, ein AVD-Image mit bereits aktivierter nativer Armbrücke zu erhalten (falls Sie Probleme beim Rooten Ihres Emulators haben).

  • Holen Sie sich vorzugsweise das AVD von RemixOS Player oder Genymotion und extrahieren Sie die system.img, userdata.img, ramdisk.imgund andere Dateien wie build.propusw. und legen Sie sie in den Systemabbildordner Ihres Emulators (z. B. wenn die heruntergeladenen Bilder für ein x86-Avd sind, kopieren Sie sie in das Systemabbildverzeichnis Ihres Emulators und fügen Sie sie in den x86-Ordner der richtigen API-Ebene ein - so etwas wie \system-images\android-26\google_apis\x86und erstellen Sie darauf basierend ein AVD (dies ist nützlich, um nur Ihre Arm-Apps auf Ihrem x86-AVD zu testen).

    Sie sollten diesen Fehler überwinden, wenn alles fehlschlägt, verwenden Sie einfach einen Emulator mit Arm-Übersetzungstools.

Hinweis: Die verknüpfte Houdini-Datei ist nur eine tar-Datei, nicht .tar.gz (trotz des Namens). Verwenden Sie zum Entpacken "tar xvf file".
Danke, ich habe diesen Fehler erhalten, als ich versuchte, das APK meines Unity-Handyspiels auf einem v8.1.1-Emulator zu installieren. Ich ging zu „Player-Einstellungen“ -> „Player“ -> erweiterte „Andere Einstellungen“ und scrollte nach unten und aktivierte das Kontrollkästchen „x86 (Chrome OS)“ unter „Konfiguration“. Die einzigen Bilder, die ich in Android Studio für v8.1.1 herunterladen kann. sind x86 oder x86_64. Nachdem das APK mit diesem Häkchen erstellt wurde, funktionierte die Installation einwandfrei.
Dieser Link ist nicht mehr gültig translate.googleusercontent.com/…