Android源码编译指定模块的三种方法

实际开发中,并不需要每次都编译所有源代码,只需要编译自己修改的模块即可。Android的编译系统提供了强大的机制支持单独模块的编译,而且十分简单。Android提供三种方式用于编译单独模块:

1make 模块名

这种方法适合第一次编译,会把依赖模块一并编译。它需要在全部源代码中找到编译模块的Android.mk文件,并检查依赖模块是否有修改,因此编译时间较长。使用这种方法,我们只需要搜索源码目录下的Android.mk文件,找到模块名,然后指定给make即可。

1)编译应用层源码

对于应用层程序,需要查看Android.mk文件的LOCAL_PACKAGE_NAME变量。

例如,要编译Phone应用程序的源码,先查看PhoneAndroid.mk文件,在终端中运行以下命令:

$ cat packages/apps/Phone/Android.mk 

显示Android.mk的内容如下:

……(省略部分内容)  

LOCAL_PATH:= $(call my-dir)  

include $(CLEAR_VARS)  

LOCAL_MODULE := com.android.phone.common  

……(省略部分内容)  

LOCAL_PACKAGE_NAME := Phone 

……(省略部分内容) 

找到LOCAL_PACKAGE_NAME字段,其值便是我们需要得到的编译参数,即Phone。得到编译参数后,在终端中运行如下命令便可单独编译Phone模块及其依赖模块:

$make Phone 

2)编译框架层和系统运行库源码

对于框架层和系统运行库,需要查看LOCAL_MODULE变量。

frameworks包中的源码为例,在终端中运行以下命令:

$ find  frameworks -name Android.mk 

该命令将搜索frameworks目录下所有的Android.mk文件,列表如下:

frameworks/media/libvideoeditor/lvpp/Android.mk  

frameworks/media/libvideoeditor/osal/src/Android.mk  

frameworks/base/cmds/app_process/Android.mk  

……(省略其他部分) 

app_process为例,在终端中运行以下命令:

$ cat    frameworks/base/cmds/app_process/Android.mk  

显示Android.mk的内容如下:

LOCAL_PATH:= $(call my-dir)  

include $(CLEAR_VARS)  

LOCAL_MODULE:= app_process 

include $(BUILD_EXECUTABLE) 

LOCAL_MODULE变量的值便是我们要找的模块名。在终端中运行以下命令:

$make app_process 

2mmm命令

用于在源码根目录编译指定模块,参数为模块的相对路径。只能在第一次编译后使用。比如要编译Phone部分源码,需要在终端中执行以下命令:

$mmm packages/apps/phone 

3mm命令

用于在模块根目录编译这个模块。只能在第一次编译后使用。例如要编译Phone部分源码,需要在终端中执行以下命令:

$cd packages/apps/phone  

$mm 

注:mmmmm命令必须在执行“.build/envsetup.sh”之后才能使用,并且只编译发生变化的文件。如果要编译模块的所有文件,需要-B选项,例如mm  -B

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值