首页 > 解决方案 > FileNotFoundException: Temp\gradleOut\build\outputs\bundle\release\gradleOut.aab 不存在

问题描述

您好,我正在使用统一 2018.4.33f1。我在这里提到https://developers.google.com/ar/develop/unity/android-11-build#unity_20193_and_20194将 gradle 版本从 3.4.0 升级到 3.6.0 。当我构建 apk 时,它可以完美运行。对于 google Playstore,我需要 .aab 文件,对于 .aab 文件,它显示错误,我不想恢复 gradle 版本

FileNotFoundException: Temp\gradleOut\build\outputs\bundle\release\gradleOut.aab 不存在 System.IO.File.Move (System.String sourceFileName, System.String destFileName) (at :0) UnityEditor.Android.PostProcessor.Tasks .BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext 上下文) (在 <267278aa48b840c7a0e7281223ea050e>:0) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTask​​s (UnityEditor.Android.PostProcessor.PostProcessorContext 上下文) (在 <267278aa48b840c07a0e728) UnityEditorea52a0e721 .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 report) (at <267278aa48b840c7a0e7281223ea050e>:0) UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <267278aa48b840c7a0e7281223ea050e>: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 报告)(在 C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:288) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (在 C:/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:1

标签: unity3dandroid-gradle-plugin

解决方案


我在这里遇到了同样的问题。

我检查了 gradle 3.4.3 是否允许使用 <queries> 元素进行构建,但它在 armv7 设备中有很多 ANR,所以现在我正在尝试 gradle 3.6.x,正如文档所述(我使用 3.6.4 而不是 3.6.x)。 0 因为它可能有一些修复,但这没关系),我得到了这个新问题。

解决方案在 Lotan 提供的链接末尾:https ://forum.unity.com/threads/bundle-release-launcher-aab-does-not-exist-2019-4-16f1.1025302/#post- 6780950,但没有代码,所以我在这里扩展它。

Unity 生成一个“gradleOut-release.aab”,但是新的 gradle 版本会寻找一个“gradleOut.aab”,所以你需要重命名它:)。

您只需在 launcherTemplate 中更改您的 defaultConfig:

defaultConfig {
    minSdkVersion **MINSDKVERSION**
    targetSdkVersion **TARGETSDKVERSION**
    applicationId '**APPLICATIONID**'
    ndk {
        abiFilters **ABIFILTERS**
    }
    versionCode **VERSIONCODE**
    versionName '**VERSIONNAME**'
}

defaultConfig {
    minSdkVersion **MINSDKVERSION**
    targetSdkVersion **TARGETSDKVERSION**
    applicationId '**APPLICATIONID**'
    ndk {
        abiFilters **ABIFILTERS**
    }
    versionCode **VERSIONCODE**
    versionName '**VERSIONNAME**'

    // MLR: rename aab for gradle 3.6.x
    tasks.whenTaskAdded { task ->
        if (task.name.startsWith("bundle")) {
            def renameTaskName = "rename${task.name.capitalize()}Aab"
            def flavor = task.name.substring("bundle".length()).uncapitalize()
            tasks.create(renameTaskName, Copy) {
                def path = "${buildDir}/outputs/bundle/${flavor}/"
                from(path)
                include "gradleOut-release.aab"
                destinationDir file("${buildDir}/outputs/bundle/${flavor}/")
                rename "gradleOut-release.aab", "gradleOut.aab"
            }

            task.finalizedBy(renameTaskName)
        }
    }
    // MLR: End of rename
}

我不确定 3.6.x 是否会修复 ANR(可能是我们 Facebook SDK 9.0.0 的问题)。


推荐阅读