【问题标题】:Unity Android build keeps failing when at the Gradle phase no matter what I do无论我做什么,Unity Android 构建在 Gradle 阶段都会失败
【发布时间】:2019-11-27 01:26:30
【问题描述】:

由于某种原因,这个几个月前编译得很好的应用程序在 gradle 阶段失败了。完整的错误日志在此;

    CommandInvokationFailure: Gradle build failed. 
 C:/Program Files/Unity/Hub/Editor/2019.2.9f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Users\Buccura\Documents\gradle-6.0.1\lib\gradle-launcher-6.0.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

 stderr[
 C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:10: error: class MyService is public, should be declared in a file named MyService.java
 public class MyService extends Service {
        ^
 C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:7: error: package android.support.annotation does not exist
 import android.support.annotation.Nullable;
                                  ^
 C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:13: error: cannot find symbol
     @Nullable
      ^
   symbol:   class Nullable
   location: class MyService
 3 errors

 FAILURE: Build failed with an exception.

 * What went wrong:
 Execution failed for task ':compileReleaseJavaWithJavac'.
 > Compilation failed; see the compiler error output for details.

 * 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 1m 24s
 ]
 stdout[
 > Task :preBuild UP-TO-DATE
 > Task :GooglePlayGamesManifest.plugin:preBuild UP-TO-DATE
 > Task :GooglePlayGamesManifest.plugin:preReleaseBuild UP-TO-DATE
 > Task :GooglePlayGamesManifest.plugin:checkReleaseManifest
 > Task :GooglePlayGamesManifest.plugin:processReleaseManifest
 > Task :preReleaseBuild
 > Task :GooglePlayGamesManifest.plugin:compileReleaseAidl NO-SOURCE
 > Task :compileReleaseAidl NO-SOURCE
 > Task :GooglePlayGamesManifest.plugin:packageReleaseRenderscript NO-SOURCE
 > Task :compileReleaseRenderscript NO-SOURCE
 > Task :checkReleaseManifest
 > Task :generateReleaseBuildConfig
 > Task :prepareLintJar
 > Task :generateReleaseSources
 > Task :GooglePlayGamesManifest.plugin:compileReleaseRenderscript NO-SOURCE
 > Task :GooglePlayGamesManifest.plugin:generateReleaseBuildConfig
 > Task :GooglePlayGamesManifest.plugin:generateReleaseResValues
 > Task :GooglePlayGamesManifest.plugin:generateReleaseResources
 > Task :GooglePlayGamesManifest.plugin:packageReleaseResources
 > Task :GooglePlayGamesManifest.plugin:generateReleaseRFile
 > Task :GooglePlayGamesManifest.plugin:prepareLintJar
 > Task :GooglePlayGamesManifest.plugin:generateReleaseSources
 > Task :GooglePlayGamesManifest.plugin:javaPreCompileRelease
 > Task :GooglePlayGamesManifest.plugin:compileReleaseJavaWithJavac
 > Task :GooglePlayGamesManifest.plugin:bundleLibCompileRelease
 > Task :javaPreCompileRelease
 > Task :mainApkListPersistenceRelease
 > Task :generateReleaseResValues
 > Task :generateReleaseResources
 > Task :mergeReleaseResources
 > Task :createReleaseCompatibleScreenManifests
 > Task :processReleaseManifest
 > Task :processReleaseResources

 > Task :compileReleaseJavaWithJavac FAILED

 Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
 Use '--warning-mode all' to show the individual deprecation warnings.
 See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warnings
 22 actionable tasks: 22 executed
 ]
 exit code: 1
 UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1[T] progress, System.String error) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <24d9b022aa584914af833273ea899103>:0)
 Rethrow as GradleInvokationException: Gradle build failed
 UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <24d9b022aa584914af833273ea899103>:0)
 Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
 UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message, System.Exception ex) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (UnityEditor.BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <24d9b022aa584914af833273ea899103>:0)
 UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:281)
 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:179)

我可以尝试调试什么?

【问题讨论】:

    标签: android unity3d gradle compiler-errors compilation


    【解决方案1】:

    1) 您可以尝试更改为内部构建而不是 Gradle 构建。
    2)你的环境改变了。环境包括:

    • 您安装了另一个 Android SDK 副本
    • 您安装了新版本的 Unity 编辑器并打开了此项目

    【讨论】:

      【解决方案2】:

      Gradle 中列出了您的代码中的多个问题。

      stderr [] 块会告诉您出了什么问题以及 Gradle 无法同步或构建的原因。

      错误error: class MyService is public, should be declared in a file named MyService.java

      这意味着您有一个与MyService.java 名称不同的文件(在本例中为notificationService.java)。将 notificationService.java 重命名为 MyService.java

      公共 Java 类必须位于以它们命名的文件中

      错误error: package android.support.annotation does not exist import android.support.annotation.Nullable;

      表示您尚未在 Jar 解析器的 mainTemplate.gradleDependencies.xml 中添加 annotations

      然后添加库

      app/build.gradle

      // dependencies
      com.android.support:support-annotations:+
      

      错误error: cannot find symbol @Nullable ^ symbol: class Nullable location: class MyService

      这与之前的错误有关。表示您需要Annotations support library 来构建此类。

      错误是从这部分实现的:

      stderr[
      C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:10: error:class MyService is public, should be declared in a file named MyService.java public class MyService extends Service { ^ 
      C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:7: error: package android.support.annotation does not exist import android.support.annotation.Nullable; ^ 
      C:\Users\Buccura\Documents\Unity\NemexiaMobile\MOBILE\Code - Copy (2)\Temp\gradleOut\src\main\java\notificationService.java:13: error: cannot find symbol @Nullable ^ symbol: class Nullable location: class MyService 3 errors
      

      【讨论】:

      • 这就是我的 maintemplater.gradle 的样子。我究竟会把注解:+ 放在哪里? // 由统一生成。删除此评论以防止再次导出时覆盖 buildscript { repositories {ARTIFACTORYREPOSITORY google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.0'
      • BUILD_SCRIPT_DEPS} } allprojects { repositories {ARTIFACTORYREPOSITORY google() jcenter() flatDir { dirs 'libs' } } } // Android Resolver Repos开始 ([rootProject] + (rootProject.subprojects as List)).each { ext { it.setProperty("android.useAndroidX", true) it.setProperty("android.enableJetifier", true) } }
      • ([rootProject] + (rootProject.subprojects as List)).each { project -> project.repositories { def unityProjectPath = "file:///**DIR_UNITYPROJECT**" maven { url " maven.google.com" } maven { url (unityProjectPath + "/Assets/GooglePlayGames/Editor/m2repository") // Assets/GooglePlayGames/Editor/GooglePlayGamesPluginDependencies.xml:11 } mavenLocal() jcenter() mavenCentral() } }
      • 还有很多,但这是第一位。如果有帮助,我可以发布其余的。
      猜你喜欢
      • 2021-09-21
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 2012-08-11
      • 2015-06-16
      • 2020-11-18
      相关资源
      最近更新 更多