Ich habe versucht, meinem Android-Build ein vorgefertigtes APK hinzuzufügen. Das APK enthält mehrere gemeinsam genutzte Bibliotheken (* .so-Dateien). Es kompiliert ohne Probleme, aber ich bekomme immer noch einen Fehler von der App, der anzeigt, dass die Bibliotheken nicht gefunden werden können.
Warum könnte das sein?
Hier ist der Code android.mk
:
libx, y, z sind meine libx.so, liby.so und libz.so
Ich habe auch versucht, das .so manuell vom APK in die out lib Verzeichnisse zu kopieren, aber es hat nicht funktioniert.
Ich kompiliere mit Android 4.1.2 für Galaxy Nexus Maguro.
BUILD_PREBUILT
ruft prebuild.mk
script auf. Die Beschreibung dieses Skripts lautet wie folgt:
Standardregeln zum Kopieren von Dateien, die vorkompiliert sind
Es sagt nicht, dass die Anwendung installiert wird. Ich denke, deshalb kann Ihre Anwendung die Bibliotheken nicht finden.
Die Lösung besteht darin, Bibliotheken aus dem Paket zu extrahieren und sie getrennt von der Anwendung zu kopieren. Die Details dazu finden Sie hier .
Ich hatte dieses Problem selbst. Der Grund dafür ist, dass wenn APK-Dateien in einem Build enthalten sind, sie den Installationsprozess im Wesentlichen umgehen. Dieser Installationsprozess ist der Punkt, an dem alle gemeinsam genutzten Bibliotheken aus der Apk extrahiert und an der entsprechenden Stelle abgelegt werden. Ergo, wenn dies niemals geschieht, werden die Bibliotheken nicht verfügbar sein. Dies liegt daran, dass Pakete, die während des AOSP-Builds aus der Quelle erstellt werden, entweder bereits vordefinierte gemeinsame Bibliotheken enthalten oder ihre Bibliotheken ebenfalls aus der Quelle erstellt werden. In jedem Fall werden diese Bibliotheken an der entsprechenden Stelle eingefügt.
Aus diesem Grund sollten Sie zusätzlich zum apk-Modul selbst folgendes in derselben .mk-Datei hinzufügen:
%Vor%Fügen Sie dann Folgendes hinzu:
%Vor% Dateien können auch in aospSource:destinationOnImage
format wie folgt in device-partial.mk
angegeben werden, wenn ein benutzerdefiniertes Herstellerverzeichnis hinzugefügt wird:
Sie können hier so ziemlich alles hinzufügen, was Ihnen gefällt (außer .apk-Dateien), und es wird in Ihr Bild kopiert.
In meinen Anweisungen geht es nicht um deinen Fehler! Aber es kann für ähnliche Fehler hilfreich sein
Wenn Sie versuchen, vorgefertigte apk zu kopieren, verwenden Sie:
%Vor%und Sie erhalten diesen Fehler:
%Vor% Sie können diese Überprüfung entfernen, die Datei build/core/MakeFile
ändern und diese Zeilen kommentieren:
durch Einfügen von #
vor jeder Zeile
Tags und Links android apk android-ndk android-source