在Android源代码中添加预构建的二进制文件
我有一个本机二进制文件,我想将其包含在Android的源代码中,这样当我编译它时,我的二进制文件将包含在/system/bin中 我已将我的二进制文件复制到/prebuild/android arm/my binary文件夹中,并使用以下内容创建了一个新的android.mk:在Android源代码中添加预构建的二进制文件,android,android-source,android-build,Android,Android Source,Android Build,我有一个本机二进制文件,我想将其包含在Android的源代码中,这样当我编译它时,我的二进制文件将包含在/system/bin中 我已将我的二进制文件复制到/prebuild/android arm/my binary文件夹中,并使用以下内容创建了一个新的android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := my-binary LOCAL_MODULE := my-binary LOC
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)
target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
但当我运行make时,我在日志中得到的唯一参考是:
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)
target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
而且二进制文件根本没有安装到system.img中。在中有一个几乎相同的问题,但询问者已经知道基本程序,并且根本没有解释。如果我运行makemybinary,我会得到与我发布的相同的行
我还尝试运行make out/target/product/generic/system.img my binary,但它也不起作用。我的二进制文件显示在out子文件夹中,但不会包含在system.imng中
我错过什么了吗?有没有什么办法,只要运行make-j#我的二进制文件就可以包含在/system/bin中?刚刚在我的模拟器上测试过,它就可以工作了。我在这个文件夹中使用了gdbserver作为示例。我有一个针对android的strace交叉编译,并使用它嵌入到图像中。因此,说明将针对此可执行文件
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预编译snod-j4
(如果您已经编译了映像),或者您当然也可以使用make-j4
。如果您的二进制文件最终出现在out目录中,但不在映像中,这是因为您没有将二进制文件包含在映像中的规则
在device///device.mk
中(或在device.mk
包含的某些makefile中),您需要有两个条目之一:
PRODUCT_PACKAGES += my-binary
或:
。。。我建议采用产品包
方法<代码>产品拷贝文件更适合脚本和配置文件
注意:
PRODUCT\u-PACKAGES
使用模块名称,其中PRODUCT\u-COPY\u-FILES
使用二进制文件的实际名称/位置。您也可以使用以下适用于我的
.....
本地\模块\路径:=$(目标\输出\可选\可执行文件)
...
include$(BUILD\u EXECUTABLE)是的,我在同一个目录中使用了gdbserver中的Android.mk作为参考,但它在一些readon中不起作用。我要试试看,嗯;我马上回来。。。编辑:嗯,预建的snod-j工作了!我要做一个清理,看看是否从零开始重建所有东西也能正常工作…真的有一些奇怪的事情正在发生。。。在源代码上直接从repo运行make(不使用我的二进制代码)可以很好地编译。但当我添加二进制文件时,会出现奇怪的错误。最糟糕的是,即使我做了一个清理并取出了我的文件夹(这应该让源代码与开始时一样,因为我没有接触任何其他东西),当我试图编译它时,我仍然会得到编译错误。我正在释放空间并确保它与代码本身没有任何关系(我在VMware上运行Ubuntu 10.04),只需删除“out”文件夹即可清除。它不会将代码更改为defaoult。你能用你在编译过程中得到的错误更新你的答案吗。。。我从repo重新下载了源代码,并在没有ccache的情况下构建了它,并使用了纯make,没有任何-j4,它只是构建了。无论如何,它仍然不起作用;在模拟器上使用DDMS时,我的二进制文件没有出现在/system/bin中。这很奇怪。我在我的模拟器中看到这个文件-我刚刚检查过。