【问题标题】:Why is my Gradle Failing on my Unity Android Build?为什么我的 Gradle 在我的 Unity Android 版本上失败?
【发布时间】:2019-12-11 08:59:58
【问题描述】:

我曾经使用“内部”选项来构建我的 Android 版本,但在 Unity 2019 中没有选项。

在尝试构建我的 Android 版本时,我收到以下错误:

D8:程序类型已存在: android.support.annotation.FractionRes UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

FAILURE:构建失败并出现异常。 * 什么地方出了错: 任务“:transformClassesAndResourcesWithR8ForRelease”执行失败。 com.android.tools.r8.CompilationFailedException:编译未能完成 * 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。 * 在https://help.gradle.org 获得更多帮助 19 秒内构建失败

任务:preBuild UP-TO-DATE

任务:extractProguardFiles

任务:CropLib:preBuild UP-TO-DATE

任务:CropLib:preReleaseBuild UP-TO-DATE

任务:CropLib:checkReleaseManifest

任务:CropLib:processReleaseManifest

任务:Firebase:preBuild UP-TO-DATE

任务:Firebase:preReleaseBuild UP-TO-DATE

任务:Firebase:checkReleaseManifest

任务:Firebase:processReleaseManifest

任务:preReleaseBuild

任务:CropLib:compileReleaseAidl NO-SOURCE

任务:Firebase:compileReleaseAidl NO-SOURCE

任务:compileReleaseAidl NO-SOURCE

任务:CropLib:packageReleaseRenderscript NO-SOURCE

任务:Firebase:packageReleaseRenderscript NO-SOURCE

任务:compileReleaseRenderscript NO-SOURCE

任务:checkReleaseManifest

任务:generateReleaseBuildConfig

任务:prepareLintJar

任务:generateReleaseSources

任务 :CropLib:compileReleaseRenderscript NO-SOURCE

任务:CropLib:generateReleaseBuildConfig

任务:CropLib:generateReleaseResValues

任务:CropLib:generateReleaseResources

任务:CropLib:packageReleaseResources

任务:CropLib:generateReleaseRFile

任务:CropLib:prepareLintJar

任务:CropLib:generateReleaseSources

任务:CropLib:javaPreCompileRelease

任务:CropLib:compileReleaseJavaWithJavac

任务:CropLib:bundleLibCompileRelease

任务:Firebase:compileReleaseRenderscript NO-SOURCE

任务:Firebase:generateReleaseBuildConfig

任务:Firebase:generateReleaseResValues

任务:Firebase:generateReleaseResources

任务:Firebase:packageReleaseResources

任务:Firebase:generateReleaseRFile

任务:Firebase:prepareLintJar

任务:Firebase:generateReleaseSources

任务:Firebase:javaPreCompileRelease

任务:Firebase:compileReleaseJavaWithJavac

任务:Firebase:bundleLibCompileRelease

任务:javaPreCompileRelease

任务:mainApkListPersistenceRelease

任务:generateReleaseResValues

任务:generateReleaseResources

任务:mergeReleaseResources

任务:createReleaseCompatibleScreenManifests

任务:processReleaseManifest

/Users/spin/Desktop/Yellows Unity App - Android

2019/Temp/gradleOut/src/main/AndroidManifest.xml:24:9-31:50 警告: activity#com.google.firebase.auth.internal.FederatedSignInActivity@android:launchMode 在 AndroidManifest.xml:24 处被标记以替换其他声明,但不存在其他声明 警告:删除资源 com.Yellows.Monthly:string/save 而不需要默认值。

任务:processReleaseResources 任务:compileReleaseJavaWithJavac 任务:compileReleaseSources 任务:CropLib:prepareLintJarForPublish 任务:Firebase:prepareLintJarForPublish 任务:lintVitalRelease 任务:mergeReleaseShaders 任务:compileReleaseShaders 任务:generateReleaseAssets 任务:CropLib:mergeReleaseShaders 任务:CropLib:compileReleaseShaders 任务:CropLib:generateReleaseAssets 任务:CropLib:packageReleaseAssets 任务:Firebase:mergeReleaseShaders 任务:Firebase:compileReleaseShaders 任务:Firebase:generateReleaseAssets 任务:Firebase:packageReleaseAssets 任务:mergeReleaseAssets 任务:validateSigningRelease 任务:signingConfigWriterRelease 任务:processReleaseJavaRes NO-SOURCE 任务:CropLib:processReleaseJavaRes 无源 任务:CropLib:bundleLibResRelease 任务:Firebase:processReleaseJavaRes 无源 任务:Firebase:bundleLibResRelease 任务:transformResourcesWithMergeJavaResForRelease 任务:CropLib:bundleLibRuntimeRelease 任务:CropLib:mergeReleaseConsumerProguardFiles 任务:Firebase:bundleLibRuntimeRelease 任务:Firebase:mergeReleaseConsumerProguardFiles 任务:transformClassesAndResourcesWithR8ForRelease 失败 R8 是新的 Android 代码压缩器。如果您遇到任何问题,请在以下位置提交错误 https://issuetracker.google.com,使用“Shrinker (R8)”作为组件名称。你可以 通过使用 'android.enableR8=false' 更新 gradle.properties 来禁用 R8。 当前版本是:1.4.77(从 go/r8bot (luci-r8-ci-archive-0-eqqf) 构建 b74371231cb896b02f83285efb055b7c00ff64d8)。 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。 使用“--warning-mode all”显示各个弃用警告。 见https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings 55 个可操作的任务:55 个已执行 CommandInvokationFailure:Gradle 构建失败。 /Applications/Unity/Hub/Editor/2019.2.0f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS/bin/java -classpath "/Applications/Unity/Hub/Editor/2019.2.0f1/PlaybackEngines/AndroidPlayer/Tools/gradle/ lib/gradle-launcher-5.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

标准错误[ D8:程序类型已经存在:android.support.annotation.FractionRes

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':transformClassesAndResourcesWithR8ForRelease' 执行失败。

    com.android.tools.r8.CompilationFailedException:编译失败

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 通过https://help.gradle.org获得更多帮助

在 19 秒内构建失败 ] 标准输出[

任务:preBuild UP-TO-DATE 任务:提取ProguardFiles 任务:CropLib:preBuild UP-TO-DATE 任务:CropLib:preReleaseBuild UP-TO-DATE 任务:CropLib:checkReleaseManifest 任务:CropLib:processReleaseManifest 任务:Firebase:preBuild UP-TO-DATE 任务:Firebase:preReleaseBuild UP-TO-DATE 任务:Firebase:checkReleaseManifest 任务:Firebase:processReleaseManifest 任务:preReleaseBuild 任务:CropLib:compileReleaseAidl 无源 任务:Firebase:compileReleaseAidl NO-SOURCE 任务:compileReleaseAidl NO-SOURCE 任务:CropLib:packageReleaseRenderscript 无源 任务:Firebase:packageReleaseRenderscript 无源 任务:compileReleaseRenderscript 无源 任务:checkReleaseManifest 任务:generateReleaseBuildConfig 任务:准备LintJar 任务:generateReleaseSources 任务:CropLib:compileReleaseRenderscript 无源 任务:CropLib:generateReleaseBuildConfig 任务:CropLib:generateReleaseResValues 任务:CropLib:generateReleaseResources 任务:CropLib:packageReleaseResources 任务:CropLib:generateReleaseRFile 任务:CropLib:prepareLintJar 任务:CropLib:generateReleaseSources 任务:CropLib:javaPreCompileRelease 任务:CropLib:compileReleaseJavaWithJavac 任务:CropLib:bundleLibCompileRelease 任务:Firebase:compileReleaseRenderscript 无源 任务:Firebase:generateReleaseBuildConfig 任务:Firebase:generateReleaseResValues 任务:Firebase:generateReleaseResources 任务:Firebase:packageReleaseResources 任务:Firebase:generateReleaseRFile 任务:Firebase:prepareLintJar 任务:Firebase:generateReleaseSources 任务:Firebase:javaPreCompileRelease 任务:Firebase:compileReleaseJavaWithJavac 任务:Firebase:bundleLibCompileRelease 任务:javaPreCompileRelease 任务:mainApkListPersistenceRelease 任务:生成ReleaseResValues 任务:generateReleaseResources 任务:mergeReleaseResources 任务:createReleaseCompatibleScreenManifests

任务:processReleaseManifest /Users/spin/Desktop/Yellows Unity App - Android 2019/Temp/gradleOut/src/main/AndroidManifest.xml:24:9-31:50 警告: activity#com.google.firebase.auth.internal.FederatedSignInActivity@android:launchMode 在 AndroidManifest.xml:24 处被标记以替换其他声明,但不存在其他声明 警告:删除资源 com.Yellows.Monthly:string/save 而不需要默认值。

任务:processReleaseResources 任务:compileReleaseJavaWithJavac 任务:compileReleaseSources 任务:CropLib:prepareLintJarForPublish 任务:Firebase:prepareLintJarForPublish 任务:lintVitalRelease 任务:mergeReleaseShaders 任务:compileReleaseShaders 任务:generateReleaseAssets 任务:CropLib:mergeReleaseShaders 任务:CropLib:compileReleaseShaders 任务:CropLib:generateReleaseAssets 任务:CropLib:packageReleaseAssets 任务:Firebase:mergeReleaseShaders 任务:Firebase:compileReleaseShaders 任务:Firebase:generateReleaseAssets 任务:Firebase:packageReleaseAssets 任务:mergeReleaseAssets 任务:validateSigningRelease 任务:signingConfigWriterRelease 任务:processReleaseJavaRes NO-SOURCE 任务:CropLib:processReleaseJavaRes 无源 任务:CropLib:bundleLibResRelease 任务:Firebase:processReleaseJavaRes 无源 任务:Firebase:bundleLibResRelease 任务:transformResourcesWithMergeJavaResForRelease 任务:CropLib:bundleLibRuntimeRelease 任务:CropLib:mergeReleaseConsumerProguardFiles 任务:Firebase:bundleLibRuntimeRelease 任务:Firebase:mergeReleaseConsumerProguardFiles

任务:transformClassesAndResourcesWithR8ForRelease FAILED R8 是新的 Android 代码压缩器。如果您遇到任何问题,请在以下位置提交错误 https://issuetracker.google.com,使用“Shrinker (R8)”作为组件名称。你可以 通过使用 'android.enableR8=false' 更新 gradle.properties 来禁用 R8。 当前版本是:1.4.77(从 go/r8bot (luci-r8-ci-archive-0-eqqf) 构建 b74371231cb896b02f83285efb055b7c00ff64d8)。

此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。 使用“--warning-mode all”显示各个弃用警告。 见https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings 55 个可操作的任务:55 个已执行 ] 退出代码:1 UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at :0) UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (在 :0) UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (在 :0) UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action1[T] progress, System.String error) (at <8277255796414cc8b8865316c1676de5>:0) UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action1[T] 进度) (在 :0) 重新抛出 GradleInvokationException:Gradle 构建失败 UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] 进度) (在 :0) UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute(UnityEditor.Android.PostProcessor.PostProcessorContext 上下文)(在 :0) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTask​​s (UnityEditor.Android.PostProcessor.PostProcessorContext 上下文) (在 :0) 作为 BuildFailedException 重新引发:引发了“UnityEditor.Build.BuildFailedException”类型的异常。 UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild(System.String 标题,System.String 消息,System.Exception ex)(在 :0) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTask​​s (UnityEditor.Android.PostProcessor.PostProcessorContext 上下文) (在 :0) UnityEditor.Android.PostProcessAndroidPlayer.PostProcess(UnityEditor.BuildTarget 目标,System.String stagingAreaData,System.String stagingArea,System.String playerPackage,System.String installPath,System.String companyName,System.String productName,UnityEditor.BuildOptions 选项,UnityEditor。 RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport 报告)(在 :0) UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (在 :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 报告)(在 /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:281) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

构建完成,结果为“失败”

UnityEditor.BuildPlayerWindow+BuildMethodException: 114 错误 在 UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer(UnityEditor.BuildPlayerOptions 选项)[0x00242] 在 /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:190 在 UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x0007f] 在 /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:95 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

【问题讨论】:

    标签: android firebase unity3d gradle build


    【解决方案1】:

    您似乎多次包含符号android.support.annotation.FractionRes(请参阅this)。

    我的第一个猜测是您曾经分解 JAR,而现在它们只是包含在您的 gradle 文件中。您可能需要清除 Assets/Plugins/Android(尤其是如果它充满了 jar 文件)并在之后强制运行播放服务解析器。见this

    我的第二个猜测是,这与 June 中对 androidx 迁移 Firebase 的支持库有关。在这种情况下,您可以采取一些措施来解决问题。

    首先,确保您拥有 latest(目前为 6.5.0)Unity SDK。早在 7 月,updates were made 就专门解决了这类问题。

    接下来,查看您的播放服务解析器设置并确保选择了 Patch mainTemplate.gradleUse Jetifier。特别是如果您确实有 mainTemplate.gradle 文件,这将有助于解决一些问题。

    我已经写了一些关于 Play Services Resolver here 的信息,我也在上面链接了这些信息。

    我希望这里有帮助!

    --帕特里克

    【讨论】:

    • 我发现了问题。解决后我有这两个文件:'android-support-v4','com.android.support.support-v4-26.1.0'。当我删除“android-support-v4”时,我可以构建并运行 apk。问题是 CamerShot Unity 插件需要“android-support-v4”才能运行。任何想法现在该怎么做? (如果您下载 CameraShot,您会看到它带有 'android-support-v4'。但是解析器将 com.android.support.support-v4-26.1.0 添加到我的项目中)
    • 我不知道相机拍摄如何修补 Gradle 文件。如果您可以禁用它的进程,我建议您在 Dependencies.xml 文件中编写依赖项,如下所述:link.medium.com/uHkAbEvGj0
    • 我已经联系了 Camerashot 开发者,不过非常感谢您的帮助。
    【解决方案2】:

    com.android.support:support-annotations:26.1.0 应该只在包中存在一次:

    implementation ("com.android.support:support-v4:26.1.0") {
        exclude group: "com.android.support", module: "support-annotations"
    }
    

    【讨论】:

    • 是的。但是有一个使用“android-support-v4”的相机组件。所以我有这两个库 'com.android.support.support-v4-26.1.0' - 他们冲突。 Firebase 使用 com.android.support.support-v4-26.1.0。我在清单 android:name="android.support.v4.content.FileProvider" 中看到相机的引用。也许我可以更新清单以反映 com.android.support.support-v4-26.1.0?
    • 这是清单:
    【解决方案3】:
    • 出了什么问题:任务 ':transformClassesAndResourcesWithR8ForRelease'.FAILED 执行失败

    如果您在 progaurd-project 文件中使用以下行,请注释它们并再次生成发布版本。
    -injars bin/类 -injars 库

    【讨论】:

    • 您好,感谢您的回复。您能否进一步澄清...我不明白。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2021-02-22
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多