zcash-android-wallet-sdk/lightwallet-client-lib/build.gradle.kts

149 lines
3.9 KiB
Plaintext

import com.google.protobuf.gradle.id
import com.google.protobuf.gradle.proto
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
id("zcash-sdk.android-conventions")
id("org.jetbrains.dokka")
id("com.google.protobuf")
id("wtf.emulator.gradle")
id("zcash-sdk.emulator-wtf-conventions")
id("maven-publish")
id("signing")
id("zcash-sdk.publishing-conventions")
}
publishing {
publications {
publications.withType<MavenPublication>().all {
artifactId = "lightwallet-client"
}
}
}
android {
namespace = "co.electriccoin.lightwallet.client"
useLibrary("android.test.runner")
defaultConfig {
consumerProguardFiles("proguard-consumer.txt")
}
buildFeatures {
buildConfig = true
}
buildTypes {
getByName("debug").apply {
isMinifyEnabled = false
}
getByName("release").apply {
isMinifyEnabled = project.property("IS_MINIFY_SDK_ENABLED").toString().toBoolean()
proguardFiles.addAll(
listOf(
getDefaultProguardFile("proguard-android-optimize.txt"),
File("proguard-project.txt")
)
)
}
create("benchmark") {
// We provide the extra benchmark build type just for benchmarking purposes
initWith(buildTypes.getByName("release"))
matchingFallbacks += listOf("release")
}
}
sourceSets.getByName("main") {
proto { srcDir("src/main/proto") }
}
lint {
baseline = File("lint-baseline.xml")
}
}
tasks.dokkaHtml.configure {
dokkaSourceSets {
configureEach {
outputDirectory.set(file("build/docs/rtd"))
displayName.set("Lightwallet Client")
includes.from("packages.md")
}
}
}
protobuf {
protoc {
artifact = libs.protoc.compiler.get().asCoordinateString()
}
plugins {
id("java") {
artifact = libs.protoc.gen.java.get().asCoordinateString()
}
id("grpc") {
artifact = libs.protoc.gen.java.get().asCoordinateString()
}
id("grpckt") {
artifact = libs.protoc.gen.kotlin.get().asCoordinateString() + ":jdk8@jar"
}
}
generateProtoTasks {
all().forEach {
it.plugins {
id("java") {
option("lite")
}
id("grpc") {
option("lite")
}
id("grpckt") {
option("lite")
}
}
it.builtins {
id("kotlin") {
option("lite")
}
}
}
}
}
dependencies {
implementation(libs.androidx.annotation)
implementation(libs.kotlin.stdlib)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.coroutines.android)
// TODO [#1030]: Make sdk-lib gRPC objects free (and then make this `implementation`)
// TODO [#1030]: https://github.com/zcash/zcash-android-wallet-sdk/issues/1030
api(libs.bundles.grpc)
// Tests
testImplementation(libs.kotlin.reflect)
testImplementation(libs.kotlin.test)
testImplementation(libs.grpc.testing)
androidTestImplementation(libs.androidx.multidex)
androidTestImplementation(libs.androidx.test.runner)
androidTestImplementation(libs.androidx.test.junit)
androidTestImplementation(libs.androidx.test.core)
androidTestImplementation(libs.coroutines.okhttp)
androidTestImplementation(libs.kotlin.test)
}
tasks {
getByName("preBuild").dependsOn(create("bugfixTask") {
doFirst {
mkdir("build/extracted-include-protos/main")
}
})
}
fun MinimalExternalModuleDependency.asCoordinateString() =
"${module.group}:${module.name}:${versionConstraint.displayName}"