/// <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); }
public void TestIsBuildToolsVersionAtLeast() { Assert.IsFalse(AndroidBuildTools.IsBuildToolsVersionAtLeast("27.0.0", "28.0.0")); Assert.IsFalse(AndroidBuildTools.IsBuildToolsVersionAtLeast("28.0.0-rc5", "28.0.0")); Assert.IsTrue(AndroidBuildTools.IsBuildToolsVersionAtLeast("28.0.0", "28.0.0")); Assert.IsTrue(AndroidBuildTools.IsBuildToolsVersionAtLeast("28.0.1-rc1", "28.0.0")); Assert.IsTrue(AndroidBuildTools.IsBuildToolsVersionAtLeast("28.0.1", "28.0.0")); }
private static AppBundleBuilder CreateAppBundleBuilder(string workingDirectoryPath) { var androidSdk = new AndroidSdk(); var javaUtils = new JavaUtils(); var androidSdkPlatform = new AndroidSdkPlatform(androidSdk); var androidBuildTools = new AndroidBuildTools(androidSdk); var jarSigner = new JarSigner(javaUtils); return(new AppBundleBuilder( new AndroidAssetPackagingTool(androidBuildTools, androidSdkPlatform), new AndroidBuilder(androidSdkPlatform), new BundletoolHelper(javaUtils), jarSigner, workingDirectoryPath, new ZipUtils(javaUtils))); }
/// <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); }
/// <summary> /// Constructor. /// </summary> public ApkSigner(AndroidBuildTools androidBuildTools, JavaUtils javaUtils) { }
public void TestGetNewestVersion_Empty() { Assert.IsNull(AndroidBuildTools.GetNewestVersion(Enumerable.Empty <string>())); }
public void TestGetNewestVersion_Null() { Assert.Throws <NullReferenceException>(() => AndroidBuildTools.GetNewestVersion(null)); }
// Helper method that converts a params array to an IEnumerable. private static string GetNewestVersion(params string[] values) { return(AndroidBuildTools.GetNewestVersion(values)); }