Efi*_* MK 5 android gradle kotlin android-gradle-plugin dagger-2
我想使用新的kotlin gradle插件功能并缓存我的构建结果,有关更多信息,请阅读this。增强构建的另一种方法是缓存kapt任务,但默认情况下未启用
因为Gradle尚无法映射注释处理器的输入和输出
根据dagger 2您的经验,我唯一的kapt依赖项是否可以安全缓存?
缓存 Kapt 任务的输出被认为不安全的原因是注释处理器包含可能不符合确保正确缓存的一项或多项要求的任意代码:
转换应仅使用任务输入,不应考虑其他任何内容。默认情况下,任务输入包括源、编译类路径、Android 布局、编译器和注释处理器选项和实现以及其他一些内容,但您可以根据需要注册其他输入。
违反此规则会导致错误的缓存命中,因为注释处理器使用的某些输入没有被跟踪,并且这些输入的更改没有反映在 Gradle 计算的缓存键中,从而导致运行任务时发生命中实际上会产生不同的输出。
注释处理器生成的所有输出都应作为任务输出进行跟踪,这些输出默认生成 Java 和 Kotlin 源以及生成的二进制类。如果任务产生其他任何内容,您可以手动将其注册为构建脚本中的任务输出。
不遵循此规则将使一些生成的输出离开缓存,不保存它们,因此不加载它们。
注释处理器应该是纯粹的,也就是说,给定相同的输入,它应该产生相同的输出。它不应显示随机行为或使用系统时间。
缓存不遵循此规则的注释处理器的输出是徒劳的,因为它通常会导致缓存未命中或错误的缓存命中。
据我所知,Dagger 2 遵循这些规则,并且缓存其输出应该可以正常工作,尽管我无法对此提供保证。不管怎样,请随意尝试并看看缓存如何为您的构建工作。
如果您遇到特定注释处理器的任何问题,而该注释处理器应该根据上述规则处理缓存,请将其报告给Kotlin 问题跟踪器。
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |