Unity无法构建并显示android的gradle错误

问题描述

我正在Mac上使用Unity,并试图在Android上构建游戏。 该项目在iOS上运行良好,这是我第一次尝试在Android上进行构建。 我遇到2个错误-它们似乎与gradle有关。

Gradle Failed to fetch dependencies.

Failed to run '/Applications/MAMP/htdocs/BQvF/BQ/Temp/PlayServicesResolverGradle/gradlew --no-daemon -b "/Applications/MAMP/htdocs/BQvF/BQ/Temp/PlayServicesResolverGradle/PlayServicesResolver.scripts.download_artifacts.gradle" "-PANDROID_HOME=/Applications/Unity/Hub/Editor/2020.1.2f1/PlaybackEngines/Androidplayer/SDK" "-PTARGET_DIR=/Applications/MAMP/htdocs/BQvF/BQ/Assets/Plugins/Android" "-PMAVEN_REPOS=" "-PPACKAGES_TO_copY=com.android.support:support-v4:25.3.1;com.android.support:appcompat-v7:25.3.1;com.android.support:cardview-v7:25.3.1;com.android.support:customtabs:25.3.1;com.parse.bolts:bolts-android:1.4.0;com.facebook.android:facebook-core:[7.1.0,8);com.facebook.android:facebook-applinks:[7.1.0,8);com.facebook.android:facebook-login:[7.1.0,8);com.facebook.android:facebook-share:[7.1.0,8);com.facebook.android:facebook-gamingservices:[7.1.0,8)" "-PUSE_JETIFIER=0" "-PDATA_BINDING_VERSION=3.6.0"'
stdout:

stderr:
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
    at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43)
    
FAILURE: Build Failed with an exception.

* What went wrong:
Could not create an instance of type org.gradle.initialization.DefaultSettings_Decorated.
> Could not initialize class org.codehaus.groovy.reflection.ReflectionCache

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD Failed in 2s

第二个错误

Unable to determine which Android packages are installed.
Failed to run '/Applications/Unity/Hub/Editor/2020.1.2f1/PlaybackEngines/Androidplayer/SDK/tools/bin/sdkmanager --list --verbose'
stdout:

stderr:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
    at com.android.repository.api.SchemaModule$SchemaModuLeversion.<init>(SchemaModule.java:156)
    at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
    at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
    at com.android.sdklib.tool.sdkmanager.sdkmanagerCli.main(sdkmanagerCli.java:73)
    at com.android.sdklib.tool.sdkmanager.sdkmanagerCli.main(sdkmanagerCli.java:48)
Caused by: java.lang.classNotFoundException: javax.xml.bind.annotation.XmlSchema
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.classLoader.loadClass(ClassLoader.java:522)
    ... 5 more

exit code: 1

解决方法

您是否安装了NDK?统一转到首选项,检查您是否具有NDK的路径,我将提供有关如何构建apk的教程的链接。 您可以查看该检查是否正确地完成了所有操作 https://youtu.be/j0L3SDYyMJI

,

要解决此问题,我做了两件事:

  1. 将Gradle更新为5.5.1,并且
  2. Unity无法识别我安装的新Java。所以我删除了所有JDK,然后只安装了1.8

像魅力一样工作

,

如果您在项目设置 -> 播放器 -> 发布设置中使用自定义密钥库,请在两个字段中输入您的密码。 然后转到 Assets -> External Dependency Manager -> Android Resolver -> Force Resolve。