1)编译指定Package
Android源码目录下的build/envsetup.sh文件,描述编译的命令
croot
切到Android源码树的根目录(当你深入Android源码树的子目录,想回到根目录的时候此命令就非常实用了)
m
相当于在源码树的根目录执行make,并且该命令不一定要在根目录下执行
mm
编译当前目录路径下的所有模块(包括include进来的,但是不包括存在依赖关系模块)
mma
编译当前目录路径下的所有模块(包括include进来的,且包括存在依赖关系模块)
编译frameworks/base需要使用该命令,否则编译失败。
mmm[module_path]
编译指定目录路径下的所有模块(包括include进来的,但是不包括存在存在依赖关系模块)
mmma[module_path]
编译指定目录路径下的所有模块(包括include进来的,包括存在存在依赖关系模块)
cgrep
对C/C++文件执行grep(即grep的时候只搜寻C/C++文件类型,注意这里也包括.h文件类型)
jgrep
对Java文件执行grep(即grep的时候只搜寻Java文件类型)
resgrep
在所有res/.xml文件上执行 grep即grep的时候只搜寻res/.xml文件类型)
printconfig
显示当前Android编译的相关配置信息
add_lunch_combo
在lunch命令的的菜单中添加一个条目
这里我们对上述表格中的不包括存在依赖关系模块::
1.依赖关系模块这个要怎么说呢,这里我们举个栗子!譬如模块A的编译需要依赖模块B,此时的B是一个so库。
2.假如我们通过mm或者mmm编译模块A的时候,此时B模块还没有编译那么此时就会报错
3.假如我们使用的是mma或者mmma编译模块A,假如依赖的模块B还没有编译,那么会先将模块B编译OK,然后编译模块A(当然这里只是举栗子,可能A还依赖C,D同理也会先编译)
要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境
下面举个例子说明,假设我要编译android下的packages/apps/Settings模块,当前目录为源码根目录,方法如下:
usera@usera-desktop:~/workspace$ source build/envsetup.sh
usera@usera-desktop:~/workspace$ mmm packages/apps/Settings/
...
Processing target/product/generic/obj/APPS/SettingsTests_intermediates/package.apk
Done!
Install: out/target/product/generic/data/app/SettingsTests.odex
Install: out/target/product/generic/data/app/SettingsTests.apk
make:离开目录“/home/usera/workspace”
或者
usera@usera-desktop:~/workspace$ source build/envsetup.sh
usera@usera-desktop:~/workspace$ cd packages/apps/Settings/
usera@usera-desktop:~/workspace/packages/apps/Settings$ mm
2)重新生成sysem.img
使用make snod,重新生成system.img
usera@usera-desktop:~/workspace$ make snod
make snod: ignoring dependencies
Target system fs image: out/target/product/generic/system.img
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)