【Android源码 栏目提醒】:网学会员,鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“如何单独编译Android源代码中的模块 - 企业软件开发”一文,供大家参考学习!
如何单独编译
Android源代码中的模块 第一次下载好
Android源代码工程后我们通常是在
Android源代码工程目录下执行make命令经过漫长的等待之后就可以得到
Android系统镜像system.img了。
以后如果我们修改了
Android源代码中的某个模块或者在
Android源代码工程新增一个自己的模块是不是还是执行make命令呢答案是否定的Google为我们准备了另外的命令来支持编译单独的模块以及重新打包system.img的命令。
在继续学习
Android源代码之前就让我们先来看看这个命令吧。
一. 首先在
Android源代码目录下的build目录下有个脚本文件envsetup.sh执行这个脚本文件后就可以获得一些有用的工具 USER-NAMEMACHINE-NAME:/
Android . ./build/envsetup.sh 注意这是一个source命令执行之后就会有一些额外的命令可以使用 - croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. - cgrep: Greps on all local C/C files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/.xml files. - godir: Go to the directory containing a file. 这些命令的具体用法可以在命令的后面加-help来查看这里我们只关注mmm命令也就是可以用它来编译指定目录的所有模块通常这个目录只包含一个模块。
二. 使用mmm命令来编译指定的模块例如Email应用程序 USER-NAMEMACHINE-NAME:/
Android mmm packages/apps/Email/ 编译完成之后就可以在out/target/product/generic/system/app目录下看到Email.apk文件了。
Android系统自带的App都放在这具目录下。
另外
Android系统的一些可执行文件例如C编译的可执行文件放在out/target/product/generic/system/bin目录下动态链接库文件放在out/target/product/generic/system/lib目录下out/target/product/generic/system/lib/hw目录存放的是硬件抽象层HAL接口文件后面的文章里面我们会陆续提及到敬请关注。
三. 编译好模块后还要重新打包一下system.img文件这样我们把system.img运行在模拟器上时就可以看到我们的程序了。
USER-NAMEMACHINE-NAME:/
Android make snod 四. 参照Ubuntu上下载、编译和安装
Android最新源代码一文介绍的方法运行模拟器 USER-NAMEMACHINE-NAME:/
Android emulator 这样一切就搞定了。