/// <summary> /// Install a set of packages. /// </summary> /// <param name="packages">List of package versions to install / upgrade.</param> /// <param name="complete">Called when installation is complete.</param> public void InstallPackages(HashSet <AndroidSdkPackageNameVersion> packages, Action <bool> complete) { var packagesString = AndroidSdkPackageNameVersion.ListToString(packages); // TODO: Remove this dialog when the package manager provides feedback while // downloading. bool installPackage = UnityEditor.EditorUtility.DisplayDialog( "Missing Android SDK packages", String.Format( "Android SDK packages need to be installed:\n" + "{0}\n" + "\n" + "The install process can be *slow* and does not provide any feedback " + "which may lead you to think Unity has hung / crashed. Would you like " + "to wait for these package to be installed?", packagesString), "Yes", cancel: "No"); if (!installPackage) { PlayServicesSupport.Log("User cancelled installation of Android SDK tools package.", level: PlayServicesSupport.LogLevel.Warning); complete(false); return; } var packageNames = new List <string>(); foreach (var pkg in packages) { packageNames.Add(pkg.Name); } SdkManagerUtil.InstallPackages(toolPath, String.Join(" ", packageNames.ToArray()), packages, "Accept? (y/N):", "y", "N", new Regex("^License\\W+[^ ]+:"), complete); }
/// <summary> /// Install a set of packages. /// </summary> /// <param name="packages">List of package versions to install / upgrade.</param> /// <param name="complete">Called when installation is complete.</param> public void InstallPackages(HashSet <AndroidSdkPackageNameVersion> packages, Action <bool> complete) { var packageNames = new List <string>(); foreach (var pkg in packages) { packageNames.Add(pkg.LegacyName); } SdkManagerUtil.InstallPackages( toolPath, String.Format( "update sdk -a -u -t {0}", String.Join(",", packageNames.ToArray())), packages, "Do you accept the license", "yes", "no", new Regex("^--------"), complete); }