Android AGP 4.2.0 + Java 11编译失败

5
随着Android Studio 4.2和AGP 4.2.0的发布,我们现在可以在Android项目中使用Java 11。我已经将所有内容更新以指向Java 11,但编译失败。如果我将JavaVersion.VERSION_1_8回退,它就能工作。
所有编译错误都出现在数据绑定(? 或视图绑定)生成的类中,并且抱怨找不到Android类或包。我已经尝试了很多方法,但没有一种方法能够解决问题。JAVA_HOME 指向 Java 11,Studio 中的 JDK 也指向 Java 11,但仍然提示: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

非常感谢任何帮助,谢谢!


3
我们现在有能力在Android项目中使用Java 11。我不这么认为 - 您基于什么假设呢? - laalto
@laalto https://developer.android.com/studio/preview/features。然而,OP正在谈论使用AGP 4.2.0,因此他可能应该尝试升级到7.0。 - Michael
Android Studio 4.2附带了JDK 11 - https://developer.android.com/studio/releases/gradle-plugin#4.2-bundled-jdk-11。根据他们的新功能页面,AGP 4.2.0也应该支持Java 11。 - Nick Titov
3
我的理解是,AGP 4.2 需要 JDK 11,并随附于其,但 Android 代码本身是 Java 8。而 AGP 7.0 则不同。 - laalto
2
我认为这只有在AGP 7.0及更高版本才可能实现。https://developer.android.com/studio/preview/features#android_gradle_plugin_70 - Alireza Farahani
1个回答

1
你应该升级到 Android Studio Arctic Fox | 2020.3.1 版本以使用 Java 11,并将编译选项设置为:
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11

如果你正在使用Kotlin,也要。
kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接