在Android源中添加预构建的二进制文件

zir*_*ion 7 android android-build android-source

我有一个本机二进制文件,我想将其包含在Android的源代码中,因此当我编译它时,我的二进制文件将包含在/ system/bin中.

我已经将我的二进制文件复制到文件夹/ p​​rebuilt/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)
Run Code Online (Sandbox Code Playgroud)

但是当我运行make时,我在日志中得到的唯一引用如下:

target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
Run Code Online (Sandbox Code Playgroud)

并且二进制文件根本没有安装到system.img中.在Android上安装预置二进制文件时有一个几乎完全相同的问题:"找不到",但提问者已经知道了基本程序,并且根本没有解释.如果我运行make my-binary,我会得到我发布的同一行.

我也试过运行make out/target/product/generic/system.img my-binary但它也不起作用.我的二进制文件显示在out子文件夹中,但它不会包含在system.imng中

我错过了什么吗?有没有办法让只运行make -j#我的二进制文件将包含在/ system/bin中?

Yur*_*ury 8

刚刚在我的模拟器上测试过,它正在运行.我在此文件夹中使用了gdbserver作为示例.我有一个针对Android的交叉编译strace并使用它嵌入到图像中.因此,指令将用于此可执行文件.

  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))
Run Code Online (Sandbox Code Playgroud)

使用指令构建:( mmm prebuilt snod -j4如果您已经构建了图像),或者您当然也可以使用make -j4.