So verwenden Sie 32-Bit-native Bibliotheken auf 64-Bit-Android-Gerät

Ich verwende eine native Bibliothek in meiner Anwendung, die nur für armeabi, armeabi-v7a und x86 kompiliert wird.

Wenn diese Bibliothek auf einem 64-Bit-Gerät wie dem Samsung S6 geladen wird, stürzt die Anwendung mit einem UnzufriedenenLinkError ab

  • Wie kann man Android App von Admob entfernen oder löschen?
  • Nicht unterstützte major.minor Version 52.0 beim Rendering in Android Studio
  • Verwalten von Remote-Service-Rückrufen
  • So stellen Sie Recurring AlarmManager ein, um Code täglich auszuführen
  • Wie kann ich sehen, welche Wakelocks aktiv sind
  • Warum muss ich nicht Adapter.notifyDataSetChanged () verwenden?
  • java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libfoo.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:989) 

    Die Bibliothek ist leider geschlossen Quelle. Gibt es irgendeine Möglichkeit, dies zu reparieren, ohne die Bibliothek mit 64-Bit-Targets neu zu kompilieren?

  • Generieren Sie den Namen des Pakets als Paketname in Android Studio
  • Verwenden eines Broadcast-Intent / Broadcast-Empfängers, um Nachrichten von einem Dienst an eine Aktivität zu senden
  • Wie finde ich alle unbenutzten Methoden meines Projektes in der Android Studio IDEA?
  • Wie funktioniert die Spracherkennung in Android?
  • Wie verstecke man die Aktie Aktion (die am meisten verwenden) Symbol in der Nähe der Anteil Aktion Anbieter?
  • Google Maps API v2 grauer Bildschirm
  • One Solution collect form web for “So verwenden Sie 32-Bit-native Bibliotheken auf 64-Bit-Android-Gerät”

    Wenn Sie eine APK auf Android installieren, sucht das System nach nativen Bibliotheksverzeichnissen (armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips64, mips) im lib Ordner der APK in der Reihenfolge, die von Build.SUPPORTED_ABIS bestimmt wird Build.SUPPORTED_ABIS .

    Wenn deine App ein arm64-v8a Verzeichnis mit fehlenden libs hat, werden die fehlenden libs nicht aus einem anderen Verzeichnis installiert, die libs sind nicht gemischt. Das bedeutet, dass Sie für jede Architektur den vollen Satz Ihrer Bibliotheken angeben müssen.

    Also, um dein Problem zu lösen, kannst du deine 64-Bit-Libs aus deinem Build entfernen oder abiFilters einstellen, um nur 32-Bit-Architekturen zu verpacken:

     android { .... defaultConfig { .... ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" } } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.