| /* |
| * Copyright 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.Publish |
| import org.jetbrains.kotlin.gradle.tasks.KotlinCompile |
| |
| plugins { |
| id("AndroidXPlugin") |
| id("kotlin") |
| id("com.google.protobuf") |
| } |
| |
| dependencies { |
| implementation(libs.protobufLite) |
| api(project(":datastore:datastore-core")) |
| } |
| |
| protobuf { |
| protoc { |
| artifact = libs.protobufCompiler.get() |
| } |
| |
| // Generates the java proto-lite code for the protos in this project. See |
| // https://github.com/google/protobuf-gradle-plugin#customizing-protobuf-compilation |
| // for more information. |
| generateProtoTasks { |
| all().each { task -> |
| task.builtins { |
| java { |
| option "lite" |
| } |
| } |
| } |
| } |
| } |
| |
| afterEvaluate { |
| lint { |
| lintOptions { |
| // protobuf generates unannotated and synthetic accessor methods |
| disable("UnknownNullness", "SyntheticAccessor") |
| } |
| } |
| } |
| |
| // Create export artifact for for JarJaring |
| def preferencesProtoJarJarTask = tasks.register("exportJar", Jar) { |
| archiveBaseName.set("export") |
| from(sourceSets.main.output) |
| // The proto-lite dependency includes .proto files, which are not used by datastore. When apps |
| // depend on datastore as well as proto-lite directly, these files conflict since jarjar only |
| // renames the java classes. Remove them here since they are unused. |
| exclude("**/*.proto") |
| |
| from(zipTree(configurations.detachedConfiguration( |
| dependencies.create(libs.protobufLite.get())).getSingleFile())) |
| } |
| |
| def jarjarConf = configurations.register("export") |
| artifacts.add(jarjarConf.name, preferencesProtoJarJarTask.flatMap { it.archiveFile }) |
| |
| androidx { |
| name = "Android Preferences DataStore Proto" |
| publish = Publish.NONE |
| inceptionYear = "2020" |
| description = "Jarjar the generated proto and proto-lite dependency for use by " + |
| "datastore-preferences." |
| } |