blob: 68711d0c60fde454f5bd96521dc8a75c77c70cad [file] [log] [blame]
Griff Hazen43227bb2014-05-28 07:59:33 -07001apply plugin: 'android-library'
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -08002archivesBaseName = 'support-v4'
3
Xavier Ducrohet9acddc72014-05-28 22:20:01 -07004// create a jar task for the code internal implementation
5tasks.create(name: "internalJar", type: Jar) {
6 baseName "internal_impl"
7}
8
Xavier Ducrohet15474b92014-03-21 17:11:38 -07009// --------------------------
10// TO ADD NEW PLATFORM SPECIFIC CODE, UPDATE THIS:
11// create and configure the sourcesets/dependencies for platform-specific code.
12// values are: sourceset name, source folder name, api level, previous sourceset.
Griff Hazen43227bb2014-05-28 07:59:33 -070013
14ext.allSS = []
15
16def baseSS = createApiSourceset('donut', 'donut', '4', null)
17def eclairSS = createApiSourceset('eclair', 'eclair', '5', baseSS)
Xavier Ducrohet15474b92014-03-21 17:11:38 -070018def eclairMr1SS = createApiSourceset('eclairmr1', 'eclair-mr1', '7', eclairSS)
19def froyoSS = createApiSourceset('froyo', 'froyo', '8', eclairMr1SS)
20def gingerbreadSS = createApiSourceset('gingerbread', 'gingerbread', '9', froyoSS)
21def honeycombSS = createApiSourceset('honeycomb', 'honeycomb', '11', gingerbreadSS)
Chris Banesc55f5052014-07-03 15:40:30 +010022def honeycombMr1SS = createApiSourceset('honeycombmr1', 'honeycomb_mr1', '12', honeycombSS)
23def honeycombMr2SS = createApiSourceset('honeycombmr2', 'honeycomb_mr2', '13', honeycombMr1SS)
Xavier Ducrohet15474b92014-03-21 17:11:38 -070024def icsSS = createApiSourceset('ics', 'ics', '14', honeycombMr2SS)
25def icsMr1SS = createApiSourceset('icsmr1', 'ics-mr1', '15', icsSS)
26def jbSS = createApiSourceset('jellybean', 'jellybean', '16', icsMr1SS)
27def jbMr1SS = createApiSourceset('jellybeanmr1', 'jellybean-mr1', '17', jbSS)
28def jbMr2SS = createApiSourceset('jellybeanmr2', 'jellybean-mr2', '18', jbMr1SS)
29def kitkatSS = createApiSourceset('kitkat', 'kitkat', '19', jbMr2SS)
Chris Banes1981f8c2015-06-10 10:06:24 +010030def api20SS = createApiSourceset('api20', 'api20', '20', kitkatSS)
31def api21SS = createApiSourceset('api21', 'api21', '21', api20SS)
32def api22SS = createApiSourceset('api22', 'api22', '22', api21SS)
Chris Banes36812572015-11-25 00:33:59 +000033def api23SS = createApiSourceset('api23', 'api23', '23', api22SS)
34def api24SS = createApiSourceset('api24', 'api24', 'current', api23SS)
Xavier Ducrohet15474b92014-03-21 17:11:38 -070035
36def createApiSourceset(String name, String folder, String apiLevel, SourceSet previousSource) {
37 def sourceSet = sourceSets.create(name)
38 sourceSet.java.srcDirs = [folder]
39
40 def configName = sourceSet.getCompileConfigurationName()
41
42 project.getDependencies().add(configName, getAndroidPrebuilt(apiLevel))
43 if (previousSource != null) {
44 setupDependencies(configName, previousSource)
45 }
Griff Hazen43227bb2014-05-28 07:59:33 -070046 ext.allSS.add(sourceSet)
Xavier Ducrohet9acddc72014-05-28 22:20:01 -070047
48 internalJar.from sourceSet.output
49
Xavier Ducrohet15474b92014-03-21 17:11:38 -070050 return sourceSet
51}
52
53def setupDependencies(String configName, SourceSet previousSourceSet) {
54 project.getDependencies().add(configName, previousSourceSet.output)
55 project.getDependencies().add(configName, previousSourceSet.compileClasspath)
56}
57
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -080058dependencies {
Tor Norbye05568b72014-03-20 19:19:52 -070059 compile project(':support-annotations')
Yigit Boyard392c8c2014-10-09 11:30:18 -070060 donutCompile project(':support-annotations')
Griff Hazen43227bb2014-05-28 07:59:33 -070061
62 // add the internal implementation as a dependency.
63 // this is not enough to make the regular compileJava task
64 // depend on the generation of this jar. This is done below
65 // when manipulating the libraryVariants.
66 compile files(internalJar.archivePath)
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050067
68 androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
69 androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
70 testCompile 'junit:junit:4.12'
Griff Hazen43227bb2014-05-28 07:59:33 -070071}
72
Justin Klaassen68e7adb2016-01-21 12:50:47 -080073sourceCompatibility = JavaVersion.VERSION_1_7
74targetCompatibility = JavaVersion.VERSION_1_7
75
Griff Hazen43227bb2014-05-28 07:59:33 -070076android {
77 compileSdkVersion 4
Griff Hazen43227bb2014-05-28 07:59:33 -070078
79 defaultConfig {
80 minSdkVersion 4
81 // TODO: get target from branch
82 //targetSdkVersion 19
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050083
84 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Griff Hazen43227bb2014-05-28 07:59:33 -070085 }
86
87 sourceSets {
88 main.manifest.srcFile 'AndroidManifest.xml'
89 main.java.srcDirs = ['java']
90 main.aidl.srcDirs = ['java']
91
92 androidTest.setRoot('tests')
93 androidTest.java.srcDir 'tests/java'
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050094 androidTest.res.srcDir 'tests/res'
95 androidTest.manifest.srcFile 'tests/AndroidManifest.xml'
Griff Hazen43227bb2014-05-28 07:59:33 -070096 }
97
98 lintOptions {
99 // TODO: fix errors and reenable.
100 abortOnError false
101 }
Chris Banesaf26d9f2015-01-20 19:13:52 +0000102
103 compileOptions {
104 sourceCompatibility JavaVersion.VERSION_1_7
105 targetCompatibility JavaVersion.VERSION_1_7
106 }
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -0500107
108 testOptions {
109 unitTests.returnDefaultValues = true
Kirill Grouchnikovc5b4d172015-11-20 17:40:39 -0500110 compileSdkVersion 'current'
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -0500111 }
Griff Hazen43227bb2014-05-28 07:59:33 -0700112}
113
114android.libraryVariants.all { variant ->
115 variant.javaCompile.dependsOn internalJar
116
117 def name = variant.buildType.name
118
Chris Banes4efd0382015-03-05 20:04:05 +0000119 if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
Griff Hazen43227bb2014-05-28 07:59:33 -0700120 return; // Skip debug builds.
121 }
122 def suffix = name.capitalize()
123
124 def jarTask = project.tasks.create(name: "jar${suffix}", type: Jar){
125 dependsOn variant.javaCompile
126 from variant.javaCompile.destinationDir
127 from 'LICENSE.txt'
128 }
129 def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
Chris Banes4efd0382015-03-05 20:04:05 +0000130 source android.sourceSets.main.java
Griff Hazen43227bb2014-05-28 07:59:33 -0700131 classpath = files(variant.javaCompile.classpath.files) + files(
Chris Banes4efd0382015-03-05 20:04:05 +0000132 "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
Griff Hazen43227bb2014-05-28 07:59:33 -0700133 }
134
135 def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
136 classifier = 'javadoc'
137 from 'build/docs/javadoc'
138 }
139
140 def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
141 classifier = 'sources'
Chris Banes4efd0382015-03-05 20:04:05 +0000142 from android.sourceSets.main.java.srcDirs
Sungsoo Lim9703a1e2015-10-24 00:25:29 +0900143 exclude('android/content/pm/**')
144 exclude('android/service/media/**')
Griff Hazen43227bb2014-05-28 07:59:33 -0700145 }
146
147 project.ext.allSS.each { ss ->
Chris Banes4efd0382015-03-05 20:04:05 +0000148 javadocTask.source ss.java
149 sourcesJarTask.from ss.java.srcDirs
Griff Hazen43227bb2014-05-28 07:59:33 -0700150 }
151
152 artifacts.add('archives', javadocJarTask);
153 artifacts.add('archives', sourcesJarTask);
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800154}
155
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800156uploadArchives {
157 repositories {
158 mavenDeployer {
Xavier Ducrohet855a9222014-01-02 19:00:43 -0800159 repository(url: uri(rootProject.ext.supportRepoOut)) {
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800160 }
161
162 pom.project {
163 name 'Android Support Library v4'
164 description "The Support Library is a static library that you can add to your Android application in order to use APIs that are either not available for older platform versions or utility APIs that aren't a part of the framework APIs. Compatible on devices running API 4 or later."
165 url 'http://developer.android.com/tools/extras/support-library.html'
166 inceptionYear '2011'
167
168 licenses {
169 license {
170 name 'The Apache Software License, Version 2.0'
171 url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
172 distribution 'repo'
173 }
174 }
175
176 scm {
177 url "http://source.android.com"
178 connection "scm:git:https://android.googlesource.com/platform/frameworks/support"
179 }
180 developers {
181 developer {
182 name 'The Android Open Source Project'
183 }
184 }
185 }
186 }
187 }
188}