我正在开发android开源项目的联系人应用程序。我的Android版本是2.3.5_r1。使用mm制作模块,但制作速度很慢,所以我怀疑是否有一种方法可以加快制作速度。
PS:其实如果我在eclipse中编译这个模块,我将加速垃圾,因为eclipse的自动构建功能。但是我不喜欢用eclipse工作所以放弃它。
答案 0 :(得分:6)
例如,我使用Android项目的根文件夹中的以下命令:
mmm frameworks/base snod -j4
我认为这是最好的选择。尝试使用项目名称(存储Android.mk的相对路径)替换frameworks/base
。
答案 1 :(得分:5)
为了您的成本最低:
export USE_CCACHE=1
。你很可能会在多次重建时看到CCACHE的影响。如果您的项目很大,则设置更高的CCACHE大小,例如10GB ${ANDROID_DIR}/prebuilt/linux-x86/ccache/ccache -M 10G
答案 2 :(得分:1)
mmma
比mmm
慢,因为前者确保模块满足所有依赖关系,如果不是,它也会编译它们。因此,最初而不是完整的make
命令,使用以下内容构建有关您感兴趣的模块的依赖项:
mmma -j4 adir/yourmoduledir
现在已经满足了依赖关系,请继续重新编译您感兴趣的模块。跳过检查依赖关系可以节省宝贵的时间。您使用的目录可能包含多个编译目标。要编译单个目标,请使用以下内容:
mmm -j4 adir/yourmoduledir:moduletargetname
mmma -j4 art/runtime
修改libart的代码并快速构建它:
mmm -j4 art/runtime:libart
与Yury的方法相比,您将获得一半的编译时间,例如libart
(libartd
)的调试风格将被完全省略。
您当然应按照aultbot
的建议启用缓存。
此外,根据您感兴趣的模块,您可能希望通过在makefile中挖掘来禁用编译目标。例如,为主机和目标编译libart
。如果修改makefile中的变量只能强制编译2中的一个,那么可以节省一半的时间。
查看aosp中过时的构建指南: build/core/build-system.html
N-Preview谷歌正在切换到new build system,旨在加快增量构建。我希望文档也能得到更新。
答案 3 :(得分:0)
我发现,当我将笔记本电脑ssh用于台式计算机并构建模块时,可以非常快速地构建它。我不知道为什么。