当前 JDK 版本 1.8 存在阻止 Room 增量的错误
Current JDK version 1.8 has a bug that prevents Room from being incremental
我们正在努力缩短我们的多模块 Android 应用程序的构建时间,并且我们已经达到了尝试启用增量 KAPT 注释处理编译的地步。
- Android工作室版本:v3.5.2
- 房间版本: v2.2.1
- Gradle版本:v5.4.6
- Android Gradle 插件版本: v3.5.2
- Kotlin 版本: 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
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 设置为 Project Structure window 中项目的默认值 JDK,但它没有用,它抱怨它不是 JDK 8. 知道这个设置有什么问题吗?
您将需要使用嵌入 AS 的 JDK 来解决这个问题。确保使用上面的 AS 3.5。
在项目结构上 -> SDK 位置
确保 jdk 指向随 AS 一起提供的 jdk。
/Applications/Android工作室。app/Contents/jre/jdk/Contents/Home
然后你需要重启你的AS。
如果您从终端 运行 确保 $JAVA_HOME 包含正确的路径。
我猜 Android studio 还不支持 JDK 11。我还尝试使用最新的 JDK 8(231,使用 202 的 AS 3.5),但它导致了这个问题。
编译的时候提示我一个警告:
Current JDK version 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+.Note: 1 Wrote GeneratedAppGlideModule with: [][WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
然后我从Oracle站点下载了JDK8(8u261)(需要注册,直接找link)。
已安装,将 JAVA_HOME
系统变量更改为新路径:
然后重新编译应用程序。甚至不需要重新启动。
更新
一个月后我再次看到同样的警告。然后阅读接受的答案和 Java 嵌入 Android Studio:C:\Program Files\Android\Android Studio\jre
.
File > Project Structure...
,然后 SDK Location
,然后在字段 JDK location
中写下该路径。重新启动 AS。
为我的 shell 将 $JAVA_HOME
设置为 /Applications/AndroidStudio.app/Contents/jre/jdk/Contents/Home
帮助了我。
转到项目结构 > SDK 位置,然后Gradle 设置。
使用房间 2.2.5
而不是 2.2.6
kapt "androidx.room:room-compiler:2.2.5"
implementation "androidx.room:room-runtime:2.2.5"
implementation "androidx.room:room-ktx:2.2.5"
我们正在努力缩短我们的多模块 Android 应用程序的构建时间,并且我们已经达到了尝试启用增量 KAPT 注释处理编译的地步。
- Android工作室版本:v3.5.2
- 房间版本: v2.2.1
- Gradle版本:v5.4.6
- Android Gradle 插件版本: v3.5.2
- Kotlin 版本: 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
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 设置为 Project Structure window 中项目的默认值 JDK,但它没有用,它抱怨它不是 JDK 8. 知道这个设置有什么问题吗?
您将需要使用嵌入 AS 的 JDK 来解决这个问题。确保使用上面的 AS 3.5。 在项目结构上 -> SDK 位置 确保 jdk 指向随 AS 一起提供的 jdk。 /Applications/Android工作室。app/Contents/jre/jdk/Contents/Home 然后你需要重启你的AS。
如果您从终端 运行 确保 $JAVA_HOME 包含正确的路径。
我猜 Android studio 还不支持 JDK 11。我还尝试使用最新的 JDK 8(231,使用 202 的 AS 3.5),但它导致了这个问题。
编译的时候提示我一个警告:
Current JDK version 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+.Note: 1 Wrote GeneratedAppGlideModule with: [][WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
然后我从Oracle站点下载了JDK8(8u261)(需要注册,直接找link)。
已安装,将 JAVA_HOME
系统变量更改为新路径:
然后重新编译应用程序。甚至不需要重新启动。
更新
一个月后我再次看到同样的警告。然后阅读接受的答案和 C:\Program Files\Android\Android Studio\jre
.
File > Project Structure...
,然后 SDK Location
,然后在字段 JDK location
中写下该路径。重新启动 AS。
为我的 shell 将 $JAVA_HOME
设置为 /Applications/AndroidStudio.app/Contents/jre/jdk/Contents/Home
帮助了我。
转到项目结构 > SDK 位置,然后Gradle 设置。
使用房间 2.2.5
而不是 2.2.6
kapt "androidx.room:room-compiler:2.2.5"
implementation "androidx.room:room-runtime:2.2.5"
implementation "androidx.room:room-ktx:2.2.5"