/* * Copyright (C) 2014 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 com.android.build.api.transform.Format; import com.android.build.api.transform.QualifiedContent; import com.android.build.api.transform.QualifiedContent.ContentType; import com.android.build.api.transform.QualifiedContent.Scope; import com.android.build.api.transform.Transform; import com.android.build.api.transform.Context; import com.android.build.api.transform.TransformInput; import com.android.build.api.transform.TransformOutputProvider; import com.android.build.api.transform.TransformException; import com.android.build.gradle.internal.pipeline.TransformManager; // Top-level build file where you can add dataBindingConfiguration options common to all sub-projects/modules. buildscript { dependencies { classpath "com.android.tools.build:gradle:${dataBindingConfig.androidPluginVersion}" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } apply plugin: 'com.android.library' android { compileSdkVersion dataBindingConfig.compileSdkVersion buildToolsVersion dataBindingConfig.buildToolsVersion defaultConfig { minSdkVersion 7 targetSdkVersion 23 versionCode 1 versionName "1.0" } compileOptions { sourceCompatibility dataBindingConfig.javaTargetCompatibility targetCompatibility dataBindingConfig.javaSourceCompatibility } buildTypes { release { minifyEnabled false } } packagingOptions { exclude 'META-INF/services/javax.annotation.processing.Processor' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'android/databinding/DataBinderMapper.class' } } configurations { jarArchives } dependencies { compile 'com.android.support:support-v4:21.0.3' compile "com.android.databinding:baseLibrary:${dataBindingConfig.version}" } //create jar tasks android.libraryVariants.all { variant -> def name = variant.buildType.name if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) { return; // Skip debug builds. } def suffix = name.capitalize() def javadocTask = project.tasks.create(name: "javadoc${suffix}", type: Javadoc) { source variant.javaCompile.source options.showFromPublic() options.tags = ['hide'] classpath = files(variant.javaCompile.classpath.files) + files( "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar") } def javadocJarTask = project.tasks.create(name: "javadocJar${suffix}", type: Jar) { classifier = 'javadoc' from 'build/docs/javadoc' } javadocJarTask.dependsOn javadocTask def sourcesJarTask = project.tasks.create(name: "sourceJar${suffix}", type: Jar) { classifier = 'sources' from android.sourceSets.main.java.srcDirs } artifacts.add('archives', javadocJarTask); artifacts.add('archives', sourcesJarTask); } uploadArchives { repositories { mavenDeployer { pom.artifactId = 'library' pom.project { licenses { license { name dataBindingConfig.licenseName url dataBindingConfig.licenseUrl distribution dataBindingConfig.licenseDistribution } } } } } } class ExcludeShimTransform extends Transform { Project project; public ExcludeShimTransform(Project project) { this.project = project; } public Set<ContentType> getInputTypes() { return TransformManager.CONTENT_CLASS; } public Set<Scope> getScopes() { def result = new HashSet<Scope>(); result.add(Scope.PROJECT); return result; } public Set<Scope> getReferencedScopes() { return TransformManager.SCOPE_FULL_LIBRARY; } public boolean isIncremental() { return false; } public String getName() { return "DataBindingExcludeShimTransform"; } public void transform(Context context, Collection<TransformInput> inputs, Collection<TransformInput> referencedInputs, TransformOutputProvider outputProvider, boolean isIncremental) throws IOException, TransformException, InterruptedException { inputs.each { transformInput -> transformInput.getDirectoryInputs().each { File outputDir = outputProvider.getContentLocation("data-binding-filtered", it.getContentTypes(), it.getScopes(), Format.DIRECTORY); outputDir.delete(); outputDir.mkdirs(); FileTree tree = project.fileTree(dir: it.getFile()) tree.include '**/*.class' tree.exclude 'android/databinding/DataBindingComponent.*' tree.exclude 'android/databinding/DataBinderMapper.*' tree.copy { into outputDir } } } } } android.registerTransform(new ExcludeShimTransform(project)) task prebuildAar(type : Copy) { dependsOn uploadArchives from "$buildDir/outputs/aar/library-release.aar" into dataBindingConfig.prebuildFolder rename { String fileName -> "databinding-library.aar" } }