-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #282 from immutable/test/build-android-script
[DX-3106] test: build android script
- Loading branch information
Showing
2 changed files
with
135 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.