Android multidex, UnatisfiedLinkError - Datei .so konnte nicht gefunden werden

8

Ich versuche, ein paar lib (.jar & amp; .so) zu meinem Multidex-Projekt in Android Studio hinzuzufügen.

Wenn ich nur ein paar Gläser zum Projekt hinzufüge, funktioniert alles gut. falls ich mehr und mehr Gläser (andere libs) hinzufüge Ich erhalte diesen Fehler:

%Vor%

irgendeine Idee, wie kann ich dem Compiler sagen, jar und so in demselben dex zu erzeugen?

    
Nimrod Borochov 30.11.2015, 16:15
quelle

2 Antworten

4

Wenn einige der zusätzlichen JARs native libries für armeabi-v7a enthalten, während Ihr libScanovatePassportAndIDLSDK_CPP.so nur für armeabi erstellt wurde, wird der Der Installer wird einen falschen Satz von Bibliotheken extrahieren. Der Fix besteht nicht darin, weitere Kopien von .so hinzuzufügen, sondern stattdessen die anderen ABIs zu entfernen. In Großbuchstaben können Sie Splits verwenden.

    
Alex Cohn 28.12.2015, 13:57
quelle
1

Dafür gibt es eine elegante Lösung. Wenn Ihre APK-Datei nicht alle nativen Bibliotheken in der 64-Bit-Version für eine bestimmte ABI-Datei enthält, müssen Sie nur sicherstellen, dass Ihre APK-Datei keine 64-Bit-Bibliotheken enthält. Hier ist das Tutorial, wie Sie Ihr Projekt konfigurieren, um dies zu beheben: Ссылка

Hintergrund Wenn Ihre App auf 64-Bit-ABI-Geräten installiert ist, überprüft der Paket-Manager die APK-Datei bei der Installation und sucht nach nativen 64-Bit-Bibliotheken. Wenn es den passenden nativen 64-Bit-Bibliotheksordner findet (Sie können den Ordner / libs in Ihrer APK-Datei überprüfen, wenn Sie ihn mit einem beliebigen Zip-Client öffnen), wird davon ausgegangen, dass alle nativen Bibliotheken in 64-Bit-Versionen verfügbar sind. Wenn eine oder mehrere native Bibliotheken in der 64-Bit-Version nicht verfügbar sind, kann der Paketmanager die 32-Bit-Version nicht laden. Wenn die App versucht, Code auszuführen, der auf diesen nativen Bibliotheken basiert, erhalten Sie diese UnatisfiedLinkError-Nachricht. Dies bedeutet, dass die 32-Bit-Version Ihrer Bibliothek

ist     
Simon-Droid 23.09.2016 11:01
quelle