Добавление готового двоичного файла в исходный код Android

У меня есть собственный двоичный файл, который я хочу включить в исходный код Android, чтобы при компиляции мой двоичный файл был включен в / system / bin.

Я скопировал свой бинарный файл в папку / prebuilt / android-arm / my-binary и создал новый Android.mk со следующим:

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)

Но когда я запускаю make, единственная ссылка, которую я получаю в журнале:

target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)

И бинарный файл вообще не установлен в system.img. При установке готового бинарного файла на Android есть почти идентичный вопрос : "не найден", но спрашивающий уже знал основную процедуру, и она вообще не объясняется. Если я запускаю make my-binary, я получаю ту же строку, что и я.

Я также попытался запустить make out / target / product / generic / system.img my-binary, но он тоже не работает. Мой бинарный файл отображается в подпапке out, но он не будет включен в system.imng

Я что-то пропустил? Есть ли способ, чтобы при запуске make -j# мой бинарный файл был включен в /system/bin?

3 ответа

Только что протестировал на моем эмуляторе и он работает. Я использовал в качестве примера gdbserver в этой папке. У меня есть страйк кросс-компиляция для Android и использовать его для встраивания в изображение. Итак, инструкции будут для этого исполняемого файла.

  1. Создайте папку в папке prebuilt / android-arm / strace
  2. Положи туда свой бинарный файл (в моем случае strace)

Добавьте файл Android.mk со следующим содержимым:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := strace
LOCAL_MODULE := strace
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)


prebuilt_files :=

$(call add-prebuilt-files, EXECUTABLES, $(prebuilt_files))

Сборка с инструкцией: mmm prebuilt snod -j4 (если у вас уже есть изображения) или вы, конечно, можете использовать make -j4 также.

Если ваш двоичный файл попадает в каталог out, но не в образ, это потому, что у вас нет правила для включения двоичного файла в образ.

в device/<vendorname>/<devicename>/device.mk (или в некотором make-файле, включенном device.mk) вам нужно иметь одну из двух записей:

PRODUCT_PACKAGES += my-binary

или же:

PRODUCT_COPY_FILES += path/to/my-binary:/root/target/path/to/my-binary

... я бы предложил PRODUCT_PACKAGES подход; PRODUCT_COPY_FILES лучше подходит для скриптов и конфигурационных файлов.

НОТА: PRODUCT_PACKAGES использует имя модуля, где PRODUCT_COPY_FILES использует фактическое имя / местоположение двоичного файла.

Вы также можете следующее, что работает для меня..... LOCAL_MDULE_PATH:= $(TARGET_OUT_OPTIONAL_EXECUTABLES) ... include $(BUILD_EXECUTABLE)

Другие вопросы по тегам