diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index f00c5a8016a..ba15cb2d835 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -154,6 +154,10 @@ object TaskUtils { fun useAndroidJar(task: Task) { task.useAndroidConfiguration(systemPropertyName = "android.jar", configName = "androidJar") } + + fun useAndroidEmulator(task: Task) { + task.useAndroidConfiguration(systemPropertyName = "android.sdk", configName = "androidEmulator") + } } private fun Task.useAndroidConfiguration(systemPropertyName: String, configName: String) { diff --git a/dependencies/android-sdk/build.gradle.kts b/dependencies/android-sdk/build.gradle.kts index e1b5073a896..74e0baae6c2 100644 --- a/dependencies/android-sdk/build.gradle.kts +++ b/dependencies/android-sdk/build.gradle.kts @@ -13,14 +13,24 @@ repositories { artifact() } } + ivy { + url = URI("https://dl.google.com/android/repository/sys-img/android") + patternLayout { + artifact("[artifact]-[revision](_[classifier]).[ext]") + } + metadataSources { + artifact() + } + } } val androidSdk by configurations.creating val androidJar by configurations.creating val androidPlatform by configurations.creating val buildTools by configurations.creating +val androidEmulator by configurations.creating -val libsDestDir = File(buildDir, "libs") +val libsDestDir = File(buildDir, "androidSdk/platforms/android-26") val sdkDestDir = File(buildDir, "androidSdk") val toolsOs = when { @@ -33,13 +43,34 @@ val toolsOs = when { } } +val toolsOsDarwin = when { + OperatingSystem.current().isWindows -> "windows" + OperatingSystem.current().isMacOsX -> "darwin" + OperatingSystem.current().isLinux -> "linux" + else -> { + logger.error("Unknown operating system for android tools: ${OperatingSystem.current().name}") + "" + } +} + +val preparePlatform by task { + doLast {} +} + val prepareSdk by task { doLast {} + dependsOn(preparePlatform) +} + +val prepareEmulator by task { + doLast {} + dependsOn(prepareSdk) } fun unzipSdkTask( sdkName: String, sdkVer: String, destinationSubdir: String, coordinatesSuffix: String, additionalConfig: Configuration? = null, dirLevelsToSkipOnUnzip: Int = 0, ext: String = "zip", + prepareTask: TaskProvider = prepareSdk, unzipFilter: CopySpec.() -> Unit = {} ): Task { val id = "${sdkName}_$sdkVer" @@ -72,7 +103,7 @@ fun unzipSdkTask( } } } - prepareSdk.configure { + prepareTask.configure { dependsOn(unzipTask) } @@ -83,35 +114,30 @@ fun unzipSdkTask( return unzipTask } -unzipSdkTask("platform", "26_r02", "platforms/android-26", "", androidPlatform, 1) +unzipSdkTask("platform", "26_r02", "platforms/android-26", "", androidPlatform, 1, prepareTask = preparePlatform) unzipSdkTask("android_m2repository", "r44", "extras/android", "") -unzipSdkTask("platform-tools", "r25.0.3", "", toolsOs) -unzipSdkTask("tools", "r24.3.4", "", toolsOs) +unzipSdkTask("platform-tools", "r28.0.1", "", toolsOsDarwin) +unzipSdkTask("sdk-tools-$toolsOsDarwin", "4333796"/*26.1.1*/, "", "") unzipSdkTask("build-tools", "r23.0.1", "build-tools/23.0.1", toolsOs, buildTools, 1) -unzipSdkTask("build-tools", "r28.0.2", "build-tools/28.0.2", toolsOs, buildTools, 1) - +unzipSdkTask("build-tools", "r28.0.3", "build-tools/28.0.3", toolsOs, buildTools, 1) +unzipSdkTask("emulator-$toolsOsDarwin", "5264690", "", "", prepareTask = prepareEmulator) +unzipSdkTask("armeabi-v7a", "19", "system-images/android-19/default","r05", prepareTask = prepareEmulator) +if (!kotlinBuildProperties.isTeamcityBuild) { + unzipSdkTask("x86", "19", "system-images/android-19/default", "r06", prepareTask = prepareEmulator) +} val clean by task { delete(buildDir) } -val extractAndroidJar by tasks.registering { - dependsOn(androidPlatform) - inputs.files(androidPlatform) - val targetFile = File(libsDestDir, "android.jar") - outputs.files(targetFile) - doFirst { - project.copy { - from(zipTree(androidPlatform.singleFile).matching { include("**/android.jar") }.files.first()) - into(libsDestDir) - } - } -} - artifacts.add(androidSdk.name, file("$sdkDestDir")) { builtBy(prepareSdk) } artifacts.add(androidJar.name, file("$libsDestDir/android.jar")) { - builtBy(extractAndroidJar) + builtBy(preparePlatform) } + +artifacts.add(androidEmulator.name, file("$sdkDestDir")) { + builtBy(prepareEmulator) +} \ No newline at end of file