/* * Copyright (C) 2020 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. */ plugins { id('AndroidXPlugin') id('com.android.library') id('com.google.protobuf') } android { compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } sourceSets { main { java.srcDir 'java/src/' proto.srcDir 'proto/' } // TODO(b/161205849): Re-enable this test once icing nativeLib is no longer being built // inside appsearch:appsearch. //androidTest.java.srcDir 'java/tests/instrumentation/' } namespace "com.google.android.icing" } // This project has no device tests, skip building it androidComponents { beforeVariants(selector().withName("debug"), { variantBuilder -> variantBuilder.enableAndroidTest = false }) } dependencies { api('androidx.annotation:annotation:1.1.0') implementation('com.google.protobuf:protobuf-javalite:3.10.0') androidTestImplementation(libs.testCore) androidTestImplementation(libs.testRules) androidTestImplementation(libs.truth) androidTestImplementation(libs.kotlinBom) } protobuf { protoc { artifact = libs.protobufCompiler.get() } generateProtoTasks { all().each { task -> project.tasks.named("extractReleaseAnnotations").configure { it.dependsOn(task) } task.builtins { java { option 'lite' } } } } } // Create export artifact for all variants (debug/release) for JarJaring android.libraryVariants.all { variant -> def variantName = variant.name def suffix = variantName.capitalize() def exportJarTask = tasks.register("exportJar${suffix}", Jar) { archiveBaseName.set("icing-${variantName}") // The proto-lite dependency includes .proto files, which are not used by icing. When apps // depend on appsearch as well as proto-lite directly, these files conflict since jarjar // only renames the java classes. Remove them here since they are unused. // Expand the jar and remove any .proto files. from(zipTree(configurations.detachedConfiguration( dependencies.create(libs.protobufLite.get())).getSingleFile())) { exclude("**/*.proto") } from files(variant.javaCompileProvider.get().destinationDir) dependsOn variant.javaCompileProvider.get() } def exportConfiguration = configurations.register("export${suffix}") artifacts.add(exportConfiguration.name, exportJarTask.flatMap { it.archiveFile }) } androidx { mavenVersion = LibraryVersions.APPSEARCH }