Roo*_*kie 4 linux android makefile prebuild android-source
我有glibc为arm编译,这与Android glibc或仿生C不同,因为我所遵循的glibc环境将有助于提供更多的api.现在我可以在Android运行时复制/ system /文件夹中的glibc环境,并且在执行chroot时我可以在glibc环境中运行我的程序.
目前我正在单独编译glibc和Android,然后将glibc和它复制到Android模拟器SD卡上,然后在/ system文件夹上解压缩然后在/ system/glibc上执行chroot
我分别编译glibc,然后将它放在Android源代码中.现在在编译Android源码时,我应该怎么做才能将glibc的整个预建文件夹结构复制到/ system文件夹并成为system.img的一部分.
有了这个,当我将system.img复制到Android模拟器并启动它时,glibc已经存在于/ system文件夹中,只需要在glibc环境中运行应用程序.
UPDATE
根据Yuri在他的回答中提到的(我创建了glibc文件夹并将所有内容复制到其中),当我编译代码时,我得到了输出.
build/core/main.mk:490: * Some files have been added to ALL_PREBUILT.
build/core/main.mk:491: *
build/core/main.mk:492: * ALL_PREBUILT is a deprecated mechanism that
build/core/main.mk:493: * should not be used for new files.
build/core/main.mk:494: * As an alternative, use PRODUCT_COPY_FILES in
build/core/main.mk:495: * the appropriate product definition.
build/core/main.mk:496: * build/target/product/core.mk is the product
build/core/main.mk:497: * definition used in all products.
build/core/main.mk:498: *
build/core/main.mk:499: * unexpected glibc in ALL_PREBUILT
build/core/main.mk:500: *
build/core/main.mk:501: * ALL_PREBUILT contains unexpected files. Stop.
Run Code Online (Sandbox Code Playgroud)
所以我在build/core/legacy_prebuilts.mk中添加了glibc
但后来我明白了
make: * No rule to make target mkdir', needed byout/target/product/generic/root/glibc'. Stop.
Run Code Online (Sandbox Code Playgroud)
最后,我以一种非常不寻常的方式做到了.
我有3个选择:
我采用的方法是在Android.mk文件中使用shell脚本.我使用了这样的:假设你有一个名为my_folder的文件夹,其中包含整个预建文件夹结构,需要将其复制到anddroid out文件夹,在my_folder中,我创建了Android.mk并在下面的文本中输入:
Run Code Online (Sandbox Code Playgroud)LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) $(shell mkdir -p $(TARGET_OUT)/my_folder/) $(shell cp -rf $(LOCAL_PATH)/* `pwd`/$(TARGET_OUT)/my_folder/)
这样,我在my_folder目录中的所有预先构建的文件和文件夹都被原样复制到android out中的system文件夹中.
我希望这可以帮助别人.
PRODUCT_COPY_FILES 必须放置在产品 mk 文件 (device/mydevice/..) 中,而不是模块文件 (Android.mk) 中。这里提到了这一点。
此格式用于复制目录:
PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,vendor/mydir,system/app)
Run Code Online (Sandbox Code Playgroud)
但此命令不适用于 apk 文件,并给出错误:
build/core/Makefile: *** 在 PRODUCT_COPY_FILES 中找到预构建的 apk:vendor/mydir/ray-system-ui-release.apk:system/app/ui-release.apk,请使用 BUILD_PREBUILT!停止。
| 归档时间: |
|
| 查看次数: |
7259 次 |
| 最近记录: |