前言

本文主要是摘抄关于Android编译。虽然都用过,但偶尔还是记不住。摘抄于此,方便自己查阅。

主要涉及makemmmmm等。

正文

在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选项将强制编译所有目标文件。

参考文章

  1. 笔记二–Android的编译

相关文章

暂无评论

none
暂无评论...