diff options
Diffstat (limited to 'build.gradle')
-rw-r--r-- | build.gradle | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..62e6e73 --- /dev/null +++ b/build.gradle @@ -0,0 +1,113 @@ +/* + * 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/' + 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 }) +} |