/// <summary> /// Emulates Unity's File -> Build And Run menu option. /// </summary> private static void EmulateUnityBuildAndRun() { var androidSdk = new AndroidSdk(); var androidSdkPlatform = new AndroidSdkPlatform(androidSdk); var androidBuildTools = new AndroidBuildTools(androidSdk); var javaUtils = new JavaUtils(); var apkSigner = new ApkSigner(androidBuildTools, javaUtils); var androidBuilder = new AndroidBuilder(androidSdkPlatform, apkSigner); var buildToolLogger = new BuildToolLogger(); if (!androidBuilder.Initialize(buildToolLogger)) { return; } if (EditorUserBuildSettings.androidBuildSystem == AndroidBuildSystem.Gradle) { EditorUserBuildSettings.exportAsGoogleAndroidProject = false; } var artifactName = AndroidAppBundle.IsNativeBuildEnabled() ? "temp.aab" : "temp.apk"; var artifactPath = Path.Combine(Path.GetTempPath(), artifactName); var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(artifactPath); buildPlayerOptions.options |= BuildOptions.AutoRunPlayer; androidBuilder.Build(buildPlayerOptions); }
/// <summary> /// Emulates Unity's File -> Build And Run menu option. /// </summary> private static void EmulateUnityBuildAndRun() { var androidSdk = new AndroidSdk(); var androidSdkPlatform = new AndroidSdkPlatform(androidSdk); var androidBuilder = new AndroidBuilder(androidSdkPlatform); var buildToolLogger = new BuildToolLogger(); if (!androidBuilder.Initialize(buildToolLogger)) { return; } var artifactName = EditorUserBuildSettings.buildAppBundle ? "temp.aab" : "temp.apk"; var artifactPath = Path.Combine(Path.GetTempPath(), artifactName); var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(artifactPath); buildPlayerOptions.options |= BuildOptions.AutoRunPlayer; androidBuilder.Build(buildPlayerOptions); }
/// <summary> /// Builds an APK to a temporary location, then installs and runs it using ia.jar /// </summary> private static void BuildAndRunApk(BuildToolLogger buildToolLogger) { var androidSdk = new AndroidSdk(); var androidSdkPlatform = new AndroidSdkPlatform(androidSdk); var androidBuildTools = new AndroidBuildTools(androidSdk); var javaUtils = new JavaUtils(); var apkSigner = new ApkSigner(androidBuildTools, javaUtils); var androidBuilder = new AndroidBuilder(androidSdkPlatform, apkSigner); var playInstantBuildHelper = new PlayInstantBuildHelper(isInstantRequired: true); if (!androidBuilder.Initialize(buildToolLogger) || !playInstantBuildHelper.Initialize(buildToolLogger) || !javaUtils.Initialize(buildToolLogger)) { return; } var jarPath = IaJarPath; if (jarPath == null) { buildToolLogger.DisplayErrorDialog("Build and Run failed to locate ia.jar file"); return; } AndroidAppBundle.DisableNativeBuild(); var apkPath = Path.Combine(Path.GetTempPath(), "temp.apk"); Debug.LogFormat("Build and Run package location: {0}", apkPath); var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(apkPath); if (!androidBuilder.BuildAndSign(buildPlayerOptions)) { // Do not log here. The method we called was responsible for logging. return; } InstallInstantApp(jarPath, apkPath, androidSdk, javaUtils); }