Lock build requirements into code
Google Play requires 64-bit support (IL2CPP ARM64) and current Target API levels. Instead of relying on manual Editor UI checkboxes, enforce these requirements directly in your C# build entrypoint.
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
public static class AndroidReleaseBuilder
{
public static void BuildAAB()
{
EditorUserBuildSettings.buildAppBundle = true;
EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.Generic;
PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
PlayerSettings.Android.targetSdkVersion = (AndroidSdkVersions)34;
BuildPlayerOptions options = new BuildPlayerOptions
{
scenes = new[] { "Assets/Scenes/SampleScene.unity" },
locationPathName = "Builds/IceBreaker-Release.aab",
target = BuildTarget.Android,
options = BuildOptions.None
};
BuildReport report = BuildPipeline.BuildPlayer(options);
if (report.summary.result != BuildResult.Succeeded)
throw new System.Exception("AAB Build Failed: " + report.summary.totalErrors);
}
}
#endifInject signing keys via environment variables
Never commit Keystore passwords into source control. Inject passwords from environment variables into PlayerSettings immediately before building.
#if UNITY_EDITOR
using UnityEditor;
using System;
public static class KeystoreConfigurator
{
public static void ApplyFromEnv()
{
string pass = Environment.GetEnvironmentVariable("UNITY_KEYSTORE_PASS");
if (string.IsNullOrEmpty(pass))
throw new Exception("UNITY_KEYSTORE_PASS is not set.");
PlayerSettings.Android.useCustomKeystore = true;
PlayerSettings.Android.keystoreName = "keys/user.keystore";
PlayerSettings.Android.keystorePass = pass;
PlayerSettings.Android.keyaliasName = "icebreaker_release";
PlayerSettings.Android.keyaliasPass = pass;
}
}
#endifValidate with bundletool
Test the output .aab bundle using Google bundletool to verify universal APK generation and asset splitting before store submission.
Official documentation review
Verified
Reviewed the article's code and procedure against official Unity documentation and marked it ready for publication. This is not a claim of an independent Unity project or device reproduction; version- or device-specific reports will be checked in that environment as follow-up.