57 var sdkVersions = GetSdkVersionsChecked(build);
58 var jdkPath = GetJdkVersionsPath(build) / sdkVersions.Jdk.ToString();
60 Log.Information(
"Using JDK {0} at {1}", sdkVersions.Jdk, jdkPath);
61 if (!jdkPath.DirectoryExists())
63 var jdkDownloadPath = NukeBuild.TemporaryDirectory / $
"OpenJDK-{sdkVersions.Jdk}.zip";
64 var url = GetJdkDownloadUrl(sdkVersions.Jdk);
65 Log.Debug(
" Downloading JDK from {0} to {1}", url, jdkDownloadPath);
66 await HttpTasks.HttpDownloadFileAsync(url, jdkDownloadPath);
68 var extractTemp = NukeBuild.TemporaryDirectory / $
"OpenJDK-{sdkVersions.Jdk}";
69 Log.Debug(
" Extracting to {0}", extractTemp);
71 jdkDownloadPath.UnZipTo(extractTemp);
72 var tempJdkRoot = extractTemp.GetDirectories().First();
74 tempJdkRoot.Move(jdkPath);
76 Environment.SetEnvironmentVariable(
"JAVA_HOME", jdkPath, EnvironmentVariableTarget.Process);
78 if (!SelfPlatformSdk.
Exists(build))
80 var sdkManagerPath = GetSdkManagerPath(build);
81 Log.Information(
"Using SDK Manager at {0}", sdkVersions.Jdk, sdkManagerPath);
82 if (!sdkManagerPath.FileExists())
84 var cmdlineToolsDownloadPath = NukeBuild.TemporaryDirectory /
"AndroidCommandLineTools.zip";
85 var url =
"https://dl.google.com/android/repository/commandlinetools-win-13114758_latest.zip";
86 Log.Debug(
" Downloading Command line tools from {0} to {1}", url, cmdlineToolsDownloadPath);
87 await HttpTasks.HttpDownloadFileAsync(url, cmdlineToolsDownloadPath);
89 var extractTemp = NukeBuild.TemporaryDirectory /
"AndroidCommandLineTools";
90 Log.Debug(
" Extracting to {0}", extractTemp);
91 cmdlineToolsDownloadPath.UnZipTo(extractTemp);
94 (extractTemp /
"cmdline-tools").Move(GetCommandlineToolsPath(build));
95 Assert.FileExists(sdkManagerPath);
98 var sdkManager = ToolExResolver.GetTool(sdkManagerPath);
101 "Installing Android SDK {0}, Build Tools {1}, NDK {2}",
103 sdkVersions.BuildTools.ToString(3),
104 sdkVersions.Ndk.ToString(3)
106 Log.Debug(
" Accepting licenses");
107 sdkManager.WithInput(Enumerable.Repeat(
"y", 100)).CloseInput()(
"--licenses");
113 "platforms;android-{sdkVersions.Sdk}
"
114 "build-tools;{sdkVersions.BuildTools.ToString(3)}
"
115 "ndk;{sdkVersions.Ndk.ToString(3)}
"
116 "cmake;{sdkVersions.CMake.ToStringAutoFieldCount()}
"
122 Environment.SetEnvironmentVariable(
"NDK_ROOT", GetNdkPath(build), EnvironmentVariableTarget.Process);
123 Environment.SetEnvironmentVariable(
"NDKROOT", GetNdkPath(build), EnvironmentVariableTarget.Process);
124 var paths = EnvironmentInfo.Paths
125 .Append(GetPlatformToolsPath(build).ToString())
128 Environment.SetEnvironmentVariable(
"PATH", paths, EnvironmentVariableTarget.Process);
130 Log.Information(
"Using Android SDK {0} at {1}", sdkVersions.Sdk,
GetSdkPath(build));
131 Log.Information(
"Using Android NDK toolchain {0} at {1}", sdkVersions.Ndk.ToString(3),
GetToolchainPath(build));