Example #1
0
        /// <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);
        }
Example #2
0
 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"));
 }
Example #3
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);
        }
Example #5
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public ApkSigner(AndroidBuildTools androidBuildTools, JavaUtils javaUtils)
 {
 }
Example #6
0
 public void TestGetNewestVersion_Empty()
 {
     Assert.IsNull(AndroidBuildTools.GetNewestVersion(Enumerable.Empty <string>()));
 }
Example #7
0
 public void TestGetNewestVersion_Null()
 {
     Assert.Throws <NullReferenceException>(() => AndroidBuildTools.GetNewestVersion(null));
 }
Example #8
0
 // Helper method that converts a params array to an IEnumerable.
 private static string GetNewestVersion(params string[] values)
 {
     return(AndroidBuildTools.GetNewestVersion(values));
 }