Beispiel #1
0
        public static void StartServer(Command.WaitingForProcessToExit waitingForProcessToExit)
        {
            AndroidSDKTools instance = AndroidSDKTools.GetInstance();
            Process         process2 = new Process {
                StartInfo =
                {
                    FileName         = instance.ADB,
                    Arguments        = "start-server",
                    WorkingDirectory = instance.SDKRootDir,
                    CreateNoWindow   = true,
                    UseShellExecute  = true,
                    WindowStyle      = ProcessWindowStyle.Hidden
                }
            };

            using (Process process = process2)
            {
                process.Start();
                do
                {
                    if (waitingForProcessToExit != null)
                    {
                        waitingForProcessToExit(null);
                    }
                }while (!process.WaitForExit(100));
            }
        }
Beispiel #2
0
 public static string[] GetAvailableKeys(string keystore, string storepass)
 {
     if ((keystore.Length == 0) || (storepass.Length == 0))
     {
         return((string[])(s_AvailableKeyalias = null));
     }
     if ((s_AvailableKeyalias != null) && keystore.Equals(s_CurrentKeystore))
     {
         return(s_AvailableKeyalias);
     }
     s_CurrentKeystore = keystore;
     try
     {
         if (AndroidSDKTools.GetInstance() == null)
         {
             throw new UnityException("Unable to find Android SDK!");
         }
         return(s_AvailableKeyalias = AndroidSDKTools.GetInstanceOrThrowException().ReadAvailableKeys(keystore, storepass));
     }
     catch (Exception exception)
     {
         Debug.LogError(exception.ToString());
         return(null);
     }
 }
        public static AndroidSDKTools GetInstanceOrThrowException()
        {
            AndroidSDKTools instance = GetInstance();

            if (instance == null)
            {
                throw new UnityException("Unable to locate Android SDK!");
            }
            return(instance);
        }
Beispiel #4
0
        private static string RunInternal(string[] command, Command.WaitingForProcessToExit waitingForProcessToExit, string errorMsg)
        {
            AndroidSDKTools  instance = AndroidSDKTools.GetInstance();
            ProcessStartInfo psi      = new ProcessStartInfo {
                FileName               = instance.ADB,
                Arguments              = string.Join(" ", command),
                WorkingDirectory       = instance.SDKRootDir,
                CreateNoWindow         = true,
                StandardOutputEncoding = Encoding.UTF8
            };

            return(Command.Run(psi, waitingForProcessToExit, errorMsg));
        }
        public static AndroidSDKTools GetInstance()
        {
            string path = EditorPrefs.GetString("AndroidSdkRoot");

            if (!AndroidSdkRoot.IsSdkDir(path))
            {
                path = AndroidSdkRoot.Browse(path);
                if (!AndroidSdkRoot.IsSdkDir(path))
                {
                    return(null);
                }
                EditorPrefs.SetString("AndroidSdkRoot", path);
            }
            if ((s_Instance == null) || (path != s_Instance.SDKRootDir))
            {
                s_Instance = new AndroidSDKTools(path);
            }
            return(s_Instance);
        }
Beispiel #6
0
        private bool CreateKey(string keystore, string storepass)
        {
            string[] array = new string[0];
            if (this.m_Name.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "CN=" + escapeDName(this.m_Name));
            }
            if (this.m_OrgUnit.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "OU=" + escapeDName(this.m_OrgUnit));
            }
            if (this.m_Organization.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "O=" + escapeDName(this.m_Organization));
            }
            if (this.m_City.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "L=" + escapeDName(this.m_City));
            }
            if (this.m_State.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "ST=" + escapeDName(this.m_State));
            }
            if (this.m_Country.Length != 0)
            {
                ArrayUtility.Add <string>(ref array, "C=" + escapeDName(this.m_Country));
            }
            string dname = string.Join(", ", array);

            try
            {
                AndroidSDKTools.GetInstanceOrThrowException().CreateKey(keystore, storepass, this.m_Alias, this.m_Password, dname, this.m_Validity * 0x16d);
                s_AvailableKeyalias = null;
            }
            catch (Exception exception)
            {
                Debug.LogError(exception.ToString());
                return(false);
            }
            return(true);
        }
 private static bool VerifyJava(string javaExe)
 {
     try
     {
         string[] sdkToolCommand = new string[] { "javaversion" };
         string   str            = AndroidSDKTools.RunCommandSafe(javaExe, null, sdkToolCommand, 0x800, null, null, "Incompatible java version '" + javaExe + "'");
         char[]   separator      = new char[] { '.' };
         string[] strArray       = str.Split(separator);
         if ((((strArray.Length <= 1) || (Convert.ToUInt32(strArray[0]) != 1)) || (Convert.ToUInt32(strArray[1]) < 7)) && ((strArray.Length <= 0) || (Convert.ToUInt32(strArray[0]) < 7)))
         {
             throw new Exception($"Incompatible java version: {str} ('{javaExe}')");
         }
         return(true);
     }
     catch (Exception exception)
     {
         Console.WriteLine($"Failed java version detection for '{javaExe}'");
         Console.WriteLine(exception);
     }
     return(false);
 }
Beispiel #8
0
        public static void ShowAndroidKeystoreWindow(string company, string keystore, string storepass)
        {
            if (File.Exists(keystore))
            {
                try
                {
                    AndroidSDKTools.GetInstanceOrThrowException().ReadAvailableKeys(keystore, storepass);
                }
                catch (Exception exception)
                {
                    Debug.LogError(exception.ToString());
                    return;
                }
            }
            Rect rect = new Rect(100f, 100f, 500f, 330f);
            AndroidKeystoreWindow window = (AndroidKeystoreWindow)EditorWindow.GetWindowWithRect(typeof(AndroidKeystoreWindow), rect, true, EditorGUIUtility.TextContent("Create a new key").text);

            window.position = rect;
            window.m_Parent.window.m_DontSaveToLayout = true;
            window.m_Organization = company;
            window.m_Keystore     = keystore;
            window.m_StorePass    = storepass;
        }
        public override void ExportWithCurrentSettings()
        {
            string str;
            bool   flag = false;

            if (base.m_TargetPath == null)
            {
                str  = Path.Combine("Temp", "gradleOut");
                flag = true;
                Directory.CreateDirectory(str);
                string[] strArray = AndroidFileLocator.Find(Path.Combine(str, "*"));
                foreach (string str2 in strArray)
                {
                    string fileName = Path.GetFileName(str2);
                    if ((fileName != "build") && (fileName != ".gradle"))
                    {
                        try
                        {
                            FileUtil.DeleteFileOrDirectory(str2);
                        }
                        catch (IOException)
                        {
                        }
                    }
                }
            }
            else
            {
                str = Path.Combine(base.m_TargetPath, base.m_ProductName);
            }
            int targetSDKVersion = base.m_TargetSDKVersion;
            Dictionary <string, string> templateValues = new Dictionary <string, string> {
                {
                    "BUILDTOOLS",
                    base.m_GoogleBuildTools.ToString()
                },
                {
                    "APIVERSION",
                    targetSDKVersion.ToString()
                },
                {
                    "TARGETSDKVERSION",
                    targetSDKVersion.ToString()
                }
            };

            string[] components = new string[] { str, "src", "main" };
            string   str4       = Paths.Combine(components);
            string   target     = Path.Combine(str, "libs");

            Directory.CreateDirectory(str);
            string sDKRootDir = AndroidSDKTools.GetInstance().SDKRootDir;
            string path       = Path.Combine(str, "local.properties");

            if (!File.Exists(path) || flag)
            {
                File.WriteAllText(path, $"sdk.dir={sDKRootDir.Replace(@"\", @"\\")}
");
            }
            AndroidProjectExport.CopyFile(base.m_UnityJavaLibrary, Path.Combine(Path.Combine(str, "libs"), "unity-classes.jar"));
            AndroidProjectExport.CopyFile(Path.Combine(base.m_UnityAndroidBuildTools, "UnityProGuardTemplate.txt"), Path.Combine(str, "proguard-unity.txt"));
            try
            {
                string[] textArray2 = new string[] { str4, "assets", "bin", "Data" };
                Directory.Delete(Paths.Combine(textArray2), true);
            }
            catch (IOException)
            {
            }
            try
            {
                Directory.Delete(Path.Combine(str4, "res"), true);
            }
            catch (IOException)
            {
            }
            AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "res"), Path.Combine(str4, "res"));
            AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "plugins"), target);
            AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "libs"), Path.Combine(str4, "jniLibs"));
            AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "assets"), Path.Combine(str4, "assets"));
            string[] strArray3 = AndroidFileLocator.Find(Path.Combine(Path.Combine(base.m_StagingArea, "aar"), "*.aar"));
            string   str9      = "";

            foreach (string str10 in strArray3)
            {
                string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(str10);
                string str12 = Path.GetFileName(str10);
                str9 = str9 + $"	compile(name: '{fileNameWithoutExtension}', ext:'aar')
";
                AndroidProjectExport.CopyFile(str10, Path.Combine(target, str12));
            }
            templateValues["DEPS"] = str9;
            if (flag)
            {
                AndroidProjectExport.CopyFile(Path.Combine(base.m_StagingArea, "AndroidManifest.xml"), Path.Combine(str4, "AndroidManifest.xml"));
            }
            else
            {
                AndroidProjectExport.GenerateAndroidManifest(str4, base.m_StagingArea, base.m_PackageName, false);
                AndroidProjectExport.CopyAndPatchJavaSources(Path.Combine(str4, "java"), base.m_UnityJavaSources, base.m_PackageName);
            }
            string str13 = Path.Combine(str, "build.gradle");

            if (File.Exists(str13) && !File.ReadAllText(str13).StartsWith("// GENERATED BY UNITY"))
            {
                str13 = Path.Combine(str, "build.gradle.NEW");
            }
            this.WriteGradleBuildFiles(str, str13, templateValues);
            if (base.m_UseObb)
            {
                AndroidProjectExport.CopyFile(Path.Combine(base.m_StagingArea, "main.obb"), Path.Combine(str, $"{base.m_ProductName}.main.obb"));
            }
            else
            {
                AndroidProjectExport.CopyDir(Path.Combine(base.m_StagingArea, "raw"), Path.Combine(str4, "assets"));
            }
        }