108 lines
3.4 KiB
Groovy
108 lines
3.4 KiB
Groovy
/*
|
|
* 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 androidx.build.dependencies.DependenciesKt
|
|
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 = DependenciesKt.getDependencyAsString(libs.protobufCompiler)
|
|
}
|
|
|
|
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 })
|
|
}
|