Build App Bundle (Google Play) for Android DOTS project

Hi @Yury-Habets . I found that current build configuration for Android DOTS project does not have Build App Bundle (Google Play) option. How should I make it able to build Build App Bundle (Google Play) as it’s hard requirement for upload android game to google store?

Another feature request I would like to have is create symbol.zip at build configuration.

As I understand, you’re using the DOTS build configurations, and some of the features from the normal build&run are missing, right?

Maybe @Tomas1856 can help you with this :slight_smile:

I think there’s a component AndroidExportSettings, where you can choose App Bundle as target.

Alternatively, you can go to BuildSettings window, set Build App Bundle and Create Symbols, and it should be picked up by Build Configurations.

Hi @Tomas1856 . I tried before. This doesn’t work. I think next version of android platform package needs to add Create Symbols.zip component.

Sorry to hear that, I’ll try to ask around, should be relatively an easy fix.

Hi @Tomas1856 . I also would like to tell you App Bundle from build configuration does not work properly. I get the following error after finishing build.

FileNotFoundException: Temp\Android-Client (Release)\gradleOut\launcher\build\outputs\bundle\release\launcher.aab does not exist
System.IO.File.Copy (System.String sourceFileName, System.String destFileName, System.Boolean overwrite) (at <695d1cc93cca45069c528c15c9fdd749>:0)
Unity.Build.Android.Classic.AndroidBuildGradleProject.Run (Unity.Build.BuildContext context) (at Library/PackageCache/com.unity.platforms.android@0.10.0-preview.10/Editor/Unity.Build.Android.Classic/NonIncremental/Steps/AndroidBuildGradleProject.cs:87)
Unity.Build.BuildStepCollection.Run (Unity.Build.BuildContext context) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildStepCollection.cs:77)
UnityEngine.Debug:LogException(Exception, Object)
Unity.Build.ResultBase:LogResult() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/ResultBase.cs:69)
Unity.Build.Editor.<>c:<.cctor>b__34_0(BuildConfiguration) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:42)
Unity.Build.Editor.<>c__DisplayClass30_0:b__1() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:128)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Out of curiosity which com.unity.platforms.android package version are you using ?

@Tomas1856 . 0.10.0-preview.10

@optimise I’ve encountered the same problem earlier, reason is the gradle version. Your post build script is looking for a {project}.aab but the reality was {project}-{configuration}.aab (in my case it was launcher-release).

Try using a custom launcher gradle template and add:

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 "launcher-release.aab"
            destinationDir file("${buildDir}/outputs/bundle/${flavor}/")
            rename "launcher-release.aab", "launcher.aab"
        }
        task.finalizedBy(renameTaskName)
    }
}

to the very end of file, that should rename the aab to the one unity is looking for.

]

By the looks of it, it will take quite a while until the fix will be available, if you’re willing, you can take unofficial solution, it would involve copying \Library\PackageCachecom.unity.platforms.android@0.10.0-preview.10 to \Packages, and tweaking files inside that package.

@Tomas1856 Alright. Can u give me unofficial solution?

Btw I also found that script debugging option is missing for this android platform package. Can u make it available in new version of android platform package?

Extract this package and place it in \Packages, it should correctly be able to produce app bundle + symbols (assuming il2cpp is enabled).

You need to add Scripting Debugger Settings, that enables script debugging, assuming you have Development build enabled.

7105939–847450–com.unity.platforms.android@0.10.0-preview.10.zip (191 KB)

@Tomas1856 . I only see Wait For Managed Debugger. Enable script debugging is not available.

7106005--847507--upload_2021-5-4_20-44-52.png

@Tomas1856 . I just try to roll out Anroid Mono release build with this unofficial solution but I get 3 errors (see below). The build does not work properly.

InvalidOperationException: Cannot build asset bundles while a build is in progress
UnityEditor.Build.Pipeline.ContentPipeline:BuildAssetBundles(IBundleBuildParameters, IBundleBuildContent, IBundleBuildResults&, IList1, IContextObject[ ]) Unity.Scenes.Editor.SubSceneBuildCode:PrepareAdditionalFiles(GUID[ ], ArtifactKey[ ], BuildTarget, Action2, String, String) (at Library/PackageCache/com.unity.entities@0.17.0-preview.41/Unity.Scenes.Editor/SubSceneBuildCode.cs:151)
Unity.Scenes.Editor.EntitySectionBundlesBuildCustomizer:RegisterAdditionalFilesToDeploy(Action`2) (at Library/PackageCache/com.unity.entities@0.17.0-preview.41/Unity.Scenes.Editor/EntitySectionBundlesBuildCustomizer.cs:47)
Unity.Build.Classic.Private.CopyAdditionallyProvidedFilesStep:Run(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/Steps/CopyAdditionallyProvidedFilesStep.cs:16)
Unity.Build.Android.Classic.PostGenerateProcessor:OnPostGenerateGradleAndroidProject(String) (at Library/PackageCache/com.unity.platforms.android@2c606f5057/Editor/Unity.Build.Android.Classic/NonIncremental/AndroidClassicNonIncrementalPipeline.cs:34)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions)
Unity.Build.Classic.Private.BuildPlayerStep:Run(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/Steps/BuildPlayerStep.cs:63)
Unity.Build.BuildStepCollection:Run(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildStepCollection.cs:77)
Unity.Build.Classic.Private.ClassicNonIncrementalPipelineBase:OnBuild(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/ClassicNonIncrementalPipelineBase.cs:10)
Unity.Build.Android.Classic.AndroidClassicNonIncrementalPipeline:OnBuild(BuildContext) (at Library/PackageCache/com.unity.platforms.android@2c606f5057/Editor/Unity.Build.Android.Classic/NonIncremental/AndroidClassicNonIncrementalPipeline.cs:73)
Unity.Build.BuildProcess:Update() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildProcess.cs:54)
Unity.Build.BuildPipelineBase:Build(BuildConfiguration, BuildProgress) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildPipelineBase.cs:84)
Unity.Build.BuildConfiguration:Build() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildConfiguration.cs:65)
Unity.Build.Editor.<>c:<.cctor>b__34_1(BuildConfiguration) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:47)
Unity.Build.Editor.<>c__DisplayClass30_0:b__1() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:128)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

InvalidOperationException: BuildAssetBundles failed with status ‘Exception’.
Unity.Scenes.Editor.SubSceneBuildCode.PrepareAdditionalFiles (UnityEditor.GUID[ ] sceneGuids, UnityEditor.Experimental.ArtifactKey[ ] entitySceneArtifacts, UnityEditor.BuildTarget target, System.Action2[T1,T2] RegisterFileCopy, System.String outputStreamingAssetsDirectory, System.String buildWorkingDirectory) (at Library/PackageCache/com.unity.entities@0.17.0-preview.41/Unity.Scenes.Editor/SubSceneBuildCode.cs:182) Unity.Scenes.Editor.EntitySectionBundlesBuildCustomizer.RegisterAdditionalFilesToDeploy (System.Action2[T1,T2] registerAdditionalFileToDeploy) (at Library/PackageCache/com.unity.entities@0.17.0-preview.41/Unity.Scenes.Editor/EntitySectionBundlesBuildCustomizer.cs:47)
Unity.Build.Classic.Private.CopyAdditionallyProvidedFilesStep.Run (Unity.Build.BuildContext context) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/Steps/CopyAdditionallyProvidedFilesStep.cs:16)
Unity.Build.Android.Classic.AndroidClassicNonIncrementalPipeline+PostGenerateProcessor.OnPostGenerateGradleAndroidProject (System.String path) (at Library/PackageCache/com.unity.platforms.android@2c606f5057/Editor/Unity.Build.Android.Classic/NonIncremental/AndroidClassicNonIncrementalPipeline.cs:34)
UnityEditor.Android.AndroidBuildPipelineInterfaces.OnGeneratePlatformProjectPostprocess (System.String path, System.Boolean strict) (at :0)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions)
Unity.Build.Classic.Private.BuildPlayerStep:Run(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/Steps/BuildPlayerStep.cs:63)
Unity.Build.BuildStepCollection:Run(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildStepCollection.cs:77)
Unity.Build.Classic.Private.ClassicNonIncrementalPipelineBase:OnBuild(BuildContext) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Classic.Private/NonIncremental/ClassicNonIncrementalPipelineBase.cs:10)
Unity.Build.Android.Classic.AndroidClassicNonIncrementalPipeline:OnBuild(BuildContext) (at Library/PackageCache/com.unity.platforms.android@2c606f5057/Editor/Unity.Build.Android.Classic/NonIncremental/AndroidClassicNonIncrementalPipeline.cs:73)
Unity.Build.BuildProcess:Update() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildProcess.cs:54)
Unity.Build.BuildPipelineBase:Build(BuildConfiguration, BuildProgress) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildPipelineBase.cs:84)
Unity.Build.BuildConfiguration:Build() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build/BuildConfiguration.cs:65)
Unity.Build.Editor.<>c:<.cctor>b__34_1(BuildConfiguration) (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:47)
Unity.Build.Editor.<>c__DisplayClass30_0:b__1() (at Library/PackageCache/com.unity.platforms@0.10.0-preview.10/Editor/Unity.Build.Editor/BuildConfigurationInspector.cs:128)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Curl error 56: Receiving data failed with unitytls error code 1048578

Adding this component, implicitly enables scripting debugging. The name of the component is unfortunate.

It should be probably be called EnableScriptingDebugging

Oh that’s very unfortunate… I’ll try to see if it’s possible to fix this.

@Tomas1856 . Is there any new changes for Scripting Debugger Settings component inside this unofficial solution? Currently with original android platform package, this component only works at Android Mono develop build but doesn’t work at Android il2cpp develop build.

No changes to that component in that solution. It shouldn’t matter if it’s mono or il2cpp

@Tomas1856 I found interesting thing that seems like after using this unofficial solution and set to build app bundle at build configuration, Android il2cpp release build doesn’t crash anymore at launch. It seems like there is bug inside android platform package that rolls out crash build. Maybe catalog.bin does not create properly I dunno.

(Case 1329969) [IL2CPP][Entities] Android build crash
https://issuetracker.unity3d.com/issues/hybridrender-plus-il2cpp-crashes-when-running-x86-build-on-a-x64-system?_ga=2.53220904.1431120914.1604680124-350356135.1604680124

I can’t reproduce it anymore. Not sure why.