Android源码创建新模块加入源码自动编译

Android源码添加新的模块

1.前言
我们在源码中添加新的模块的时候,并不是说你简单编写好模块的Android.mk之后就完事儿了,你在全编译的时候,输入make命令之后,等编译之后你会发现你新加的模块并没有加入到源码的自动编译之中,这是为什么呢?后面详细说明。
2.原因
这是因为你没有告诉系统你的模块需要参加编译,就像你不告诉别人我喜欢你,她永远也不会知道一样,一定要主动告诉她。
好的,那通过如何告诉“她”呢?那就需要了解Android源码的编译规则,我在上篇博客中有简单提到,这边就相当于对它的一个补充吧。
3.方法
方法大体有两种,一种是在android源码的原生的mk文件PRODUCT_PACKAGES宏中添加你的模块,还有一种是在你的Android.mk文件中加入一个ALL_DEFAULT_INSTALLED_MODULES宏变量。
对于方法一,android系统默认的PRODUCT_PACKAGES的变量配置mk文件一般存在于build/target/product下,此外和自己hardware平台相关的模块需求一般是定义到device目录下的product.mk或者device.mk文件中,定位到PRODUCT_PACKAGES这个变量,往后面加就行了。
对于方法二,我们可以在自定义的mk文件中添加这一行:
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)
4.原理
对于第一种方式原理不提了,第二种的话需要提一下
我们到源码路径的 /build/core/main.mk
找到下面的target:

.PHONY: files
files: prebuilt \
        $(modules_to_install) \
        $(INSTALLED_ANDROID_INFO_TXT_TARGET)

这个变量$(modules_to_install),从名字上可以看到这个是会被install的,那意思是会被加进变量的宏控制变量,继续往下跟踪这个变量的源头,会发现:

modules_to_install := $(sort \
    $(ALL_DEFAULT_INSTALLED_MODULES) \
    $(product_FILES) \
    $(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \
    $(call get-tagged-modules, shell_$(TARGET_SHELL)) \
    $(CUSTOM_MODULES) \
  )

4.注意
注意m/mm/mmm的区别,根据build源码看规则差异。
好了后面再写吧,没时间了,有兴趣的童鞋可以自己研究一下。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android源码编译的命令包括以下几个步骤: 1. 在Android源码根目录下执行build/envsetup.sh脚本,该脚本用于设置Android编译环境。\[1\] 2. 使用lunch命令选择要编译的目标。\[1\] 3. 使用make命令编译整个Android系统。\[1\] 此外,还有一些其他的编译命令可以使用: - 使用m命令对整个Android源代码进行编译,它是对make命令的简单封装。\[2\] - 使用mm命令对Android源码中的指定模块进行编译,它也是通过make命令来实现的。\[2\] - 使用mmm命令对Android源码中的指定模块进行编译,与mm命令类似,但需要指定Android.mk文件的相对路径。\[2\]\[3\] 综上所述,编译Android源码的常用命令包括build/envsetup.sh、lunch和make,而m、mm和mmm命令是对make命令的封装,用于更方便地编译Android源码或指定模块。 #### 引用[.reference_title] - *1* [android平台的三个编译命令----make,mm,mmm](https://blog.csdn.net/xiangyuxiangyu123/article/details/54098153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Android源代码编译命令m/mm/mmm/make分析【转载】](https://blog.csdn.net/weixin_30411997/article/details/95102327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值