Android AOSP模块制作中如何加快mm
我正在android开源项目中开发联系人应用程序。我的android版本是2.3.5_r1。使用mm制作模块,但制作速度非常慢,因此我怀疑是否有方法加快制作速度。Android AOSP模块制作中如何加快mm,android,compilation,makefile,android-source,Android,Compilation,Makefile,Android Source,我正在android开源项目中开发联系人应用程序。我的android版本是2.3.5_r1。使用mm制作模块,但制作速度非常慢,因此我怀疑是否有方法加快制作速度。 PS:事实上,如果我在eclipse中编译这个模块,我会加快一些速度,因为eclipse的自动构建特性。但是我不喜欢使用eclipse,所以放弃它。例如,我使用Android项目根文件夹中的以下命令: mmm frameworks/base snod -j4 我认为这是最好的选择。尝试一下,但用您的项目名称(存储Android.mk
PS:事实上,如果我在eclipse中编译这个模块,我会加快一些速度,因为eclipse的自动构建特性。但是我不喜欢使用eclipse,所以放弃它。例如,我使用Android项目根文件夹中的以下命令:
mmm frameworks/base snod -j4
我认为这是最好的选择。尝试一下,但用您的项目名称(存储Android.mk的相对路径)替换
frameworks/base
。以最低成本为顺序:
- 别把事情弄得那么干净。允许生成文件确定要重建的内容
- 使用CCACHE
。你只可能在多次重建后看到CCACHE的效果。如果您的项目较大,请设置更高的CCACHE大小,例如10GB导出使用\u CCACHE=1
${ANDROID_DIR}/prebuild/linux-x86/CCACHE/CCACHE-M 10G
- 获得更好的处理器并使用更高的-j参数运行
mmma
比mmm
慢,因为前者确保满足模块的所有依赖项,如果不满足这些依赖项,它也会编译它们。因此,首先,不要使用完整的make
命令,而是使用以下命令构建与您感兴趣的模块相关的依赖项:
mmma -j4 adir/yourmoduledir
2.构建模块
既然满足了依赖关系,就继续重新编译您感兴趣的模块。跳过依赖项检查可以节省宝贵的时间。但是,您正在使用的目录可能包含多个编译目标。要编译单个目标,请使用以下方法:
mmm -j4 adir/yourmoduledir:moduletargetname
例子
建立图书馆
一次生成库及其所有依赖项:
mmma -j4 art/runtime
修改libart的代码并快速构建:
mmm -j4 art/runtime:libart
与Yury的方法相比,您将获得一半的编译时间,例如,libart
(libartd
)的调试风格将被完全省略
进一步加速?
当然,您应该按照aultbot
的建议启用缓存
此外,根据您感兴趣的模块,您可能希望通过在makefile中挖掘来禁用某些编译目标。例如,为主机和目标编译libart
。如果修改makefile中的变量,则可以强制编译2个变量中的一个,从而节省一半的时间
其他信息:
- 在aosp中签出过时的构建指南:
- N-Preview谷歌正在转向一个旨在加速增量构建的新版本。我希望文档也能得到更新