aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle113
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 })
+}