Hinzufügen von ein vorkompiliertes binary in Android-Quelle
Habe ich eine native Binärdatei, die ich einschließen möchten, in den Android-source-code, so dass ich beim kompilieren meiner binary wird in /system/bin .
Habe ich kopiert meine binary in den Ordner /prebuilt/android-arm/meine-binary , und ich habe eine neue Android.mk mit den folgenden:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := my-binary
LOCAL_MODULE := my-binary
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)
Aber wenn ich machen, die einzige Referenz die ich im log ist folgende:
target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
Und die binary nicht installiert in das system.img-bei allen. Es gibt eine fast identische Frage in Installieren eines vorkompilierten binary auf Android: "nicht gefunden" , aber der Fragesteller bereits wusste, dass die grundlegenden Verfahren und es ist nicht erklärt, auf alle. Wenn ich machen mein binären, bekomme ich die gleiche Zeile, die ich gepostet.
Habe ich auch versucht zu laufen machen out/target/product/generic/system.img-mein-binary aber es funktioniert auch nicht. Meine binäre zeigt sich in der aus Unterordner, aber es wird nicht ins system.imng
Bin ich etwas fehlt? Gibt es eine Möglichkeit, so dass mit nur mit make-j# mein binary wird in /system/bin ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gerade getestet auf meinem emulator und es funktioniert. Ich als Beispiel verwendet gdbserver in diesem Ordner. Ich habe ein strace crosscompiled für android und verwenden Sie es, um eingebettet werden in das Bild. So, die Anweisungen für diese ausführbare Datei.
Add Android.mk-Datei mit dem folgenden Inhalt:
Bauen mit der Anweisung:
mmm prebuilt snod -j4
(wenn Sie Bilder, die bereits gebaut) oder Sie können, natürlich, verwenden Siemake -j4
als gut.wenn Ihr binäre landet im out-Verzeichnis, aber nicht im Bild ist, es ist, weil Sie nicht haben in der Regel enthalten die Binär-in das Bild.
in
device/<vendorname>/<devicename>/device.mk
(oder in einigen makefile enthalten, die vondevice.mk
) müssen Sie einen der beiden Einträge:oder:
... Ich würde vorschlagen, die
PRODUCT_PACKAGES
Ansatz;PRODUCT_COPY_FILES
ist besser geeignet, um Skripts und Konfigurationsdateien.HINWEIS:
PRODUCT_PACKAGES
verwendet den Namen des Moduls, woPRODUCT_COPY_FILES
verwendet den tatsächlichen Namen/Speicherort der binären.Können Sie auch die folgende, die für mich funktioniert
.....
LOCAL_MDULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
...
include $(BUILD_EXECUTABLE)