如何让mmm命令跳过耗时的Droiddoc文档构建步骤?
我太懂这种小改动却要等好几分钟的烦躁了——Droiddoc确实是AOSP构建流程里的耗时大户,尤其是当你只是改了几行内部代码,却被迫重新生成整个API文档的时候。给你几个实用的优化方案:
直接跳过Droiddoc相关构建目标
如果你当前开发阶段不需要更新API文档,完全可以让构建系统跳过这些步骤。执行mmm时添加参数即可:mmm frameworks/base -j9 -Dskip-docs或者通过环境变量全局临时禁用:
export SKIP_DROIDDOC=true mmm frameworks/base -j9这能直接砍掉那些标注着
Docs droiddoc和test-api-stubs-docs Droiddoc的步骤,节省大部分等待时间。缩小构建范围到具体子模块
如果你只是修改了frameworks/base下某个特定子模块的代码(比如core/java/android/app/下的文件),没必要构建整个base模块,直接指定子模块路径:mmm frameworks/base/core/java/android/app -j9这样构建系统只会处理相关模块的代码,Droiddoc要么不触发,要么只处理极小范围的内容,耗时会大幅降低。
彻底禁用API检查+文档生成(开发调试专用)
如果你只是在本地调试代码,完全不需要维护API兼容性或生成文档,可以同时跳过API检查和Droiddoc:mmm frameworks/base -j9 -Dandroid.checkapi.disabled=true -Dskip-docsandroid.checkapi.disabled=true会关闭API兼容性检查,这部分流程有时候会和Droiddoc联动,一起禁用能进一步压缩构建时间。额外说明:为什么Droiddoc会触发?
一般来说,只有当你修改了public API相关的代码(比如方法签名、类的可见性)时,Droiddoc才会被触发。但有时候构建系统的依赖关系可能会误判,哪怕你改的是内部实现代码也会跑Droiddoc。这时候上面的跳过方法就格外有用了。
内容的提问来源于stack exchange,提问作者Don Hatch

