/* * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import extension.allFeatures import extension.allLibraries // TODO: Remove once https://youtrack.jetbrains.com/issue/KTIJ-19369 is fixed @Suppress("DSL_SCOPE_VIOLATION") plugins { id("io.element.android-compose-application") alias(libs.plugins.stem) alias(libs.plugins.kotlin.android) alias(libs.plugins.ksp) alias(libs.plugins.anvil) alias(libs.plugins.kapt) id("com.google.firebase.appdistribution") version "3.0.2" id("org.jetbrains.kotlinx.knit") version "0.4.0" id("kotlin-parcelize") } android { namespace = "io.element.android.x" defaultConfig { applicationId = "io.element.android.x" targetSdk = 33 // TODO Use Versions.targetSdk versionCode = 1 versionName = "1.0" vectorDrawables { useSupportLibrary = true } } signingConfigs { named("debug") { keyAlias = "androiddebugkey" keyPassword = "android" storeFile = file("./signature/debug.keystore") storePassword = "android" } register("nightly") { keyAlias = System.getenv("ELEMENT_ANDROID_NIGHTLY_KEYID") ?: project.property("signing.element.nightly.keyId") as? String? keyPassword = System.getenv("ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD") ?: project.property("signing.element.nightly.keyPassword") as? String? storeFile = file("./signature/nightly.keystore") storePassword = System.getenv("ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD") ?: project.property("signing.element.nightly.storePassword") as? String? } } buildTypes { named("debug") { resValue("string", "app_name", "ElementX dbg") applicationIdSuffix = ".debug" signingConfig = signingConfigs.getByName("debug") } named("release") { resValue("string", "app_name", "ElementX") signingConfig = signingConfigs.getByName("debug") postprocessing { isRemoveUnusedCode = true isObfuscate = false isOptimizeCode = true isRemoveUnusedResources = true proguardFiles("proguard-rules.pro") } } register("nightly") { val release = getByName("release") initWith(release) applicationIdSuffix = ".nightly" versionNameSuffix = "-nightly" resValue("string", "app_name", "ElementX nightly") matchingFallbacks += listOf("release") signingConfig = signingConfigs.getByName("nightly") postprocessing { initWith(release.postprocessing) } firebaseAppDistribution { artifactType = "APK" // This file will be generated by the GitHub action releaseNotesFile = "CHANGES_NIGHTLY.md" groups = "external-testers" // This should not be required, but if I do not add the appId, I get this error: // "App Distribution halted because it had a problem uploading the APK: [404] Requested entity was not found." appId = "1:912726360885:android:e17435e0beb0303000427c" } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.3.2" } packagingOptions { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } // Waiting for https://github.com/google/ksp/issues/37 applicationVariants.all { kotlin.sourceSets { getByName(name) { kotlin.srcDir("build/generated/ksp/$name/kotlin") } } } } // Knit apply { plugin("kotlinx-knit") } knit { files = fileTree(project.rootDir) { include( "**/*.md", "**/*.kt", "*/*.kts", ) exclude( "**/build/**", "*/.gradle/**", "*/towncrier/template.md", "**/CHANGES.md", ) } } dependencies { allLibraries() allFeatures() implementation(project(":tests:uitests")) implementation(project(":anvilannotations")) anvil(project(":anvilcodegen")) // https://developer.android.com/studio/write/java8-support#library-desugaring-versions coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.2.2") implementation(libs.compose.destinations) ksp(libs.compose.destinations.processor) implementation(libs.appyx.core) implementation(libs.androidx.corektx) implementation(libs.androidx.lifecycle.runtime) implementation(libs.androidx.activity.compose) implementation(libs.androidx.startup) implementation(libs.coil) implementation(libs.dagger) kapt(libs.dagger.compiler) }