blob: 8b26642a7db9abdb34e753ed42a9c6932af51073 [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 Banes44918a92015-01-08 11:55:55 +000033def api23SS = createApiSourceset('api23', 'api23', 'current', api22SS)
Xavier Ducrohet855a9222014-01-02 19:00:43 -080034
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
Kirill Grouchnikov39e84472016-01-25 14:25:41 -050068 androidTestCompile ('com.android.support.test:runner:0.4.1') {
69 exclude module: 'support-annotations'
70 }
71 androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1') {
72 exclude module: 'support-annotations'
73 }
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050074 testCompile 'junit:junit:4.12'
Griff Hazen43227bb2014-05-28 07:59:33 -070075}
76
77android {
78 compileSdkVersion 4
Griff Hazen43227bb2014-05-28 07:59:33 -070079
80 defaultConfig {
81 minSdkVersion 4
82 // TODO: get target from branch
83 //targetSdkVersion 19
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050084
85 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Griff Hazen43227bb2014-05-28 07:59:33 -070086 }
87
88 sourceSets {
89 main.manifest.srcFile 'AndroidManifest.xml'
90 main.java.srcDirs = ['java']
91 main.aidl.srcDirs = ['java']
92
93 androidTest.setRoot('tests')
94 androidTest.java.srcDir 'tests/java'
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -050095 androidTest.res.srcDir 'tests/res'
96 androidTest.manifest.srcFile 'tests/AndroidManifest.xml'
Griff Hazen43227bb2014-05-28 07:59:33 -070097 }
98
99 lintOptions {
100 // TODO: fix errors and reenable.
101 abortOnError false
102 }
Chris Banesaf26d9f2015-01-20 19:13:52 +0000103
104 compileOptions {
105 sourceCompatibility JavaVersion.VERSION_1_7
106 targetCompatibility JavaVersion.VERSION_1_7
107 }
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -0500108
109 testOptions {
110 unitTests.returnDefaultValues = true
Kirill Grouchnikovc5b4d172015-11-20 17:40:39 -0500111 compileSdkVersion 'current'
Kirill Grouchnikovd9d9aec2015-11-18 15:57:56 -0500112 }
Griff Hazen43227bb2014-05-28 07:59:33 -0700113}
114
115android.libraryVariants.all { variant ->
116 variant.javaCompile.dependsOn internalJar
117
118 def name = variant.buildType.name
119
Chris Banes4efd0382015-03-05 20:04:05 +0000120 if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) {
Griff Hazen43227bb2014-05-28 07:59:33 -0700121 return; // Skip debug builds.
122 }
123 def suffix = name.capitalize()
124
125 def jarTask = project.tasks.create(name: "jar${suffix}", type: Jar){
126 dependsOn variant.javaCompile
127 from variant.javaCompile.destinationDir
128 from 'LICENSE.txt'
129 }
130 def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) {
Chris Banes4efd0382015-03-05 20:04:05 +0000131 source android.sourceSets.main.java
Griff Hazen43227bb2014-05-28 07:59:33 -0700132 classpath = files(variant.javaCompile.classpath.files) + files(
Chris Banes4efd0382015-03-05 20:04:05 +0000133 "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
Griff Hazen43227bb2014-05-28 07:59:33 -0700134 }
135
136 def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) {
137 classifier = 'javadoc'
138 from 'build/docs/javadoc'
139 }
140
141 def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) {
142 classifier = 'sources'
Chris Banes4efd0382015-03-05 20:04:05 +0000143 from android.sourceSets.main.java.srcDirs
Sungsoo Lim9703a1e2015-10-24 00:25:29 +0900144 exclude('android/content/pm/**')
145 exclude('android/service/media/**')
Griff Hazen43227bb2014-05-28 07:59:33 -0700146 }
147
148 project.ext.allSS.each { ss ->
Chris Banes4efd0382015-03-05 20:04:05 +0000149 javadocTask.source ss.java
150 sourcesJarTask.from ss.java.srcDirs
Griff Hazen43227bb2014-05-28 07:59:33 -0700151 }
152
153 artifacts.add('archives', javadocJarTask);
154 artifacts.add('archives', sourcesJarTask);
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800155}
156
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800157uploadArchives {
158 repositories {
159 mavenDeployer {
Xavier Ducrohet855a9222014-01-02 19:00:43 -0800160 repository(url: uri(rootProject.ext.supportRepoOut)) {
Xavier Ducrohet86fb8ef2013-02-22 15:04:37 -0800161 }
162
163 pom.project {
164 name 'Android Support Library v4'
165 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."
166 url 'http://developer.android.com/tools/extras/support-library.html'
167 inceptionYear '2011'
168
169 licenses {
170 license {
171 name 'The Apache Software License, Version 2.0'
172 url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
173 distribution 'repo'
174 }
175 }
176
177 scm {
178 url "http://source.android.com"
179 connection "scm:git:https://android.googlesource.com/platform/frameworks/support"
180 }
181 developers {
182 developer {
183 name 'The Android Open Source Project'
184 }
185 }
186 }
187 }
188 }
189}