Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -189,6 +188,7 @@ android {

buildFeatures {
buildConfig = true
resValues = true
}
flavorDimensions += "store"
productFlavors {
Expand Down
1 change: 0 additions & 1 deletion features/call/impl/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 4 additions & 0 deletions libraries/pushproviders/firebase/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ plugins {
android {
namespace = "io.element.android.libraries.pushproviders.firebase"

buildFeatures {
resValues = true
}

buildTypes {
getByName("release") {
consumerProguardFiles("consumer-proguard-rules.pro")
Expand Down
130 changes: 87 additions & 43 deletions plugins/src/main/kotlin/extension/CommonExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,23 @@
/**
* 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

val libs = the<LibrariesForLibs>()
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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,23 @@
/**
* 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

val libs = the<LibrariesForLibs>()
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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,19 @@
/**
* 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

val libs = the<LibrariesForLibs>()
plugins {
id("com.android.library")
id("kotlin-android")
id("com.autonomousapps.dependency-analysis")
}

android {
androidConfig(project)
androidLibraryConfig(project)
compileOptions {
isCoreLibraryDesugaringEnabled = true
}
Expand Down
Loading