Android AOSP模块制作中如何加快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

我正在android开源项目中开发联系人应用程序。我的android版本是2.3.5_r1。使用mm制作模块,但制作速度非常慢,因此我怀疑是否有方法加快制作速度。
PS:事实上,如果我在eclipse中编译这个模块,我会加快一些速度,因为eclipse的自动构建特性。但是我不喜欢使用eclipse,所以放弃它。

例如,我使用Android项目根文件夹中的以下命令:

mmm frameworks/base snod -j4

我认为这是最好的选择。尝试一下,但用您的项目名称(存储Android.mk的相对路径)替换
frameworks/base

以最低成本为顺序:

  • 别把事情弄得那么干净。允许生成文件确定要重建的内容
  • 使用CCACHE
    导出使用\u CCACHE=1
    。你只可能在多次重建后看到CCACHE的效果。如果您的项目较大,请设置更高的CCACHE大小,例如10GB
    ${ANDROID_DIR}/prebuild/linux-x86/CCACHE/CCACHE-M 10G
  • 获得更好的处理器并使用更高的-j参数运行
1。构建模块+依赖项
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谷歌正在转向一个旨在加速增量构建的新版本。我希望文档也能得到更新


我发现,当我使用笔记本ssh连接到台式机并构建模块时,我可以非常快速地构建它。我不知道为什么。

并将CCACHE=1设置为启用缓存也可用于加快构建速度。这是值得怀疑的,因为CCACHE在计算机上保留了大量空间,如果您只构建一个项目,我看不到在启用此参数的情况下有任何合理的速度提高。这应该是a)AOSP指南上的可接受答案b)。您几乎拥有列表加快建设的各种方法。谢谢aultbot。如果您想加快整个AOSP而不仅仅是单个项目的重建速度,我会添加更多RAM 8-24GB。你也需要一个10-100GB的CCACHE(重建所有配置需要100个),用你的计算机构建整个AOSP需要多少时间。对于一个使用-j8的特定目标,不到半小时。处理器=i5-2500K,8GB内存对于我的电脑来说,它需要两到三个小时的时间。