import cash.z.ecc.android.Deps apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: "androidx.navigation.safeargs.kotlin" //apply plugin: 'com.github.ben-manes.versions' archivesBaseName = 'zcash-android-wallet' group = 'cash.z.ecc.android' version = Deps.versionName android { ndkVersion "21.1.6352462" compileSdkVersion Deps.compileSdkVersion buildToolsVersion Deps.buildToolsVersion viewBinding.enabled = true defaultConfig { applicationId Deps.packageName minSdkVersion Deps.minSdkVersion targetSdkVersion Deps.targetSdkVersion versionCode = Deps.versionCode versionName = Deps.versionName testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' testInstrumentationRunnerArguments clearPackageData: 'true' multiDexEnabled true resValue 'string', 'bugsnag_api_key', "${(project.findProperty('BUGSNAG_API_KEY') ?: System.getenv('BUGSNAG_API_KEY')) ?: ''}" // this setting allows using color resources in vector drawables, rather than hardcoded values (note: only works when minApi is 21) // per https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html: If set to an empty collection, all special handling of vector drawables will be disabled. vectorDrawables.generatedDensities = [] } flavorDimensions 'network' productFlavors { // would rather name them "testnet" and "mainnet" but product flavor names cannot start with the word "test" zcashtestnet { dimension 'network' applicationId 'cash.z.ecc.android.testnet' buildConfigField "String", "DEFAULT_SERVER_URL", '"lightwalletd.testnet.electriccoin.co"' matchingFallbacks = ['zcashtestnet', 'debug'] } zcashmainnet { dimension 'network' buildConfigField "String", "DEFAULT_SERVER_URL", '"lightwalletd.electriccoin.co"' matchingFallbacks = ['zcashmainnet', 'release'] } } signingConfigs { placeholder { storeFile file("${rootProject.projectDir}/placeholder.keystore") keyAlias "androiddebugkey" keyPassword "android" storePassword "android" } } buildTypes { release { minifyEnabled false shrinkResources false useProguard false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.placeholder } debug { minifyEnabled false shrinkResources false useProguard false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } // builds for testing only in the wallet team, typically unfinished features // this flavor can be installed alongside the others qa { initWith debug debuggable true applicationIdSuffix ".internal" matchingFallbacks = ['debug'] signingConfig signingConfigs.placeholder } } configurations { cleanedAnnotations compile.exclude group: 'com.intellij' , module:'annotations' // compile.exclude group: 'org.jetbrains' , module:'annotations' } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" freeCompilerArgs += "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" freeCompilerArgs += "-Xopt-in=kotlin.time.ExperimentalTime" // freeCompilerArgs += "-Xopt-in=kotlinx.coroutines.ObsoleteCoroutinesApi" // freeCompilerArgs += "-Xopt-in=kotlinx.coroutines.FlowPreview" } testOptions { execution 'ANDROIDX_TEST_ORCHESTRATOR' } kapt { arguments { arg 'dagger.fastInit', 'enabled' arg 'dagger.fullBindingGraphValidation', 'ERROR' arg 'dagger.gradle.incremental' } } packagingOptions { exclude 'META-INF/AL2.0' exclude 'META-INF/LGPL2.1' } applicationVariants.all { variant -> variant.outputs.all { if (variant.buildType.name == "qa") { it.versionNameOverride = "${Deps.versionName}-QA" } outputFileName = "$archivesBaseName-v${Deps.versionName}-${variant.buildType.name}.apk" } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':qrecycler') implementation project(':feedback') implementation project(':mnemonic') implementation project(':lockbox') // Zcash implementation Deps.Zcash.ANDROID_WALLET_PLUGINS implementation Deps.Zcash.SDK // Kotlin implementation Deps.Kotlin.STDLIB // Android implementation Deps.AndroidX.ANNOTATION implementation Deps.AndroidX.APPCOMPAT implementation Deps.AndroidX.BIOMETRICS implementation Deps.AndroidX.CONSTRAINT_LAYOUT implementation Deps.AndroidX.CORE_KTX implementation Deps.AndroidX.FRAGMENT_KTX implementation Deps.AndroidX.LEGACY implementation Deps.AndroidX.PAGING implementation Deps.AndroidX.RECYCLER implementation Deps.AndroidX.CameraX.CAMERA2 implementation Deps.AndroidX.CameraX.CORE implementation Deps.AndroidX.CameraX.LIFECYCLE implementation Deps.AndroidX.CameraX.View.EXT implementation Deps.AndroidX.CameraX.View.VIEW implementation Deps.AndroidX.Lifecycle.LIFECYCLE_RUNTIME_KTX implementation Deps.AndroidX.Navigation.FRAGMENT_KTX implementation Deps.AndroidX.Navigation.UI_KTX implementation Deps.AndroidX.Room.ROOM_KTX kapt Deps.AndroidX.Room.ROOM_COMPILER // Google implementation Deps.Google.GUAVA implementation Deps.Google.MATERIAL // Dagger implementation Deps.Dagger.ANDROID_SUPPORT kapt Deps.Dagger.ANDROID_PROCESSOR kapt Deps.Dagger.COMPILER // grpc-java implementation Deps.Grpc.ANDROID implementation Deps.Grpc.OKHTTP implementation Deps.Grpc.PROTOBUG implementation Deps.Grpc.STUB implementation Deps.JavaX.JAVA_ANNOTATION // Analytics (for dogfooding/crash-reporting/feedback only on internal team builds) implementation Deps.Analytics.MIXPANEL implementation Deps.Analytics.BUGSNAG // Misc. implementation Deps.Misc.LOTTIE implementation Deps.Misc.CHIPS implementation Deps.Misc.Plugins.QR_SCANNER // Tests testImplementation Deps.Test.JUNIT testImplementation Deps.Test.MOKITO testImplementation Deps.Test.MOKITO_KOTLIN androidTestImplementation Deps.Test.Android.JUNIT androidTestImplementation Deps.Test.Android.ESPRESSO } defaultTasks 'clean', 'assembleZcashmainnetRelease'