| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| import org.gradle.internal.os.OperatingSystem |
| |
| def root = ext.supportRootFolder |
| def checkoutRoot = "${root}/../.." |
| ext.checkoutRoot = checkoutRoot |
| ext.prebuiltsRoot = "$checkoutRoot/prebuilts" |
| ext.prebuiltsRootUri = "file://${prebuiltsRoot}" |
| |
| |
| final String platform = OperatingSystem.current().isMacOsX() ? 'darwin' : 'linux' |
| final String fullSdkPath = "${checkoutRoot}/fullsdk-${platform}" |
| System.setProperty('android.home', "${checkoutRoot}/fullsdk-${platform}") |
| File props = file("local.properties") |
| props.write "sdk.dir=${fullSdkPath}" |
| |
| def buildDir |
| def distDir |
| if (System.env.DIST_DIR != null && System.env.OUT_DIR != null) { |
| buildDir = new File(System.env.OUT_DIR + '/gradle/frameworks/support/build').getCanonicalFile() |
| distDir = new File(System.env.DIST_DIR).getCanonicalFile() |
| } else { |
| buildDir = file("${checkoutRoot}/out/host/gradle/frameworks/support/build") |
| distDir = file("${project.rootDir}/../../out/dist") |
| } |
| println "dist dir: $distDir" |
| def localMavenRepo = "file://${new File(buildDir, "flatfoot_repo").absolutePath}" |
| ext.testApkDistOut = distDir |
| ext.localMavenRepo = localMavenRepo |
| |
| ext.repoNames = ["$prebuiltsRootUri/maven_repo", |
| "$prebuiltsRootUri/gradle-plugin", |
| "$prebuiltsRootUri/tools/common/m2/repository", |
| "$prebuiltsRootUri/tools/common/m2/internal", |
| "$prebuiltsRootUri/tools/common/offline-m2", |
| "$prebuiltsRootUri/maven_repo/android", |
| "file://$fullSdkPath/extras/android/m2repository", |
| "file://${new File(buildDir, "support_repo").absolutePath}"] |
| |
| ext.kotlin_version = "1.0.5" |
| ext.android_gradle_plugin_version = "2.2.1" |
| ext.auto_common_version = "0.6" |
| ext.javapoet_version = "1.8.0" |
| ext.compile_testing_version = "0.9" |
| ext.localize_maven_version = "1.1" |
| ext.support_lib_version = "25.1.0-SNAPSHOT" |
| ext.junit_version = "4.12" |
| ext.mockito_version = "1.9.5" |
| ext.min_sdk_version = 14 |
| ext.target_sdk_version = 26 |
| ext.compile_sdk_version = 26 |
| ext.build_tools_version = "26.0.0" |
| ext.intellij_annotation = "12.0" |
| ext.espresso_version = "2.2.2" |
| ext.release_version = "1.0-SNAPSHOT" |
| ext.enablePublicRepos = System.getenv("ALLOW_PUBLIC_REPOS") |
| |
| // repository creation task |
| def createRepoDistTask = rootProject.tasks.create(name : "createArchive", type: Zip) { |
| from localMavenRepo |
| destinationDir distDir |
| into 'appToolkitRepository' |
| baseName = String.format("sdk-repo-linux-appToolkitRepository-%s", rootProject.ext.release_version) |
| } |
| |
| subprojects { |
| configurations.all { |
| resolutionStrategy { |
| force "com.google.guava:guava-jdk5:17.0" |
| } |
| } |
| def mavenGroup = project.getPath().split(":")[1] |
| project.group = "com.android.support.$mavenGroup" |
| project.version = release_version |
| addRepos(project.repositories) |
| |
| if (enablePublicRepos) { |
| apply plugin: 'com.android.databinding.localizemaven' |
| project.localizeMaven { |
| localRepoDir = file("$prebuiltsRoot/tools/common/m2/repository") |
| otherRepoDirs = repoNames |
| } |
| } |
| |
| project.afterEvaluate { |
| // Copy instrumentation test APK into the dist dir |
| def assembleTestTask = project.tasks.findByPath('assembleAndroidTest') |
| if (assembleTestTask != null) { |
| assembleTestTask.doLast { |
| // If the project actually has some instrumentation tests, copy its APK |
| if (!project.android.sourceSets.androidTest.java.sourceFiles.isEmpty()) { |
| def pkgTask = project.tasks.findByPath('packageDebugAndroidTest') |
| copy { |
| from(pkgTask.outputFile) |
| into(rootProject.ext.testApkDistOut) |
| rename { String fileName -> |
| "${project.getPath().replace(':', '-').substring(1)}_${fileName}" |
| } |
| } |
| } |
| } |
| } |
| |
| if (project.plugins.hasPlugin('maven')) { |
| def uploadArchivesTask = project.tasks.findByPath("uploadArchives") |
| if (uploadArchivesTask != null) { |
| createRepoDistTask.dependsOn(uploadArchivesTask) |
| } |
| } |
| } |
| } |
| |
| |
| |
| def addRepos(RepositoryHandler handler) { |
| repoNames.each { repo -> |
| handler.maven { |
| url repo |
| } |
| if (ext.enablePublicRepos) { |
| handler.mavenCentral() |
| handler.jcenter() |
| } |
| } |
| } |
| |
| def createKotlinCheckstyle(Project project) { |
| def kotlinCheckstyle = project.tasks.create(name : 'checkstyleKotlin', type: Checkstyle) { |
| configFile file("${project.rootProject.ext.supportRootFolder}/app-toolkit/kotlin-checkstyle.xml") |
| source project.sourceSets.main.allJava |
| source project.sourceSets.test.allJava |
| ignoreFailures false |
| showViolations true |
| include '**/*.kt' |
| classpath = project.files() |
| checkstyleClasspath = files(file("${project.rootProject.ext.checkoutRoot}/development/tools/checkstyle/checkstyle.jar").path) |
| } |
| project.tasks.findByName("check").dependsOn(kotlinCheckstyle) |
| // poor man's line length check |
| def lineCheck = project.tasks.create(name : "lineLengthCheck") { |
| (project.sourceSets.main.allJava.getSourceDirectories() + |
| project.sourceSets.test.allJava.getSourceDirectories()).each { sourceDir -> |
| fileTree(dir : sourceDir, include : "**/*.kt").each{ file -> |
| file.readLines().eachWithIndex { line, index -> |
| if (line.size() > 100) { |
| throw new Exception("line too long: file: $file line:$index line: $line") |
| } |
| } |
| } |
| } |
| } |
| kotlinCheckstyle.dependsOn(lineCheck) |
| } |
| |
| def createAndroidCheckstyle(Project project) { |
| def androidCheckstyle = project.tasks.create(name : 'checkstyleAndroid', type: Checkstyle) { |
| configFile file("${project.rootProject.ext.checkoutRoot}/development/tools/checkstyle/android-style.xml") |
| if (project.hasProperty('android')) { |
| source project.android.sourceSets.main.java.getSrcDirs() |
| } |
| if (project.sourceSets.hasProperty('main')) { |
| source project.sourceSets.main.allJava |
| } |
| ignoreFailures false |
| showViolations true |
| include '**/*.java' |
| classpath = project.files() |
| checkstyleClasspath = files(file("${project.rootProject.ext.checkoutRoot}/development/tools/checkstyle/checkstyle.jar").path) |
| } |
| project.tasks.findByName("check").dependsOn(androidCheckstyle) |
| } |
| |
| def buildDir |
| if (System.env.DIST_DIR != null && System.env.OUT_DIR != null) { |
| buildDir = new File(System.env.OUT_DIR + '/gradle/frameworks/support/build').getCanonicalFile() |
| } else { |
| buildDir = file("${ext.prebuiltsRootUri}/../out/host/gradle/frameworks/support/build") |
| } |
| ext.localMavenRepo = "file://${new File(buildDir, "flatfoot_repo").absolutePath}" |
| ext.addRepos = this.&addRepos |
| ext.createKotlinCheckstyle = this.&createKotlinCheckstyle |
| ext.createAndroidCheckstyle = this.&createAndroidCheckstyle |