apply plugin: 'com.android.application' apply plugin: 'com.github.triplet.play' apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' def repoRootPath = projectDir.absoluteFile.parentFile.absolutePath def extraAssetsDirectory = "$project.buildDir/extraAssets" def extraJniDirectory = "$project.buildDir/extraJni" def keystorePropertiesFile = file('keystore.properties') def keystoreProperties = new Properties() if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { compileSdkVersion 30 buildToolsVersion '30.0.3' defaultConfig { applicationId "net.mullvad.mullvadvpn" minSdkVersion 24 targetSdkVersion 30 versionCode 21020099 versionName "2021.2" } if (keystorePropertiesFile.exists()) { signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { minifyEnabled false signingConfig signingConfigs.release } } } buildTypes { fdroid { initWith release minifyEnabled false signingConfig null } } sourceSets { main { assets { srcDirs = files(extraAssetsDirectory) } jniLibs { srcDirs = files(extraJniDirectory) } java { srcDirs += 'src/main/kotlin/' } } test { java { srcDirs += 'src/test/kotlin/' } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } applicationVariants.all { variant -> variant.mergeAssetsProvider.configure { dependsOn copyExtraAssets } } testOptions { unitTests.all { testLogging { outputs.upToDateWhen { false } events "passed", "skipped", "failed", "standardOut", "standardError" showCauses true showExceptions true } } } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { allWarningsAsErrors = true kotlinOptions.freeCompilerArgs += [ "-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi", "-Xuse-experimental=kotlinx.coroutines.ObsoleteCoroutinesApi", ] } } play { serviceAccountCredentials = file("play-api-key.json") } repositories { jcenter() google() } dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' implementation "androidx.constraintlayout:constraintlayout:2.0.4" implementation "androidx.fragment:fragment-ktx:1.3.0" implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.0" implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'com.google.android.material:material:1.3.0' implementation 'commons-validator:commons-validator:1.7' implementation 'joda-time:joda-time:2.10.2' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2" /* Test dependencies */ testImplementation "io.mockk:mockk:$mockkVersion" testImplementation 'junit:junit:4.13' testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlinVersion" } buildscript { ext { kotlinVersion = '1.4.10' mockkVersion = '1.10.6' } repositories { jcenter() google() maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'com.android.tools.build:gradle:4.1.2' classpath 'com.github.triplet.gradle:play-publisher:2.7.5' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20' } } task copyExtraAssets(type: Copy) { from "$repoRootPath/dist-assets" include "relays.json" include "api-ip-address.txt" into extraAssetsDirectory }