| /* |
| * 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. |
| */ |
| |
| import static androidx.build.SupportConfig.* |
| |
| buildscript { |
| dependencies { |
| classpath('gradle.plugin.com.google.protobuf:protobuf-gradle-plugin:0.8.13') |
| } |
| } |
| |
| plugins { |
| id('com.android.library') |
| id('com.google.protobuf') |
| } |
| |
| android { |
| buildToolsVersion BUILD_TOOLS_VERSION |
| compileSdkVersion COMPILE_SDK_VERSION |
| defaultConfig { |
| minSdkVersion DEFAULT_MIN_SDK_VERSION |
| targetSdkVersion TARGET_SDK_VERSION |
| testInstrumentationRunner INSTRUMENTATION_RUNNER |
| } |
| compileOptions { |
| sourceCompatibility = JavaVersion.VERSION_1_8 |
| targetCompatibility = JavaVersion.VERSION_1_8 |
| } |
| sourceSets { |
| main { |
| java.srcDir 'java/src/' |
| manifest.srcFile 'AndroidManifest.xml' |
| 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/' |
| } |
| } |
| |
| 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) |
| } |
| |
| 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 }) |
| } |