plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.kapt) alias(libs.plugins.kotlin.parcelize) } // For constructing gitSha only def getGitSha = { try { providers.exec { commandLine 'git', 'rev-parse', 'HEAD' }.standardOutput.asText.get().trim() } catch (Exception e) { "unknown" // Try-catch is necessary for build to work on non-git distributions } } final def gitSha = getGitSha() // The app name final def APP_NAME = "Tusky" // The application id. Must be unique, e.g. based on your domain final def APP_ID = "com.keylesspalace.tusky" // url of a custom app logo. Recommended size at least 600x600. Keep empty to use the Tusky elephant friend. final def CUSTOM_LOGO_URL = "" // e.g. mastodon.social. Keep empty to not suggest any instance on the signup screen final def CUSTOM_INSTANCE = "" // link to your support account. Will be linked on the about page when not empty. final def SUPPORT_ACCOUNT_URL = "https://mastodon.social/@Tusky" android { compileSdk 33 namespace "com.keylesspalace.tusky" defaultConfig { applicationId APP_ID namespace "com.keylesspalace.tusky" minSdk 23 targetSdk 33 versionCode 100 versionName "21.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true resValue "string", "app_name", APP_NAME buildConfigField("String", "CUSTOM_LOGO_URL", "\"$CUSTOM_LOGO_URL\"") buildConfigField("String", "CUSTOM_INSTANCE", "\"$CUSTOM_INSTANCE\"") buildConfigField("String", "SUPPORT_ACCOUNT_URL", "\"$SUPPORT_ACCOUNT_URL\"") } buildTypes { release { minifyEnabled true shrinkResources true proguardFiles 'proguard-rules.pro' } debug {} } flavorDimensions += "color" productFlavors { blue {} green { resValue "string", "app_name", APP_NAME + " Test" applicationIdSuffix ".test" versionNameSuffix "-" + gitSha } } lint { disable 'MissingTranslation' } buildFeatures { buildConfig true resValues true viewBinding true } testOptions { unitTests { returnDefaultValues = true includeAndroidResources = true } unitTests.all { systemProperty 'robolectric.logging.enabled', 'true' } } sourceSets { androidTest.assets.srcDirs += files("$projectDir/schemas".toString()) } // Exclude unneeded files added by libraries packagingOptions.resources.excludes += [ 'LICENSE_OFL', 'LICENSE_UNICODE', ] bundle { language { // bundle all languages in every apk so the dynamic language switching works enableSplit = false } } dependenciesInfo { includeInApk false includeInBundle false } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11 } applicationVariants.configureEach { variant -> variant.outputs.configureEach { outputFileName = "Tusky_${variant.versionName}_${variant.versionCode}_${gitSha}_" + "${variant.flavorName}_${buildType.name}.apk" } } } kapt { arguments { arg("room.schemaLocation", "$projectDir/schemas") arg("room.incremental", "true") } } // library versions are in PROJECT_ROOT/gradle/libs.versions.toml dependencies { implementation libs.kotlinx.coroutines.android implementation libs.kotlinx.coroutines.rx3 implementation libs.bundles.androidx implementation libs.bundles.room kapt libs.androidx.room.compiler implementation libs.android.material implementation libs.gson implementation libs.bundles.retrofit implementation libs.networkresult.calladapter implementation libs.bundles.okhttp implementation libs.conscrypt.android implementation libs.bundles.glide kapt libs.glide.compiler implementation libs.bundles.rxjava3 implementation libs.bundles.autodispose implementation libs.bundles.dagger kapt libs.bundles.dagger.processors implementation libs.sparkbutton implementation libs.photoview implementation libs.bundles.material.drawer implementation libs.material.typeface implementation libs.image.cropper implementation libs.bundles.filemojicompat implementation libs.bouncycastle implementation libs.unified.push testImplementation libs.androidx.test.junit testImplementation libs.robolectric testImplementation libs.bundles.mockito testImplementation libs.mockwebserver testImplementation libs.androidx.core.testing testImplementation libs.kotlinx.coroutines.test testImplementation libs.androidx.work.testing androidTestImplementation libs.espresso.core androidTestImplementation libs.androidx.room.testing androidTestImplementation libs.androidx.test.junit }