前言全局说明
一、说明
1.1 环境:
Android 13
1.2 约定
$Android #代表Android源码根目录,就是有 build、system、vendor 那些目录的同级目录。
二、新建模块
2.1 新建模块文件夹
在 $Android 安卓根目录建立你想要的目录,这里以 custom_files 名字为例,文件夹名根据项目需要修改
cd $Android/
mkdir custom_files
2.2 创建 Android.mk 文件
编译时,会自动查找目录里 Android.mk 文件去编译,所以 Android.mk 文件名是固定的,不能用其他名字,如果有其他.mk需要编译,把.mk 添加到 Android.mk 文件中即可
cd $Android/custom_files/
touch Android.mk
2.3 添加内容到 Android.mk 文件
这里以增加一个 .txt 后缀文件到镜像为例
# 定义一个新的模块
include $(CLEAR_VARS)
LOCAL_MODULE := custom_files_module
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_PATH)/custom_files/
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_SUFFIX := .txt
include $(BUILD_PREBUILT)
LOCAL_SRC_FILES 指定了自定义文件所在的路径,
LOCAL_MODULE_SUFFIX 指定了自定义文件的后缀名。
更多变量说明:https://www.cnblogs.com/wutou/p/18631123
三、编译
3.1 生效编译环境
cd $Android/
source build/envsetup.sh
3.2 选择对应设备
lunch
根据提示选择你设备项
3.2 编译
make
或
make -j6
或
make -j$(nproc)
请确保当前路径位于 Android 项目的根目录下。如果首次编译,根据机器配置不同,可能需要几个小时。
-j后面是线程数,越多越多快,但最大数字和CPU内核数有关系
$(nproc) 是自定获取内核数量
四、编译完成
4.1 编译成功后,会自动放到 下面路径
out/target/product/<device>/system/etc/custom_file.txt
请将 <device> 替换为你的设备名称。就是lunch 选择数字时对应的字符。
以上是自动放置过程,也可以直接将文件放到 out/target/product/<device>/system/ 目录下,但是如果执行 make clean 后,放入文件就会被清理,下次还要手动放入
五、打包到 img 镜像文件中
将 out/target/product/<device>/system 的system目录内容打包到 system.img 文件中
make snod
有时make后,out/target/product/generic/system/没有需要添加文件,此时再make一次即可,速度很快
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.51cto.com/u_16175458/6945803
https://blog.csdn.net/whbsdu/article/details/8083610
https://blog.csdn.net/sunsonfly/article/details/13502993