diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a4ee1c84595..f31ff0ff993 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -28,7 +28,6 @@ import java.util.Locale plugins { id("io.element.android-compose-application") - alias(libs.plugins.kotlin.android) // When using precompiled plugins, we need to apply the firebase plugin like this id(libs.plugins.firebaseAppDistribution.get().pluginId) id("kotlin-parcelize") @@ -189,6 +188,7 @@ android { buildFeatures { buildConfig = true + resValues = true } flavorDimensions += "store" productFlavors { diff --git a/features/call/impl/build.gradle.kts b/features/call/impl/build.gradle.kts index e77c09e19a8..c7f8cfcb3c9 100644 --- a/features/call/impl/build.gradle.kts +++ b/features/call/impl/build.gradle.kts @@ -84,7 +84,6 @@ dependencies { implementation(projects.services.toolbox.api) implementation(libs.androidx.webkit) implementation(libs.coil.compose) - implementation(libs.network.retrofit) implementation(libs.serialization.json) implementation(libs.element.call.embedded) api(projects.features.call.api) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a8ca47e959c..3b20c26100c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ [versions] # Project -android_gradle_plugin = "8.13.2" +android_gradle_plugin = "9.1.0" # When updating this, please also update the version in the file ./idea/kotlinc.xml kotlin = "2.3.20" kotlinpoet = "2.2.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8a848873f3a..41465649341 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionSha256Sum=b266d5ff6b90eada6dc3b20cb090e3731302e553a27c5d3e4df1f0d76beaff06 +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/libraries/pushproviders/firebase/build.gradle.kts b/libraries/pushproviders/firebase/build.gradle.kts index 49ce7135d51..45d0f8321f6 100644 --- a/libraries/pushproviders/firebase/build.gradle.kts +++ b/libraries/pushproviders/firebase/build.gradle.kts @@ -19,6 +19,10 @@ plugins { android { namespace = "io.element.android.libraries.pushproviders.firebase" + buildFeatures { + resValues = true + } + buildTypes { getByName("release") { consumerProguardFiles("consumer-proguard-rules.pro") diff --git a/plugins/src/main/kotlin/extension/CommonExtension.kt b/plugins/src/main/kotlin/extension/CommonExtension.kt index 5f243f43190..1f24473f8e4 100644 --- a/plugins/src/main/kotlin/extension/CommonExtension.kt +++ b/plugins/src/main/kotlin/extension/CommonExtension.kt @@ -9,67 +9,111 @@ package extension import Versions -import com.android.build.api.dsl.CommonExtension +import com.android.build.api.dsl.ApplicationDefaultConfig +import com.android.build.api.dsl.ApplicationExtension +import com.android.build.api.dsl.CompileOptions +import com.android.build.api.dsl.LibraryDefaultConfig +import com.android.build.api.dsl.LibraryExtension +import com.android.build.api.dsl.Lint import isEnterpriseBuild import org.gradle.api.Project import java.io.File -fun CommonExtension<*, *, *, *, *, *>.androidConfig(project: Project) { - defaultConfig { - compileSdk = Versions.COMPILE_SDK - minSdk = Versions.minSdk - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" +fun ApplicationExtension.androidAppConfig(project: Project) { + compileSdk = Versions.COMPILE_SDK - vectorDrawables { - useSupportLibrary = true - generatedDensities() - } - } + defaultConfig(::defaultApplicationConfig) + compileOptions(::defaultCompileOptions) + testOptions(::defaultTestOptions) - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion + lint { + project.defaultLintOptions(this) } +} - testOptions { - unitTests.isReturnDefaultValues = true - } +fun LibraryExtension.androidLibraryConfig(project: Project) { + compileSdk = Versions.COMPILE_SDK + + defaultConfig(::defaultLibraryConfig) + compileOptions(::defaultCompileOptions) + testOptions(::defaultTestOptions) lint { - lintConfig = File("${project.rootDir}/tools/lint/lint.xml") - if (isEnterpriseBuild) { - // Disable check on ObsoleteSdkInt for Enterprise builds - // since the min sdk is higher for Enterprise builds - disable.add("ObsoleteSdkInt") - } - checkDependencies = false - abortOnError = true - ignoreTestSources = true - ignoreTestFixturesSources = true - checkGeneratedSources = false + project.defaultLintOptions(this) } } -fun CommonExtension<*, *, *, *, *, *>.composeConfig() { +fun ApplicationExtension.composeAppConfig() { + buildFeatures(::defaultComposeBuildFeatures) + packaging(::defaultPackagingOptions) + lint(::defaultComposeLintOptions) +} + +fun LibraryExtension.composeLibraryConfig() { + buildFeatures(::defaultComposeBuildFeatures) + packaging(::defaultPackagingOptions) + lint(::defaultComposeLintOptions) +} + +fun defaultApplicationConfig(applicationDefaultConfig: ApplicationDefaultConfig) = applicationDefaultConfig.apply { + minSdk = Versions.minSdk + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - buildFeatures { - compose = true + vectorDrawables { + useSupportLibrary = true + generatedDensities() } +} + +fun defaultLibraryConfig(libraryDefaultConfig: LibraryDefaultConfig) = libraryDefaultConfig.apply { + minSdk = Versions.minSdk + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - packaging { - resources.excludes.apply { - add("META-INF/AL2.0") - add("META-INF/LGPL2.1") - } + vectorDrawables { + useSupportLibrary = true + generatedDensities() } +} - lint { - // Extra rules for compose - // Disabled until lint stops inspecting generated ksp files... - // error.add("ComposableLambdaParameterNaming") - error.add("ComposableLambdaParameterPosition") - ignoreTestFixturesSources = true - checkGeneratedSources = false +fun defaultCompileOptions(compileOptions: CompileOptions) = compileOptions.apply { + sourceCompatibility = Versions.javaVersion + targetCompatibility = Versions.javaVersion +} + +fun defaultTestOptions(testOptions: com.android.build.api.dsl.TestOptions) = testOptions.apply { + unitTests.isReturnDefaultValues = true +} + +fun defaultComposeBuildFeatures(buildFeatures: com.android.build.api.dsl.BuildFeatures) = buildFeatures.apply { + compose = true +} + +fun defaultPackagingOptions(packagingOptions: com.android.build.api.dsl.Packaging) = packagingOptions.apply { + resources.excludes.apply { + add("META-INF/AL2.0") + add("META-INF/LGPL2.1") } } +fun defaultComposeLintOptions(lint: Lint) = lint.apply { + // Extra rules for compose + // Disabled until lint stops inspecting generated ksp files... + // error.add("ComposableLambdaParameterNaming") + error.add("ComposableLambdaParameterPosition") + ignoreTestFixturesSources = true + checkGeneratedSources = false +} + +fun Project.defaultLintOptions(lint: Lint) = lint.apply { + lintConfig = File("${project.rootDir}/tools/lint/lint.xml") + if (isEnterpriseBuild) { + // Disable check on ObsoleteSdkInt for Enterprise builds + // since the min sdk is higher for Enterprise builds + disable.add("ObsoleteSdkInt") + } + checkDependencies = false + abortOnError = true + ignoreTestSources = true + ignoreTestFixturesSources = true + checkGeneratedSources = false +} diff --git a/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts b/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts index a489884df58..4683ee1b5fc 100644 --- a/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts +++ b/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts @@ -9,9 +9,9 @@ /** * This will generate the plugin "io.element.android-compose-application" to use by app */ -import extension.androidConfig +import extension.androidAppConfig import extension.commonDependencies -import extension.composeConfig +import extension.composeAppConfig import extension.composeDependencies import extension.setupKover import org.gradle.accessors.dm.LibrariesForLibs @@ -19,14 +19,13 @@ import org.gradle.accessors.dm.LibrariesForLibs val libs = the() plugins { id("com.android.application") - id("kotlin-android") id("com.autonomousapps.dependency-analysis") id("org.jetbrains.kotlin.plugin.compose") } android { - androidConfig(project) - composeConfig() + androidAppConfig(project) + composeAppConfig() compileOptions { isCoreLibraryDesugaringEnabled = true } diff --git a/plugins/src/main/kotlin/io.element.android-compose-library.gradle.kts b/plugins/src/main/kotlin/io.element.android-compose-library.gradle.kts index 26b1a1f1228..1fd697806d4 100644 --- a/plugins/src/main/kotlin/io.element.android-compose-library.gradle.kts +++ b/plugins/src/main/kotlin/io.element.android-compose-library.gradle.kts @@ -9,9 +9,9 @@ /** * This will generate the plugin "io.element.android-compose-library", used in android library with compose modules. */ -import extension.androidConfig +import extension.androidLibraryConfig import extension.commonDependencies -import extension.composeConfig +import extension.composeLibraryConfig import extension.composeDependencies import extension.setupKover import org.gradle.accessors.dm.LibrariesForLibs @@ -19,14 +19,13 @@ import org.gradle.accessors.dm.LibrariesForLibs val libs = the() plugins { id("com.android.library") - id("kotlin-android") id("com.autonomousapps.dependency-analysis") id("org.jetbrains.kotlin.plugin.compose") } android { - androidConfig(project) - composeConfig() + androidLibraryConfig(project) + composeLibraryConfig() compileOptions { isCoreLibraryDesugaringEnabled = true } diff --git a/plugins/src/main/kotlin/io.element.android-library.gradle.kts b/plugins/src/main/kotlin/io.element.android-library.gradle.kts index c10c1bb3d76..18b1e1d3f87 100644 --- a/plugins/src/main/kotlin/io.element.android-library.gradle.kts +++ b/plugins/src/main/kotlin/io.element.android-library.gradle.kts @@ -9,7 +9,7 @@ /** * This will generate the plugin "io.element.android-library", used in android library without compose modules. */ -import extension.androidConfig +import extension.androidLibraryConfig import extension.commonDependencies import extension.setupKover import org.gradle.accessors.dm.LibrariesForLibs @@ -17,12 +17,11 @@ import org.gradle.accessors.dm.LibrariesForLibs val libs = the() plugins { id("com.android.library") - id("kotlin-android") id("com.autonomousapps.dependency-analysis") } android { - androidConfig(project) + androidLibraryConfig(project) compileOptions { isCoreLibraryDesugaringEnabled = true }