当前的 JDK 1.8 版有一个错误,该错误会阻止 Room 进行增量操作

Bog*_*rac 17 android gradle kotlin kapt android-room

我们正在尝试缩短多模块 Android 应用程序的构建时间,并且已经达到了尝试启用增量 KAPT 注释处理编译的程度。

  • 安卓工作室版本: v3.5.2
  • 房间版本: v2.2.1
  • 摇篮版本: v5.4.6
  • 安卓 Gradle 插件版本: v3.5.2
  • 科特林版本: v1.3.50

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
Run Code Online (Sandbox Code Playgroud)

build.gradle(在每个使用 Room 的模块中):

kapt {
    arguments {
        arg("room.incremental", "true")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在尝试使用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).
Run Code Online (Sandbox Code Playgroud)

我试图在“项目结构”窗口中将 Open JDK 11 设置为项目的默认 JDK,但它不起作用,它抱怨它不是 JDK 8。任何想法这个设置有什么问题?

Don*_*oni 12

您将需要使用嵌入了 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)但它导致了这个问题。

  • 我已经在使用嵌入式 SDK,但那是 Java 8。所以它没有帮助。 (2认同)
  • 有关嵌入式 JDK 路径,请参阅 /sf/ask/3341005251/。(C:\Program Files\Android\Android Studio\jre) (2认同)