如何加快AOSP模块制作的速度

时间:2011-11-24 02:59:05

标签: android compilation makefile android-source

我正在开发android开源项目的联系人应用程序。我的Android版本是2.3.5_r1。使用mm制作模块,但制作速度很慢,所以我怀疑是否有一种方法可以加快制作速度。

PS:其实如果我在eclipse中编译这个模块,我将加速垃圾,因为eclipse的自动构建功能。但是我不喜欢用eclipse工作所以放弃它。

4 个答案:

答案 0 :(得分:6)

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

mmm frameworks/base snod -j4

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

答案 1 :(得分:5)

为了您的成本最低:

  • 不要那么干净。允许makefile确定要重建的内容。
  • 使用CCACHE export USE_CCACHE=1。你很可能会在多次重建时看到CCACHE的影响。如果您的项目很大,则设置更高的CCACHE大小,例如10GB ${ANDROID_DIR}/prebuilt/linux-x86/ccache/ccache -M 10G
  • 获得更好的处理器并使用更高的-j参数运行

答案 2 :(得分:1)

1。构建模块+依赖项

mmmammm慢,因为前者确保模块满足所有依赖关系,如果不是,它也会编译它们。因此,最初而不是完整的make命令,使用以下内容构建有关您感兴趣的模块的依赖项:

mmma -j4 adir/yourmoduledir

2。构建模块

现在已经满足了依赖关系,请继续重新编译您感兴趣的模块。跳过检查依赖关系可以节省宝贵的时间。您使用的目录可能包含多个编译目标。要编译单个目标,请使用以下内容:

mmm -j4 adir/yourmoduledir:moduletargetname

实施例

构建libart

构建库及其所有依赖项一次
mmma -j4 art/runtime
修改libart的代码并快速构建它:
mmm -j4 art/runtime:libart

与Yury的方法相比,您将获得一半的编译时间,例如libartlibartd)的调试风格将被完全省略。

进一步加速?

您当然应按照aultbot的建议启用缓存。

此外,根据您感兴趣的模块,您可能希望通过在makefile中挖掘来禁用编译目标。例如,为主机和目标编译libart。如果修改makefile中的变量只能强制编译2中的一个,那么可以节省一半的时间。

其他信息:

答案 3 :(得分:0)

我发现,当我将笔记本电脑ssh用于台式计算机并构建模块时,可以非常快速地构建它。我不知道为什么。