我们正在尝试改善多模块Android应用的构建时间,并且已达到启用增量KAPT注释处理编译的地步。
gradle.properties:
org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true
kapt.incremental.apt=true
kapt.use.worker.api=true
kapt.include.compile.classpath=false
android.databinding.incremental=true
build.gradle(在使用Room的每个模块内部):
kapt {
arguments {
arg("room.incremental", "true")
}
}
但是,在尝试使用gradlew assemble -scan
命令对构建时间进行基准测试时,Gradle会引发以下错误:
warning: Current JDK version 1.8.0_201-b09 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.
ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1
[WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
我试图在“项目结构”窗口中将Open JDK 11设置为该项目的默认JDK,但是它不起作用,它抱怨说它不是JDK8。任何想法该设置有什么问题吗? / p>
答案 0 :(得分:3)
您将需要使用嵌入AS的JDK来解决此问题。确保使用上述AS 3.5。 在项目结构上-> SDK位置 确保jdk指向AS随附的jdk。 / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home 然后,您将需要重新启动AS。
如果从终端运行,请确保$ JAVA_HOME包含正确的路径。
我猜想Android Studio还不支持JDK 11。我还尝试使用最新的JDK 8(231,其中AS 3.5使用202),但它导致了此问题。
答案 1 :(得分:1)
编译时,它向我显示警告:
当前的JDK版本具有一个错误(https://bugs.openjdk.java.net/browse/JDK-8007720),该错误会阻止Room递增。考虑使用JDK 11+或Android Studio 3.5+附带的嵌入式JDK。注意:1使用以下代码编写了GeneratedAppGlideModule:[] [WARN]请求了增量注释处理,但是由于以下处理器不是增量处理器,因此禁用了支持:androidx .room.RoomProcessor(DYNAMIC)。
然后,我从Oracle网站下载了JDK 8(8u261)(它需要注册,因此请寻找直接链接)。
安装后,将JAVA_HOME
系统变量更改为新路径:
然后重新编译该应用程序。甚至不需要重启。
更新
一个月后,我再次看到了同样的警告。然后阅读接受的答案和found嵌入Android Studio的Java:C:\ Program Files \ Android \ Android Studio \ jre。
File > Project Structure...
,然后是SDK Location
,并在字段JDK location
中写下了该路径。重新启动AS。
答案 2 :(得分:0)
为我的外壳将$JAVA_HOME
设置为/Applications/AndroidStudio.app/Contents/jre/jdk/Contents/Home
对我有帮助。
答案 3 :(得分:0)
转到项目结构 > SDK 位置,然后转到 Gradle 设置。