前言
本文主要是摘抄关于Android的编译。虽然都用过,但偶尔还是记不住。摘抄于此,方便自己查阅。
正文
在Android源码目录下执行
source build/envsetup.sh
执行完上面的后
lunch 95
我这里是加载编译目标为95,具体看你选择选择编译目标。
如果不知道lunch哪一个,可以先执行lunch,后面会有选项让你选择哪个编译目标。
完整编译
make # 同时运行8个job,这样可以加快编译 make -j8
单独编译
这里以编译MediaProvider为例。
方式一
make 模块名
make MediaProvider
会把该模块依赖的其他模块也一起编译。
方式二
mmm 指定模块名的目录
比如
mmm packages/providers/MediaProvider
该命令将编译指定目录下的目标模块,而不编译它所依赖的模块。
所以,如果是初次编译,采用这种方式编译一个模块往往会报错。错误的原因是因为它依赖的模块没有被编译。
方式三
mm
这种事需要进入模块下目录,比如MediaProvider,需要进入packages/providers/MediaProvider目录下,然后执行mm即可。
它和mmm一样,只编译目标模块,mm和mmm命令编译的速度都很快。
注意事项
一般的编译方式都使用增量编译,即只编译发生变化的目标文件,但有时则需重新编译所有目标文件,那么就可使用make命令的-B选项。
例如make -B 模块名,或者mm -B、mmm -B,在mm和mmm内部,也是调用make命令的,而make的-B选项将强制编译所有目标文件。
参考文章
《
© 版权声明