这里发布的信息似乎有误。有些人报告如何清除Android构建器缓存(使用任务cleanBuildCache
),但他们似乎没有意识到该缓存是独立于Gradle的构建缓存的,据我所知。
我的理解是,Android的缓存早于(并启发)Gradle的缓存,但我可能是错的。无论Android构建器是否将更新为使用Gradle的缓存并退役自己的缓存,我不知道。
编辑:Android构建器缓存已过时并已被淘汰。Android Gradle插件现在使用Gradle的构建缓存。要控制此缓存,您现在必须与Gradle的通用缓存基础结构交互。
提示:在不提及关键字“android”的情况下在线搜索Gradle的缓存帮助,以获取当前相关的缓存帮助。
第二次编辑:由于tir38在下面的评论中提出的问题,我正在测试使用Android Gradle插件v3.4.2项目。 gradle缓存通过gradle.properties
中的org.gradle.caching=true
启用。我进行了几次clean build
,第二次大多数任务都显示FROM-CACHE
作为它们的状态,显示缓存正在工作。
令人惊讶的是,我有一个cleanBuildCache
gradle任务和一个<user-home>/.android/build-cache/3.4.2/
目录,两者都暗示着存在一个Android构建器缓存。
我执行了cleanBuildCache
命令,3.4.2/
目录消失了。接下来我进行了另一个clean build
操作:
- 没有任何变化:大多数任务的状态显示为
FROM-CACHE
,并且构建在启用了缓存的速度下完成。
3.4.2/
目录被重新创建。
3.4.2/
目录是空的(除了两个隐藏的、零长度的标记文件)。
结论:
- Gradle处理所有普通Android构建任务的缓存。
- 执行
cleanBuildCache
不会以任何方式清除或影响构建缓存。
- 仍然存在一个Android构建器缓存。这可能是Android构建团队忘记删除的陈旧代码,或者它实际上缓存了某些奇怪的东西,由于某种原因不能或无法转移到使用Gradle缓存。(在我看来,“无法”选项高度不可信。)
接下来,我通过从gradle.properties
中删除org.gradle.caching=true
来禁用Gradle缓存,并尝试了几次clean build
:
- 构建速度变慢了。
- 所有任务的状态都显示为执行而不是缓存或更新。
3.4.2/
目录仍然为空。
更多结论:
- 当Gradle缓存无法命中时,没有Android构建器缓存备用方案。
正如我之前所说,针对常见任务,Android构建器缓存确实已被取消。
相关的Android文档包含过时信息。特别地,缓存不会自动启用,需要手动启用Gradle缓存。
编辑3:用户tir38确认了Android构建器缓存已经过时,并已经被取消,在这里找到了证明。tir38也创建了此问题。谢谢!
./gradlew clean build --no-build-cache
的意思是强制进行项目构建,而不使用构建缓存。 - ams