Skip to content

Commit

Permalink
Merge pull request #282 from immutable/test/build-android-script
Browse files Browse the repository at this point in the history
[DX-3106] test: build android script
  • Loading branch information
nattb8 authored Aug 26, 2024
2 parents 9efff5f + 530c1c4 commit 1aa32d2
Show file tree
Hide file tree
Showing 2 changed files with 135 additions and 0 deletions.
124 changes: 124 additions & 0 deletions sample/Assets/Editor/AndroidBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
#if UNITY_EDITOR

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
using AltTester.AltTesterUnitySDK.Editor;
using AltTester.AltTesterUnitySDK;
using System;
using System.IO;

public class AndroidBuilder
{
private const string DefaultBuildPath = "Builds/Android/SampleApp.apk";

static void Build()
{
BuildPlayer(DefaultBuildPath, BuildOptions.Development);
}

static void BuildForAltTester()
{
BuildPlayer(DefaultBuildPath, BuildOptions.Development | BuildOptions.IncludeTestAssemblies, true);
}


private static void BuildPlayer(string defaultBuildPath, BuildOptions buildOptions, bool setupForAltTester = false)
{
try
{
string buildPath = GetBuildPathFromArgs(defaultBuildPath);

BuildPlayerOptions buildPlayerOptions = CreateBuildPlayerOptions(buildPath, buildOptions);

if (setupForAltTester)
{
SetupAltTester(buildPlayerOptions);
}

var results = BuildPipeline.BuildPlayer(buildPlayerOptions);

if (setupForAltTester)
{
// Clean up AltTester settings after build
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Android);
RemoveAltFromScene(buildPlayerOptions.scenes[0]);
}
}
catch (Exception exception)
{
Debug.LogException(exception);
}
}

private static string GetBuildPathFromArgs(string defaultBuildPath)
{
string[] args = Environment.GetCommandLineArgs();
for (int i = 0; i < args.Length; i++)
{
if (args[i] == "--buildPath" && i + 1 < args.Length)
{
return args[i + 1];
}
}
return defaultBuildPath;
}

private static BuildPlayerOptions CreateBuildPlayerOptions(string buildPath, BuildOptions buildOptions)
{
return new BuildPlayerOptions
{
scenes = new[]
{
"Assets/Scenes/SelectAuthMethod.unity",
"Assets/Scenes/UnauthenticatedScene.unity",
"Assets/Scenes/AuthenticatedScene.unity",
"Assets/Scenes/ZkEvmGetBalance.unity",
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity",
"Assets/Scenes/ZkEvmSendTransaction.unity",
"Assets/Scenes/ImxNftTransfer.unity"
},
locationPathName = buildPath,
target = BuildTarget.Android,
options = buildOptions
};
}

private static void SetupAltTester(BuildPlayerOptions buildPlayerOptions)
{
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(BuildTargetGroup.Android);
AltBuilder.CreateJsonFileForInputMappingOfAxis();

var instrumentationSettings = new AltInstrumentationSettings();
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
}

public static void RemoveAltFromScene(string scene)
{
Debug.Log("Removing AltTesterPrefab from the [" + scene + "] scene.");

var sceneToModify = EditorSceneManager.OpenScene(scene);

// Find the AltTesterPrefab instance in the scene
var altRunner = GameObject.FindObjectOfType<AltRunner>();

if (altRunner != null)
{
// Destroy the AltTesterPrefab instance
GameObject.DestroyImmediate(altRunner.gameObject);

// Mark the scene as dirty and save it
EditorSceneManager.MarkSceneDirty(sceneToModify);
EditorSceneManager.SaveOpenScenes();

Debug.Log("AltTesterPrefab successfully removed from the [" + scene + "] scene.");
}
else
{
Debug.LogWarning("AltTesterPrefab was not found in the [" + scene + "] scene.");
}
}

}

#endif
11 changes: 11 additions & 0 deletions sample/Assets/Editor/AndroidBuilder.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1aa32d2

Please sign in to comment.