【发布时间】:2021-07-29 22:10:12
【问题描述】:
随着 Android Studio 4.2 和 AGP 4.2.0 的发布,我们现在可以在 android 项目中使用 Java 11。我确实更新了所有内容以指向 Java 11,但编译失败。如果我把JavaVersion.VERSION_1_8 放回去,它会起作用。
所有编译错误都在数据绑定(?或视图绑定)生成的类中,并抱怨找不到 android 类或包。而且我已经尝试了很多东西,没有任何效果,JAVA_HOME指向java11,工作室中的JDK指向java11并且仍然:
some_module:compileDebugJavaWithJavac FAILED
../DataBinderMapperImpl.java:3: error: package android.util does not exist
import android.util.SparseArray;
^
../DataBinderMapperImpl.java:4: error: package android.util does not exist
import android.util.SparseIntArray;
.. error: package android.view does not exist
那么,我有什么
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
./gradlew -version 返回:
------------------------------------------------------------
Gradle 6.8.3
------------------------------------------------------------
Build time: 2021-02-22 16:13:28 UTC
Revision: 9e26b4a9ebb910eaa1b8da8ff8575e514bc61c78
Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.2 (Oracle Corporation 11.0.2+9)
OS: Mac OS X 10.15.7 x86_64
java -version 返回
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
javac -version 返回
javac 11.0.2
非常感谢任何帮助, 谢谢!
【问题讨论】:
-
“我们现在有能力在 android 项目中使用 Java 11”我不这么认为 - 你基于什么理由做出这个假设?
-
@laalto developer.android.com/studio/preview/features 但是,OP 正在谈论使用 AGP 4.2.0,所以也许他应该尝试升级到 7.0。
-
Android Studio 4.2 附带捆绑的 JDK 11 - developer.android.com/studio/releases/…。 AGP 4.2.0 也应该根据他们的新页面支持 Java 11。
-
我读到的是 AGP 4.2 工具需要 JDK 11 并与之捆绑,但 Android 代码本身是 Java 8。AGP 7.0 是另一回事。
-
我认为这只有在 AGP 7.0 及更高版本上才有可能。 developer.android.com/studio/preview/…
标签: java android android-studio kotlin android-gradle-plugin