13d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar/* 23d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * Copyright (C) 2014 The Android Open Source Project 33d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * 43d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 53d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * you may not use this file except in compliance with the License. 63d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * You may obtain a copy of the License at 73d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * 83d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 93d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * 103d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * Unless required by applicable law or agreed to in writing, software 113d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 123d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * See the License for the specific language governing permissions and 143d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar * limitations under the License. 153d4bdfeeb2ffd1b2ec8a26abd1f4306295a66a43Yigit Boyar */ 16638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.Format; 17638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.QualifiedContent; 18638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.QualifiedContent.ContentType; 19638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.QualifiedContent.Scope; 20638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.Transform; 21638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.Context; 22638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.TransformInput; 23638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.TransformOutputProvider; 24638a4e1fdc7dcbc8f472684b8c446909992db344George Mountimport com.android.build.api.transform.TransformException; 25d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyarimport com.android.build.gradle.internal.pipeline.TransformManager; 269784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar// Top-level build file where you can add dataBindingConfiguration options common to all sub-projects/modules. 27085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar 28085724fd84795ae1631747443c43f77c08e11a28Yigit Boyarbuildscript { 29085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar dependencies { 30d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar classpath "com.android.tools.build:gradle:${dataBindingConfig.androidPluginVersion}" 31085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar // NOTE: Do not place your application dependencies here; they belong 32085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar // in the individual module build.gradle files 33085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 34085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar} 35085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar 36085724fd84795ae1631747443c43f77c08e11a28Yigit Boyarapply plugin: 'com.android.library' 372c91eecdca60d55e7a4c69b486e307331ac93137George Mount 38085724fd84795ae1631747443c43f77c08e11a28Yigit Boyarandroid { 399784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar compileSdkVersion dataBindingConfig.compileSdkVersion 409784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar buildToolsVersion dataBindingConfig.buildToolsVersion 41085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar 42085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar defaultConfig { 43085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar minSdkVersion 7 44d0bb3f1e1a94747bb3dd8bd2fee315d8816f0f5dGeorge Mount targetSdkVersion 23 45085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar versionCode 1 46085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar versionName "1.0" 47085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 48085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar compileOptions { 499784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar sourceCompatibility JavaVersion.VERSION_1_6 509784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar targetCompatibility JavaVersion.VERSION_1_6 51085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 52085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar buildTypes { 53085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar release { 54846795ea3e69eb482968cfea3312df04787c9bcfGeorge Mount minifyEnabled false 55085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 56085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 577201118b5554426cea3fcd07e4fd96e999d3eea9George Mount packagingOptions { 587201118b5554426cea3fcd07e4fd96e999d3eea9George Mount exclude 'META-INF/services/javax.annotation.processing.Processor' 591b9940e612fc73202837fbe9db2f9035f307b5d1George Mount exclude 'META-INF/LICENSE.txt' 601b9940e612fc73202837fbe9db2f9035f307b5d1George Mount exclude 'META-INF/NOTICE.txt' 61125f08f32dbe73b457768aeca4accfbc44dd44b6George Mount exclude 'android/databinding/DataBinderMapper.class' 627201118b5554426cea3fcd07e4fd96e999d3eea9George Mount } 63085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar} 64f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar 65f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyarconfigurations { 66f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar jarArchives 67f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar} 68f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar 69f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar 70b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyardependencies { 71165b0cf794bd941eeffe6b724a14ad3fb0a3659cYigit Boyar compile 'com.android.support:support-v4:21.0.3' 729784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar compile "com.android.databinding:baseLibrary:${dataBindingConfig.version}" 73b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar} 74b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar 75085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar//create jar tasks 76085724fd84795ae1631747443c43f77c08e11a28Yigit Boyarandroid.libraryVariants.all { variant -> 77085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar def name = variant.buildType.name 78085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar 7997d6ddf47f4ff1abb3ed5201ce5232163f5325b1Yigit Boyar if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) { 80085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar return; // Skip debug builds. 81085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 8279ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar def suffix = name.capitalize() 8379ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar 8479ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) { 85d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar source variant.javaCompile.source 8679ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar classpath = files(variant.javaCompile.classpath.files) + files( 8779ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar") 8879ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar } 8979ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar 9079ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) { 9179ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar classifier = 'javadoc' 9279ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar from 'build/docs/javadoc' 9379ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar } 9479ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar javadocJarTask.dependsOn javadocTask 9579ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar 9679ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) { 9779ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar classifier = 'sources' 98d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar from android.sourceSets.main.java.srcDirs 9979ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar } 10079ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar 10179ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar artifacts.add('archives', javadocJarTask); 10279ae2e5b4612d3af10bcadb235c86b564b5f97c1Yigit Boyar artifacts.add('archives', sourcesJarTask); 103085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar} 104085724fd84795ae1631747443c43f77c08e11a28Yigit BoyaruploadArchives { 105085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar repositories { 106085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar mavenDeployer { 107085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar pom.artifactId = 'library' 108b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar pom.project { 109b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar licenses { 110b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar license { 1119784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar name dataBindingConfig.licenseName 1129784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar url dataBindingConfig.licenseUrl 1139784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar distribution dataBindingConfig.licenseDistribution 114b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar } 115b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar } 116b1356339eaa6c8e967e4fc1dc283b82909a1208dYigit Boyar } 117085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 118085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar } 119085724fd84795ae1631747443c43f77c08e11a28Yigit Boyar} 120f9e51c010bd2eab9cca01baaccc0e5a73b8b72c9Yigit Boyar 121d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyarclass ExcludeShimTransform extends Transform { 122d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar Project project; 123d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public ExcludeShimTransform(Project project) { 124d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar this.project = project; 125d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 126d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public Set<ContentType> getInputTypes() { 127d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar return TransformManager.CONTENT_CLASS; 128d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 129924fa7c597694ebc433fc0379d0015785351d1b7Yigit Boyar 130d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public Set<Scope> getScopes() { 131d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar def result = new HashSet<Scope>(); 132d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar result.add(Scope.PROJECT); 133d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar return result; 134d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 135d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar 136d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public Set<Scope> getReferencedScopes() { 137d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar return TransformManager.SCOPE_FULL_LIBRARY; 138d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 1399784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar 140d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public boolean isIncremental() { 141d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar return false; 142d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 143d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar 144d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public String getName() { 145d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar return "DataBindingExcludeShimTransform"; 146d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 147d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar 148d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar public void transform(Context context, Collection<TransformInput> inputs, 149d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar Collection<TransformInput> referencedInputs, 150d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar TransformOutputProvider outputProvider, 151d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar boolean isIncremental) throws IOException, TransformException, InterruptedException { 152d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar inputs.each { transformInput -> 153d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar transformInput.getDirectoryInputs().each { 154d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar File outputDir = outputProvider.getContentLocation("data-binding-filtered", 155d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar it.getContentTypes(), it.getScopes(), Format.DIRECTORY); 156d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar outputDir.delete(); 157d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar outputDir.mkdirs(); 158d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar FileTree tree = project.fileTree(dir: it.getFile()) 159d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar tree.include '**/*.class' 160d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar tree.exclude 'android/databinding/DataBindingComponent.*' 161d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar tree.exclude 'android/databinding/DataBinderMapper.*' 162d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar tree.copy { 163d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar into outputDir 164d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 165d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 166d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar } 1679784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar } 168125f08f32dbe73b457768aeca4accfbc44dd44b6George Mount} 169125f08f32dbe73b457768aeca4accfbc44dd44b6George Mount 170d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyarandroid.registerTransform(new ExcludeShimTransform(project)) 171d437f7eeb199ed9bf9fb9bed664258dbbcd87130Yigit Boyar 172ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyartask prebuildAar(type : Copy) { 173ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyar dependsOn uploadArchives 174ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyar from "$buildDir/outputs/aar/library-release.aar" 1759784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar into dataBindingConfig.prebuildFolder 176ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyar rename { String fileName -> 177ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyar "databinding-library.aar" 178ee7586713d68806b556a425cbebf007a56261ff3Yigit Boyar } 1799784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3Yigit Boyar} 180