Update android-sdk dependency management. Add Emulator

This commit is contained in:
Mikhail Bogdanov
2020-04-09 08:50:02 +02:00
parent 919a5e7cc7
commit acb4d6cf63
2 changed files with 51 additions and 21 deletions
+4
View File
@@ -154,6 +154,10 @@ object TaskUtils {
fun useAndroidJar(task: Task) { fun useAndroidJar(task: Task) {
task.useAndroidConfiguration(systemPropertyName = "android.jar", configName = "androidJar") 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) { private fun Task.useAndroidConfiguration(systemPropertyName: String, configName: String) {
+47 -21
View File
@@ -13,14 +13,24 @@ repositories {
artifact() 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 androidSdk by configurations.creating
val androidJar by configurations.creating val androidJar by configurations.creating
val androidPlatform by configurations.creating val androidPlatform by configurations.creating
val buildTools 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 sdkDestDir = File(buildDir, "androidSdk")
val toolsOs = when { 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<DefaultTask> {
doLast {}
}
val prepareSdk by task<DefaultTask> { val prepareSdk by task<DefaultTask> {
doLast {} doLast {}
dependsOn(preparePlatform)
}
val prepareEmulator by task<DefaultTask> {
doLast {}
dependsOn(prepareSdk)
} }
fun unzipSdkTask( fun unzipSdkTask(
sdkName: String, sdkVer: String, destinationSubdir: String, coordinatesSuffix: String, sdkName: String, sdkVer: String, destinationSubdir: String, coordinatesSuffix: String,
additionalConfig: Configuration? = null, dirLevelsToSkipOnUnzip: Int = 0, ext: String = "zip", additionalConfig: Configuration? = null, dirLevelsToSkipOnUnzip: Int = 0, ext: String = "zip",
prepareTask: TaskProvider<DefaultTask> = prepareSdk,
unzipFilter: CopySpec.() -> Unit = {} unzipFilter: CopySpec.() -> Unit = {}
): Task { ): Task {
val id = "${sdkName}_$sdkVer" val id = "${sdkName}_$sdkVer"
@@ -72,7 +103,7 @@ fun unzipSdkTask(
} }
} }
} }
prepareSdk.configure { prepareTask.configure {
dependsOn(unzipTask) dependsOn(unzipTask)
} }
@@ -83,35 +114,30 @@ fun unzipSdkTask(
return unzipTask 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("android_m2repository", "r44", "extras/android", "")
unzipSdkTask("platform-tools", "r25.0.3", "", toolsOs) unzipSdkTask("platform-tools", "r28.0.1", "", toolsOsDarwin)
unzipSdkTask("tools", "r24.3.4", "", toolsOs) 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", "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> { val clean by task<Delete> {
delete(buildDir) 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")) { artifacts.add(androidSdk.name, file("$sdkDestDir")) {
builtBy(prepareSdk) builtBy(prepareSdk)
} }
artifacts.add(androidJar.name, file("$libsDestDir/android.jar")) { artifacts.add(androidJar.name, file("$libsDestDir/android.jar")) {
builtBy(extractAndroidJar) builtBy(preparePlatform)
}
artifacts.add(androidEmulator.name, file("$sdkDestDir")) {
builtBy(prepareEmulator)
} }