1apply plugin: 'android-library' 2archivesBaseName = 'support-v4' 3 4// create a jar task for the code internal implementation 5tasks.create(name: "internalJar", type: Jar) { 6 baseName "internal_impl" 7} 8 9// -------------------------- 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. 13 14ext.allSS = [] 15 16def baseSS = createApiSourceset('donut', 'donut', '4', null) 17def eclairSS = createApiSourceset('eclair', 'eclair', '5', baseSS) 18def 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) 22def honeycombMr1SS = createApiSourceset('honeycombmr1', 'honeycomb_mr1', '12', honeycombSS) 23def honeycombMr2SS = createApiSourceset('honeycombmr2', 'honeycomb_mr2', '13', honeycombMr1SS) 24def 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) 30def api20SS = createApiSourceset('api20', 'api20', '20', kitkatSS) 31def api21SS = createApiSourceset('api21', 'api21', '21', api20SS) 32def api22SS = createApiSourceset('api22', 'api22', '22', api21SS) 33def api23SS = createApiSourceset('api23', 'api23', 'current', api22SS) 34 35 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 } 46 ext.allSS.add(sourceSet) 47 48 internalJar.from sourceSet.output 49 50 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 58dependencies { 59 compile project(':support-annotations') 60 donutCompile project(':support-annotations') 61 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) 67} 68 69android { 70 compileSdkVersion 4 71 72 defaultConfig { 73 minSdkVersion 4 74 // TODO: get target from branch 75 //targetSdkVersion 19 76 } 77 78 sourceSets { 79 main.manifest.srcFile 'AndroidManifest.xml' 80 main.java.srcDirs = ['java'] 81 main.aidl.srcDirs = ['java'] 82 83 androidTest.setRoot('tests') 84 androidTest.java.srcDir 'tests/java' 85 } 86 87 lintOptions { 88 // TODO: fix errors and reenable. 89 abortOnError false 90 } 91 92 compileOptions { 93 sourceCompatibility JavaVersion.VERSION_1_7 94 targetCompatibility JavaVersion.VERSION_1_7 95 } 96} 97 98android.libraryVariants.all { variant -> 99 variant.javaCompile.dependsOn internalJar 100 101 def name = variant.buildType.name 102 103 if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) { 104 return; // Skip debug builds. 105 } 106 def suffix = name.capitalize() 107 108 def jarTask = project.tasks.create(name: "jar${suffix}", type: Jar){ 109 dependsOn variant.javaCompile 110 from variant.javaCompile.destinationDir 111 from 'LICENSE.txt' 112 } 113 def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) { 114 source android.sourceSets.main.java 115 classpath = files(variant.javaCompile.classpath.files) + files( 116 "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar") 117 } 118 119 def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) { 120 classifier = 'javadoc' 121 from 'build/docs/javadoc' 122 } 123 124 def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) { 125 classifier = 'sources' 126 from android.sourceSets.main.java.srcDirs 127 } 128 129 project.ext.allSS.each { ss -> 130 javadocTask.source ss.java 131 sourcesJarTask.from ss.java.srcDirs 132 } 133 134 artifacts.add('archives', javadocJarTask); 135 artifacts.add('archives', sourcesJarTask); 136} 137 138uploadArchives { 139 repositories { 140 mavenDeployer { 141 repository(url: uri(rootProject.ext.supportRepoOut)) { 142 } 143 144 pom.project { 145 name 'Android Support Library v4' 146 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." 147 url 'http://developer.android.com/tools/extras/support-library.html' 148 inceptionYear '2011' 149 150 licenses { 151 license { 152 name 'The Apache Software License, Version 2.0' 153 url 'http://www.apache.org/licenses/LICENSE-2.0.txt' 154 distribution 'repo' 155 } 156 } 157 158 scm { 159 url "http://source.android.com" 160 connection "scm:git:https://android.googlesource.com/platform/frameworks/support" 161 } 162 developers { 163 developer { 164 name 'The Android Open Source Project' 165 } 166 } 167 } 168 } 169 } 170} 171