升级到 Gradle 7 后,项目在 Android Studio 的本地 PC 上成功构建,但在 Gitlab 管道中没有。
Gradle 7.0.2 需要 Java 11。
Gitlab管道中的错误消息是
评估项目 ':app' 时出现问题。未能应用插件“com.android.internal.application”。Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8。您可以尝试以下一些选项: - 更改 IDE 设置。- 更改 JAVA_HOME 环境变量。-改变
org.gradle.java.home
。gradle.properties
(通过在命令提示符下从项目目录在本地计算机上执行以下命令来检查您的 gradle 版本)
.\gradlew --version
.gitlab-ci.yml: 原始完整的 .gitlab-ci.yml 脚本在 2018 年的这篇文章中进行了描述,该脚本适用于 Java 1.8(不适用于 Java 11)和 Gitlab 上的 gradle 4(不适用于 gradle 7):https: //about.gitlab.com/blog/2018/10/24/setting-up-gitlab-ci-for-android-projects/
在 Android Studio 的本地电脑上:从 Java 1.8 升级到 11
在 Android Studio 的本地电脑上,从 Java 1.8 升级到 11 需要 3 个步骤(并重新启动):
第 1 步:将 Android Studio 中的 Gradle 设置调整为 Java 11 或更高版本
(Arctic Fox 2020.3.1 补丁4:文件->设置->构建、执行、部署->构建工具->Gradle->Gradle JDK)
第 2 步:更新 JAVA_HOME 变量(Windows“编辑系统环境变量”[
将 JAVA_HOME 变量设置为与 Android Studio 中的相同
第 3 步:将 build.gradle 从 JavaVersion.VERSION_1_8 更新为 JavaVersion.VERSION_11
通过选择打开(在灯泡中或右上角)
重新启动,也可以在菜单项目结构中更改它。
.gitlab-ci.yml :从 Java 1.8 升级到 11
当基于新 gradle 版本 7.0.2 构建的代码被推送到 gitlab 时,原始 .gitlab-ci.yml 使用 Gradle 7.0.2 产生以下错误:
原始 gitlab.ci.yaml 的第一个错误
评估项目 ':app' 时出现问题。未能应用插件“com.android.internal.application”。Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8。您可以尝试以下一些选项: - 更改 IDE 设置。- 更改 JAVA_HOME 环境变量。-改变
org.gradle.java.home
。gradle.properties
从第 1 行更改 .gitlab-ci.yml 中的图像
image: openjdk:8-jdk
至
image: openjdk:11-jdk
产生了另一个错误:
$ 回声 y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null 线程 "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com. android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156) 在 com.android.repository.api.SchemaModule.(SchemaModule.java:75) 在 com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java :81) 在 com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) 在 com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) 原因:java。 lang.ClassNotFoundException:在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader 的 javax.xml.bind.annotation.XmlSchema。
我在这个问题上花了很多时间。
有什么建议么 ?