blob: 611a47335921bb3a22283f27f587ebbdeba891cf [file] [log] [blame]
import com.google.common.collect.ImmutableMap
apply plugin: 'java'
apply plugin: 'jacoco-tools-base'
apply plugin: 'sdk-java-lib'
group = 'com.android.tools'
archivesBaseName = 'sdklib'
version = rootProject.ext.baseVersion
dependencies {
compile project(':base:layoutlib-api')
compile project(':base:dvlib')
compile project(':base:repository')
compile libs.gson
compile libs.apache_compress
compile libs.apache_httpmime
compile libs.apache_httpcore
testCompile libs.junit
testCompile libs.truth
testCompile project(':base:testutils')
testCompile testFixtures(project(":base:repository"))
}
test {
testLogging {
showStandardStreams = true
showStackTraces = true
exceptionFormat = "full"
}
}
sourceSets {
main.resources.srcDir 'src/main/java'
test.resources.srcDir 'src/test/java'
}
task sdkManagerStartScripts(type: CreateStartScripts) {
classpath = project.getTasks().getAt(JavaPlugin.JAR_TASK_NAME).getOutputs().getFiles().plus(
project.getConfigurations().getByName("runtime"))
outputDir new File(project.getBuildDir(), "scripts")
description "Creates OS specific scripts to start the sdk manager CLI"
mainClassName = 'com.android.sdklib.tool.sdkmanager.SdkManagerCli'
applicationName = 'sdkmanager'
defaultJvmOpts = ["-Dcom.android.sdklib.toolsdir=MY_APP_HOME"]
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0\\..')
}
}
task avdManagerStartScripts(type: CreateStartScripts) {
classpath = project.getTasks().getAt(JavaPlugin.JAR_TASK_NAME).getOutputs().getFiles().plus(
project.getConfigurations().getByName('runtime'))
outputDir new File(project.getBuildDir(), 'scripts')
description 'Creates OS specific scripts to start avdmanager'
mainClassName = 'com.android.sdklib.tool.AvdManagerCli'
applicationName = 'avdmanager'
defaultJvmOpts = ["-Dcom.android.sdkmanager.toolsdir=MY_APP_HOME"]
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0\\..')
}
}
sdk {
common(mac, linux) {
item(new File(avdManagerStartScripts.outputDir, "avdmanager")) {
into "bin"
notice null
builtBy 'avdManagerStartScripts'
}
item(new File(sdkManagerStartScripts.outputDir, "sdkmanager")) {
into "bin"
notice null
builtBy 'sdkManagerStartScripts'
}
}
windows {
item(new File(avdManagerStartScripts.outputDir, "avdmanager.bat")) {
into "bin"
notice null
builtBy 'avdManagerStartScripts'
}
item(new File(sdkManagerStartScripts.outputDir, "sdkmanager.bat")) {
into "bin"
notice null
builtBy 'sdkManagerStartScripts'
}
}
}
// Used for changes to remove components from initSdkForTests, so that continuous-build results
// (both pre- and post-submit) give good feedback and proper attribution in case of failure.
task removeSdkComponents(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = "com.android.sdklib.tool.sdkmanager.SdkManagerCli"
args = [
'--sdk_root=' + System.getenv("ANDROID_HOME"),
'--verbose',
'--uninstall',
// Entries below are temporary and should always include dates. For example:
// 'extras;android;gapid;3', // added 2016-11-18
'extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3', // added 2016-11-21
'extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3', // added 2016-11-21
'extras;android;support', // added 2016-12-13
]
}
task initSdkForTests(type: JavaExec, dependsOn: removeSdkComponents) {
standardInput = System.in
classpath = sourceSets.main.runtimeClasspath
main = "com.android.sdklib.tool.sdkmanager.SdkManagerCli"
doFirst {
if (project.hasProperty('downloaderArgs')) {
args(downloaderArgs.split(','))
} else {
def sdk_home = System.getenv("ANDROID_HOME")
if (sdk_home == null) {
throw new GradleException('Required ANDROID_HOME environment variable not set.')
}
args = ['--sdk_root=' + sdk_home,
'--channel=3',
'--verbose',
// When you remove an entry below, please add it to removeSdkComponents above.
'tools',
'platform-tools',
'build-tools;25.0.0',
'build-tools;24.0.3',
'build-tools;24.0.2',
'build-tools;24.0.1',
'build-tools;24.0.0',
'build-tools;23.0.2',
'build-tools;23.0.1',
'build-tools;23.0.0',
'build-tools;22.0.1',
'build-tools;22.0.0',
'build-tools;21.1.2',
'build-tools;21.1.1',
'build-tools;21.1.0',
'build-tools;21.0.0',
'build-tools;20.0.0',
'build-tools;19.1.0',
'platforms;android-25',
'platforms;android-24',
'platforms;android-23',
'platforms;android-22',
'platforms;android-21',
'platforms;android-20',
'platforms;android-19',
'platforms;android-18',
'platforms;android-15',
'add-ons;addon-google_apis-google-21',
'add-ons;addon-google_apis-google-22',
'add-ons;addon-google_apis-google-23',
'add-ons;addon-google_apis-google-24',
'extras;google;m2repository',
'extras;android;m2repository',
'cmake;3.6.3155560',
'ndk-bundle',
]
println "Running SdkManagerCli with args " + args
}
}
}
task initSdkForConnectedTestsStableChannel(type: JavaExec) {
standardInput = System.in
classpath = sourceSets.main.runtimeClasspath
main = "com.android.sdklib.tool.sdkmanager.SdkManagerCli"
args = ['--sdk_root=' + System.getenv("ANDROID_HOME"),
'--channel=0',
'--verbose',
'system-images;android-26;google_apis;x86',
'system-images;android-25;google_apis;x86',
'system-images;android-19;default;x86',
'tools',
'platform-tools',
'build-tools;29.0.2',
'platforms;android-29',
'platforms;android-27',
'platforms;android-25',
'platforms;android-24',
'platforms;android-23',
'platforms;android-22',
'platforms;android-21',
'platforms;android-20',
'platforms;android-19',
'platforms;android-18',
'platforms;android-15',
'add-ons;addon-google_apis-google-21',
'add-ons;addon-google_apis-google-22',
'add-ons;addon-google_apis-google-23',
'add-ons;addon-google_apis-google-24',
'extras;google;m2repository',
'extras;google;instantapps',
'extras;android;m2repository',
'cmake;3.6.4111459',
'ndk-bundle',
]
}
task initSdkForConnectedTestsUnstableChannel(type: JavaExec) {
standardInput = System.in
classpath = sourceSets.main.runtimeClasspath
main = "com.android.sdklib.tool.sdkmanager.SdkManagerCli"
args = ['--sdk_root=' + System.getenv("ANDROID_HOME"),
'--channel=2',
'--verbose',
'platforms;android-29',
]
}
task initSdkForConnectedTests {
dependsOn initSdkForConnectedTestsStableChannel, initSdkForConnectedTestsUnstableChannel
}
def offline_repo_files = ["extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2",
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2"]
def offline_sdk_targets = [["macosx", "64", "darwin-x86_64"],
["macosx", "32", "darwin-x86"],
["windows", "64", "windows-x86_64"],
["windows", "32", "windows"],
["linux", "64", "linux-x86_64"],
["linux", "32", "linux-x86"]]
// Parent task to update the packages in prebuilts/tools/*/offline-sdk
// based on the values of offline_repo_files and offline_sdk_targets above.
task updateOfflineRepo {}
offline_sdk_targets.each { config ->
def os = config[0]
def arch = config[1]
def dest = "$rootDir/../prebuilts/tools/" + config[2] + "/offline-sdk"
task "updateOfflineRepo$os$arch"(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = "com.android.sdklib.tool.OfflineRepoCreator"
args = ["--dest", dest] + offline_repo_files
environment("REPO_OS_OVERRIDE", os)
systemProperties(ImmutableMap.of("os.arch", arch))
}
updateOfflineRepo.dependsOn "updateOfflineRepo$os$arch"
}
project.ext.pomName = 'Android Tools sdklib'
project.ext.pomDesc = 'A library to parse and download the Android SDK.'
apply from: "$rootDir/buildSrc/base/publish.gradle"
apply from: "$rootDir/buildSrc/base/javadoc.gradle"