buildscript { ext.buildConfig = [ 'compileSdkVersion': 28, 'minSdkVersion': 16, 'targetSdkVersion': 28 ] ext.versions = [ 'architectureComponents': '2.0.0', 'grpc':'1.17.1', 'kotlin': '1.3.10', 'coroutines': '1.1.0', 'junitJupiter': '5.4.0' ] repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.4.0-alpha05' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}" classpath "org.jetbrains.kotlin:kotlin-allopen:${versions.kotlin}" classpath "com.github.ben-manes:gradle-versions-plugin:0.20.0" classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath "com.google.protobuf:protobuf-gradle-plugin:0.8.7" classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.6' } } apply from: 'custom-tasks.gradle' apply plugin: 'com.android.library' apply plugin: "kotlin-android-extensions" apply plugin: "kotlin-android" apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-allopen' apply plugin: 'com.google.protobuf' apply plugin: 'com.github.ben-manes.versions' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.getkeepsafe.dexcount' group = 'cash.z.android.wallet' version = '1.7.3' repositories { google() jcenter() } android { compileSdkVersion 28 defaultConfig { minSdkVersion 16 targetSdkVersion 28 versionCode = 1_07_03 versionName = version testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true archivesBaseName = "zcash-android-wallet-sdk-$versionName" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" } } sourceSets { main { java { srcDirs "build/generated/source/grpc" } proto { srcDir 'src/main/proto' } } } compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } kotlinOptions { // Allow the use of Result objects understanding that if the API changes, we'll have to fix it before upgrading our kotlin version freeCompilerArgs = ["-Xallow-result-return-type"] } packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/license.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/notice.txt' exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE.md' exclude 'META-INF/LICENSE-notice.md' } } allOpen { // marker for classes that we want to be able to extend in debug builds for testing purposes annotation 'cash.z.wallet.sdk.annotation.OpenClass' } clean { delete "$project.projectDir/src/generated/source/grpc" } protobuf { generatedFilesBaseDir = "$projectDir/src/generated/source/grpc" protoc { artifact = 'com.google.protobuf:protoc:3.6.1' } plugins { javalite { artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0" } grpc { artifact = "io.grpc:protoc-gen-grpc-java:${versions.grpc}" } } generateProtoTasks { all().each { task -> task.plugins { javalite {} grpc { // Options added to --grpc_out option 'lite' } } } } } dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.multidex:multidex:2.0.1' // Architecture components implementation "androidx.lifecycle:lifecycle-runtime:${versions.architectureComponents}" implementation "androidx.lifecycle:lifecycle-extensions:${versions.architectureComponents}" implementation "androidx.room:room-runtime:${versions.architectureComponents}" implementation "androidx.room:room-common:${versions.architectureComponents}" kapt "androidx.lifecycle:lifecycle-compiler:${versions.architectureComponents}" kapt "androidx.room:room-compiler:${versions.architectureComponents}" // kotlin implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:${versions.coroutines}" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:${versions.coroutines}" // grpc-java implementation "io.grpc:grpc-okhttp:${versions.grpc}" implementation "io.grpc:grpc-protobuf-lite:${versions.grpc}" implementation "io.grpc:grpc-stub:${versions.grpc}" implementation 'javax.annotation:javax.annotation-api:1.3.2' // other implementation "com.jakewharton.timber:timber:4.7.1" // Tests testImplementation "org.jetbrains.kotlin:kotlin-reflect:${versions.kotlin}" testImplementation 'org.mockito:mockito-junit-jupiter:2.24.0' testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0' testImplementation "org.junit.jupiter:junit-jupiter-api:${versions.junitJupiter}" testImplementation "org.junit.jupiter:junit-jupiter-engine:${versions.junitJupiter}" testImplementation "org.junit.jupiter:junit-jupiter-migrationsupport:${versions.junitJupiter}" testImplementation "io.grpc:grpc-testing:1.18.0" androidTestImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0' androidTestImplementation 'org.mockito:mockito-android:2.24.0' androidTestImplementation "org.junit.jupiter:junit-jupiter-api:${versions.junitJupiter}" androidTestImplementation "androidx.test:runner:1.1.1" androidTestImplementation "androidx.test.espresso:espresso-core:3.1.1" androidTestImplementation "androidx.test:core:1.1.0" androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation "androidx.arch.core:core-testing:${versions.architectureComponents}" } preBuild.dependsOn includeDirBugFix preBuild.dependsOn copyAllJniLibs