From 30d317403b2e005ecb845be18dec4f308f0d47e8 Mon Sep 17 00:00:00 2001
From: ManonPolle <manon.polle@decathlon.com>
Date: Mon, 22 May 2023 16:22:40 +0200
Subject: [PATCH] chore: Upgrade AGP from 7.6 to 8.0 + Java, Kotlin & Compose

---
 appbars/build.gradle.kts                      |  4 +
 appbars/src/main/AndroidManifest.xml          |  2 -
 badges/build.gradle.kts                       |  4 +
 badges/src/main/AndroidManifest.xml           |  2 -
 build.gradle.kts                              |  8 +-
 buildSrc/build.gradle.kts                     | 17 +++-
 buildSrc/src/main/kotlin/Libs.kt              |  1 +
 .../compose/VitaminComposeLibraryPlugin.kt    | 16 ++--
 buttons/build.gradle.kts                      |  4 +
 buttons/src/main/AndroidManifest.xml          |  2 -
 cards/build.gradle.kts                        |  4 +
 cards/src/main/AndroidManifest.xml            |  2 -
 checkboxes/build.gradle.kts                   |  4 +
 checkboxes/src/main/AndroidManifest.xml       |  5 -
 chips/build.gradle.kts                        |  4 +
 chips/src/main/AndroidManifest.xml            |  2 -
 dividers/build.gradle.kts                     |  4 +
 dividers/src/main/AndroidManifest.xml         |  2 -
 fabs/build.gradle.kts                         |  4 +
 fabs/src/main/AndroidManifest.xml             |  2 -
 foundation/foundation-assets/build.gradle.kts |  4 +
 .../src/main/AndroidManifest.xml              |  2 -
 foundation/foundation-icons/build.gradle.kts  |  4 +
 .../src/main/AndroidManifest.xml              |  2 -
 foundation/foundation/build.gradle.kts        |  4 +
 .../foundation/src/main/AndroidManifest.xml   |  2 -
 gradle.properties                             | 19 +++-
 gradle/wrapper/gradle-wrapper.properties      |  2 +-
 menus/build.gradle.kts                        |  4 +
 menus/src/main/AndroidManifest.xml            |  2 -
 modals/build.gradle.kts                       |  4 +
 modals/src/main/AndroidManifest.xml           |  2 -
 prices/build.gradle.kts                       |  4 +
 prices/src/main/AndroidManifest.xml           |  2 -
 progressbars/build.gradle.kts                 |  4 +
 progressbars/src/main/AndroidManifest.xml     |  2 -
 quantity-pickers/build.gradle.kts             |  4 +
 quantity-pickers/src/main/AndroidManifest.xml |  2 -
 radiobuttons/build.gradle.kts                 |  4 +
 radiobuttons/src/main/AndroidManifest.xml     |  2 -
 ratings/build.gradle.kts                      |  4 +
 ratings/src/main/AndroidManifest.xml          |  2 -
 sample/build.gradle.kts                       | 23 +++--
 sample/src/main/AndroidManifest.xml           |  3 +-
 scaffolds/build.gradle.kts                    |  4 +
 scaffolds/src/main/AndroidManifest.xml        |  2 -
 skeletons/build.gradle.kts                    |  4 +
 skeletons/src/main/AndroidManifest.xml        |  2 -
 snackbars/build.gradle.kts                    |  4 +
 snackbars/src/main/AndroidManifest.xml        |  5 -
 switches/build.gradle.kts                     |  4 +
 switches/src/main/AndroidManifest.xml         |  2 -
 tabs/build.gradle.kts                         |  4 +
 tabs/src/main/AndroidManifest.xml             |  2 -
 tags/build.gradle.kts                         |  4 +
 tags/src/main/AndroidManifest.xml             |  3 -
 text-inputs/build.gradle.kts                  |  4 +
 text-inputs/src/main/AndroidManifest.xml      |  2 -
 versions.properties                           | 95 +++++++++++++++++--
 vitamin/build.gradle.kts                      |  4 +
 vitamin/src/main/AndroidManifest.xml          |  2 +-
 61 files changed, 256 insertions(+), 91 deletions(-)
 delete mode 100644 appbars/src/main/AndroidManifest.xml
 delete mode 100644 badges/src/main/AndroidManifest.xml
 delete mode 100644 buttons/src/main/AndroidManifest.xml
 delete mode 100644 cards/src/main/AndroidManifest.xml
 delete mode 100644 checkboxes/src/main/AndroidManifest.xml
 delete mode 100644 chips/src/main/AndroidManifest.xml
 delete mode 100644 dividers/src/main/AndroidManifest.xml
 delete mode 100644 fabs/src/main/AndroidManifest.xml
 delete mode 100644 foundation/foundation-assets/src/main/AndroidManifest.xml
 delete mode 100644 foundation/foundation-icons/src/main/AndroidManifest.xml
 delete mode 100644 foundation/foundation/src/main/AndroidManifest.xml
 delete mode 100644 menus/src/main/AndroidManifest.xml
 delete mode 100644 modals/src/main/AndroidManifest.xml
 delete mode 100644 prices/src/main/AndroidManifest.xml
 delete mode 100644 progressbars/src/main/AndroidManifest.xml
 delete mode 100644 quantity-pickers/src/main/AndroidManifest.xml
 delete mode 100644 radiobuttons/src/main/AndroidManifest.xml
 delete mode 100644 ratings/src/main/AndroidManifest.xml
 delete mode 100644 scaffolds/src/main/AndroidManifest.xml
 delete mode 100644 skeletons/src/main/AndroidManifest.xml
 delete mode 100644 snackbars/src/main/AndroidManifest.xml
 delete mode 100644 switches/src/main/AndroidManifest.xml
 delete mode 100644 tabs/src/main/AndroidManifest.xml
 delete mode 100644 tags/src/main/AndroidManifest.xml
 delete mode 100644 text-inputs/src/main/AndroidManifest.xml

diff --git a/appbars/build.gradle.kts b/appbars/build.gradle.kts
index 2edfcc68..2dad18c3 100644
--- a/appbars/build.gradle.kts
+++ b/appbars/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     api(project(":menus"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.appbars"
+}
diff --git a/appbars/src/main/AndroidManifest.xml b/appbars/src/main/AndroidManifest.xml
deleted file mode 100644
index fd20328e..00000000
--- a/appbars/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.appbars" />
\ No newline at end of file
diff --git a/badges/build.gradle.kts b/badges/build.gradle.kts
index 57e63ffc..a68f9be6 100644
--- a/badges/build.gradle.kts
+++ b/badges/build.gradle.kts
@@ -9,3 +9,7 @@ dependencies {
     api(project(":foundation:foundation"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.badges"
+}
diff --git a/badges/src/main/AndroidManifest.xml b/badges/src/main/AndroidManifest.xml
deleted file mode 100644
index c8218f1a..00000000
--- a/badges/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.badges" />
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index da286de0..cf3ea44f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -90,10 +90,10 @@ sonarqube {
 conventionalCommits {
     scopes = subprojects.map { module -> module.name }.toList()
     failureMessage = "Error : The commit message does not meet the Conventional Commit standard\n" +
-            "An example of a valid message is:\n" +
-            "feat(buttons): add the small size button\n" +
-            "Available scopes : ${scopes}\n" +
-            "More details at: https://www.conventionalcommits.org/en/v1.0.0/#summary"
+        "An example of a valid message is:\n" +
+        "feat(buttons): add the small size button\n" +
+        "Available scopes : ${scopes}\n" +
+        "More details at: https://www.conventionalcommits.org/en/v1.0.0/#summary"
 }
 
 tasks.create<Delete>("clean") {
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
index b1c326a9..61759f4a 100644
--- a/buildSrc/build.gradle.kts
+++ b/buildSrc/build.gradle.kts
@@ -1,7 +1,7 @@
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
-    kotlin("jvm") version "1.4.31"
+    kotlin("jvm") version "1.8.21"
     `kotlin-dsl`
 }
 
@@ -11,7 +11,16 @@ repositories {
 }
 
 tasks.withType<KotlinCompile>().configureEach {
-    kotlinOptions.apiVersion = "1.6"
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_17.toString()
+        apiVersion = "1.6"
+    }
+}
+
+java {
+    toolchain {
+        languageVersion.set(JavaLanguageVersion.of(17))
+    }
 }
 
 gradlePlugin {
@@ -23,8 +32,8 @@ gradlePlugin {
 
 dependencies {
     implementation(gradleApi())
-    implementation("com.android.tools.build:gradle:7.4.0")
-    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20")
+    implementation("com.android.tools.build:gradle:8.0.1")
+    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21")
     implementation("com.vanniktech:gradle-maven-publish-plugin:0.18.0")
     implementation("app.cash.licensee:licensee-gradle-plugin:1.4.1")
     implementation("app.cash.paparazzi:paparazzi-gradle-plugin:1.2.0")
diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt
index aff0c2fa..f8be8471 100644
--- a/buildSrc/src/main/kotlin/Libs.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -3,6 +3,7 @@ object Libs {
     const val vitamin_assets = "com.decathlon.vitamin:foundation-assets:_"
 
     const val compose_ui =  "androidx.compose.ui:ui:_"
+    const val compose_compiler =  "androidx.compose.compiler:compiler:_"
 
     const val compose_ui_util =  "androidx.compose.ui:ui-util:_"
 
diff --git a/buildSrc/src/main/kotlin/com/decathlon/vitamin/compose/VitaminComposeLibraryPlugin.kt b/buildSrc/src/main/kotlin/com/decathlon/vitamin/compose/VitaminComposeLibraryPlugin.kt
index 8ed6a8f2..42a805b8 100644
--- a/buildSrc/src/main/kotlin/com/decathlon/vitamin/compose/VitaminComposeLibraryPlugin.kt
+++ b/buildSrc/src/main/kotlin/com/decathlon/vitamin/compose/VitaminComposeLibraryPlugin.kt
@@ -4,6 +4,7 @@ import com.android.build.api.dsl.LibraryExtension
 import org.gradle.api.JavaVersion
 import org.gradle.api.Plugin
 import org.gradle.api.Project
+import org.gradle.jvm.toolchain.JavaLanguageVersion
 import org.gradle.kotlin.dsl.apply
 import org.gradle.kotlin.dsl.configure
 import org.gradle.kotlin.dsl.dependencies
@@ -17,7 +18,6 @@ class VitaminComposeLibraryPlugin : Plugin<Project> {
         target.apply(plugin = "app.cash.licensee")
         target.configure<app.cash.licensee.LicenseeExtension> {
             allow("Apache-2.0")
-            allow("MIT")
         }
         target.repositories {
             google()
@@ -52,29 +52,29 @@ internal fun Project.configureAndroid() = this.extensions.getByType(LibraryExten
             useSupportLibrary = true
         }
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
-
     }
     compileOptions {
-        sourceCompatibility = JavaVersion.VERSION_11
-        targetCompatibility = JavaVersion.VERSION_11
+        sourceCompatibility = JavaVersion.VERSION_17
+        targetCompatibility = JavaVersion.VERSION_17
     }
     composeOptions {
-        kotlinCompilerExtensionVersion = Libs.compose_ui.split(":").last()
+        kotlinCompilerExtensionVersion = Libs.compose_compiler.split(":").last()
     }
     tasks.withType<KotlinCompile> {
         kotlinOptions {
             allWarningsAsErrors = true
-            jvmTarget = JavaVersion.VERSION_11.toString()
+            jvmTarget = JavaVersion.VERSION_17.toString()
             freeCompilerArgs = freeCompilerArgs + listOf(
-                "-opt-in=kotlin.RequiresOptIn"
+                "-opt-in=kotlin.RequiresOptIn",
             )
         }
     }
+
     buildFeatures {
         compose = true
     }
 
-    packagingOptions {
+    packaging {
         resources {
             excludes += "/META-INF/{AL2.0,LGPL2.1}"
         }
diff --git a/buttons/build.gradle.kts b/buttons/build.gradle.kts
index 8635c2f8..2fbf1473 100644
--- a/buttons/build.gradle.kts
+++ b/buttons/build.gradle.kts
@@ -12,3 +12,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.buttons"
+}
diff --git a/buttons/src/main/AndroidManifest.xml b/buttons/src/main/AndroidManifest.xml
deleted file mode 100644
index cf7d35d4..00000000
--- a/buttons/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.buttons" />
\ No newline at end of file
diff --git a/cards/build.gradle.kts b/cards/build.gradle.kts
index 8f745405..57cd3a06 100644
--- a/cards/build.gradle.kts
+++ b/cards/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.cards"
+}
diff --git a/cards/src/main/AndroidManifest.xml b/cards/src/main/AndroidManifest.xml
deleted file mode 100644
index 308dce29..00000000
--- a/cards/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.cards" />
\ No newline at end of file
diff --git a/checkboxes/build.gradle.kts b/checkboxes/build.gradle.kts
index 57e63ffc..4249c545 100644
--- a/checkboxes/build.gradle.kts
+++ b/checkboxes/build.gradle.kts
@@ -9,3 +9,7 @@ dependencies {
     api(project(":foundation:foundation"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.checkboxes"
+}
diff --git a/checkboxes/src/main/AndroidManifest.xml b/checkboxes/src/main/AndroidManifest.xml
deleted file mode 100644
index cf62b399..00000000
--- a/checkboxes/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.decathlon.vitamin.compose.checkboxes">
-
-</manifest>
\ No newline at end of file
diff --git a/chips/build.gradle.kts b/chips/build.gradle.kts
index eb016c48..e2ae26b3 100644
--- a/chips/build.gradle.kts
+++ b/chips/build.gradle.kts
@@ -13,3 +13,7 @@ dependencies {
     testImplementation(project(":foundation:foundation-assets"))
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.chips"
+}
diff --git a/chips/src/main/AndroidManifest.xml b/chips/src/main/AndroidManifest.xml
deleted file mode 100644
index 8f41c760..00000000
--- a/chips/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.chips" />
\ No newline at end of file
diff --git a/dividers/build.gradle.kts b/dividers/build.gradle.kts
index 8f745405..79a69953 100644
--- a/dividers/build.gradle.kts
+++ b/dividers/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.dividers"
+}
diff --git a/dividers/src/main/AndroidManifest.xml b/dividers/src/main/AndroidManifest.xml
deleted file mode 100644
index 6c4eb0f4..00000000
--- a/dividers/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.dividers"/>
\ No newline at end of file
diff --git a/fabs/build.gradle.kts b/fabs/build.gradle.kts
index 55fe4551..41dee43b 100644
--- a/fabs/build.gradle.kts
+++ b/fabs/build.gradle.kts
@@ -12,3 +12,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.fabs"
+}
diff --git a/fabs/src/main/AndroidManifest.xml b/fabs/src/main/AndroidManifest.xml
deleted file mode 100644
index 8d161820..00000000
--- a/fabs/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.fabs" />
\ No newline at end of file
diff --git a/foundation/foundation-assets/build.gradle.kts b/foundation/foundation-assets/build.gradle.kts
index f66522fe..975765da 100644
--- a/foundation/foundation-assets/build.gradle.kts
+++ b/foundation/foundation-assets/build.gradle.kts
@@ -10,3 +10,7 @@ dependencies {
     api(AndroidX.compose.ui)
     api(AndroidX.compose.material)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.vitaminassets"
+}
diff --git a/foundation/foundation-assets/src/main/AndroidManifest.xml b/foundation/foundation-assets/src/main/AndroidManifest.xml
deleted file mode 100644
index ed316d33..00000000
--- a/foundation/foundation-assets/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.vitaminassets" />
\ No newline at end of file
diff --git a/foundation/foundation-icons/build.gradle.kts b/foundation/foundation-icons/build.gradle.kts
index f66522fe..d66e9603 100644
--- a/foundation/foundation-icons/build.gradle.kts
+++ b/foundation/foundation-icons/build.gradle.kts
@@ -10,3 +10,7 @@ dependencies {
     api(AndroidX.compose.ui)
     api(AndroidX.compose.material)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.vitaminicons"
+}
diff --git a/foundation/foundation-icons/src/main/AndroidManifest.xml b/foundation/foundation-icons/src/main/AndroidManifest.xml
deleted file mode 100644
index e7e36e65..00000000
--- a/foundation/foundation-icons/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.vitaminicons" />
\ No newline at end of file
diff --git a/foundation/foundation/build.gradle.kts b/foundation/foundation/build.gradle.kts
index f66522fe..cd36d3d8 100644
--- a/foundation/foundation/build.gradle.kts
+++ b/foundation/foundation/build.gradle.kts
@@ -10,3 +10,7 @@ dependencies {
     api(AndroidX.compose.ui)
     api(AndroidX.compose.material)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.foundation"
+}
diff --git a/foundation/foundation/src/main/AndroidManifest.xml b/foundation/foundation/src/main/AndroidManifest.xml
deleted file mode 100644
index 6a7f8e17..00000000
--- a/foundation/foundation/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.foundation" />
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index de037267..6fba55eb 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -32,6 +32,23 @@ org.gradle.daemon=true
 org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g
 
 android.useAndroidX=true
-# Kotlin code style for this project: "official" or "obsolete":
+
+# buildconfig is not generated at build by default since AGP 8.0 for all project.
+# Next step: add this into gradle module that needs the BuildConfig file.
+# https://developer.android.com/build/releases/gradle-plugin#default-changes
+# https://medium.com/androiddevelopers/5-ways-to-prepare-your-app-build-for-android-studio-flamingo-release-da34616bb946
+android.defaults.buildfeatures.buildconfig=true
+# nonTransitiveRClass is at true by default since AGP 8.0.
+# Next step: Run the migration assistant from Android studio to migrate to Non-Transitive R Classes.
+# https://developer.android.com/build/releases/gradle-plugin#default-changes
+# https://medium.com/androiddevelopers/5-ways-to-prepare-your-app-build-for-android-studio-flamingo-release-da34616bb946
+android.nonTransitiveRClass=false
+# AGP 8.0 generates R classes with non-final fields by default.
+# Next step: Move to non-final fields.
+# https://developer.android.com/build/releases/gradle-plugin#default-changes
+android.nonFinalResIds=false
+
 kotlin.incremental=true
+# Kotlin code style for this project: "official" or "obsolete":
 kotlin.code.style=official
+
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 6ff2d102..a09a6fd5 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 #Fri Jan 20 17:22:46 CET 2023
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/menus/build.gradle.kts b/menus/build.gradle.kts
index 57e63ffc..9132225d 100644
--- a/menus/build.gradle.kts
+++ b/menus/build.gradle.kts
@@ -9,3 +9,7 @@ dependencies {
     api(project(":foundation:foundation"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.menus"
+}
diff --git a/menus/src/main/AndroidManifest.xml b/menus/src/main/AndroidManifest.xml
deleted file mode 100644
index 02a5f4d6..00000000
--- a/menus/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.menus"/>
diff --git a/modals/build.gradle.kts b/modals/build.gradle.kts
index 74b1975b..58a10191 100644
--- a/modals/build.gradle.kts
+++ b/modals/build.gradle.kts
@@ -10,3 +10,7 @@ dependencies {
     implementation(project(":buttons"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.modals"
+}
diff --git a/modals/src/main/AndroidManifest.xml b/modals/src/main/AndroidManifest.xml
deleted file mode 100644
index b533e3be..00000000
--- a/modals/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.modals" />
\ No newline at end of file
diff --git a/prices/build.gradle.kts b/prices/build.gradle.kts
index 8f745405..c72a9f81 100644
--- a/prices/build.gradle.kts
+++ b/prices/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.prices"
+}
diff --git a/prices/src/main/AndroidManifest.xml b/prices/src/main/AndroidManifest.xml
deleted file mode 100644
index e7663613..00000000
--- a/prices/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.prices"/>
\ No newline at end of file
diff --git a/progressbars/build.gradle.kts b/progressbars/build.gradle.kts
index 8f745405..6bbf1453 100644
--- a/progressbars/build.gradle.kts
+++ b/progressbars/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.progressbars"
+}
diff --git a/progressbars/src/main/AndroidManifest.xml b/progressbars/src/main/AndroidManifest.xml
deleted file mode 100644
index a23e2d69..00000000
--- a/progressbars/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.progressbars" />
diff --git a/quantity-pickers/build.gradle.kts b/quantity-pickers/build.gradle.kts
index 8635c2f8..0ade5c30 100644
--- a/quantity-pickers/build.gradle.kts
+++ b/quantity-pickers/build.gradle.kts
@@ -12,3 +12,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.quantity.pickers"
+}
diff --git a/quantity-pickers/src/main/AndroidManifest.xml b/quantity-pickers/src/main/AndroidManifest.xml
deleted file mode 100644
index 2457be29..00000000
--- a/quantity-pickers/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.quantity.pickers" />
\ No newline at end of file
diff --git a/radiobuttons/build.gradle.kts b/radiobuttons/build.gradle.kts
index 8f745405..68a62d50 100644
--- a/radiobuttons/build.gradle.kts
+++ b/radiobuttons/build.gradle.kts
@@ -11,3 +11,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.radiobuttons"
+}
diff --git a/radiobuttons/src/main/AndroidManifest.xml b/radiobuttons/src/main/AndroidManifest.xml
deleted file mode 100644
index cddebcf8..00000000
--- a/radiobuttons/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.radiobuttons" />
\ No newline at end of file
diff --git a/ratings/build.gradle.kts b/ratings/build.gradle.kts
index 769d624e..db000892 100644
--- a/ratings/build.gradle.kts
+++ b/ratings/build.gradle.kts
@@ -10,3 +10,7 @@ dependencies {
     implementation(project(":foundation:foundation-icons"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.ratings"
+}
diff --git a/ratings/src/main/AndroidManifest.xml b/ratings/src/main/AndroidManifest.xml
deleted file mode 100644
index 5d786fea..00000000
--- a/ratings/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.ratings" />
diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts
index 64a0e82e..d161619b 100644
--- a/sample/build.gradle.kts
+++ b/sample/build.gradle.kts
@@ -1,5 +1,4 @@
 import com.decathlon.vitamin.compose.Versions
-import de.fayard.refreshVersions.core.versionFor
 
 plugins {
     id("com.android.application")
@@ -13,6 +12,7 @@ repositories {
 }
 
 android {
+    namespace = "com.decathlon.compose.sample"
     compileSdk = Versions.AndroidConfig.compileSdk
 
     defaultConfig {
@@ -26,24 +26,33 @@ android {
     buildTypes {
         release {
             isMinifyEnabled = false
-            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+            proguardFiles(
+                getDefaultProguardFile("proguard-android-optimize.txt"),
+                "proguard-rules.pro",
+            )
         }
     }
 
     compileOptions {
-        sourceCompatibility = JavaVersion.VERSION_11
-        targetCompatibility = JavaVersion.VERSION_11
+        sourceCompatibility = JavaVersion.VERSION_17
+        targetCompatibility = JavaVersion.VERSION_17
     }
 
     kotlinOptions {
-        jvmTarget = JavaVersion.VERSION_11.toString()
+        jvmTarget = JavaVersion.VERSION_17.toString()
         freeCompilerArgs = freeCompilerArgs + listOf(
-            "-opt-in=kotlin.RequiresOptIn"
+            "-opt-in=kotlin.RequiresOptIn",
         )
     }
 
+    java {
+        toolchain {
+            languageVersion.set(JavaLanguageVersion.of(17))
+        }
+    }
+
     composeOptions {
-        kotlinCompilerExtensionVersion = versionFor(AndroidX.compose.ui)
+        kotlinCompilerExtensionVersion = Libs.compose_compiler.split(":").last()
     }
 
     buildFeatures {
diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml
index a893bf25..581b890f 100644
--- a/sample/src/main/AndroidManifest.xml
+++ b/sample/src/main/AndroidManifest.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.decathlon.compose.sample">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
 
     <application
         android:allowBackup="true"
diff --git a/scaffolds/build.gradle.kts b/scaffolds/build.gradle.kts
index 5eaba896..b71927e3 100644
--- a/scaffolds/build.gradle.kts
+++ b/scaffolds/build.gradle.kts
@@ -14,3 +14,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.scaffolds"
+}
diff --git a/scaffolds/src/main/AndroidManifest.xml b/scaffolds/src/main/AndroidManifest.xml
deleted file mode 100644
index a1d5aaf8..00000000
--- a/scaffolds/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.scaffolds" />
\ No newline at end of file
diff --git a/skeletons/build.gradle.kts b/skeletons/build.gradle.kts
index 62c01c90..681397fe 100644
--- a/skeletons/build.gradle.kts
+++ b/skeletons/build.gradle.kts
@@ -13,3 +13,7 @@ dependencies {
     implementation(Google.accompanist.module("accompanist-placeholder"))
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.skeletons"
+}
diff --git a/skeletons/src/main/AndroidManifest.xml b/skeletons/src/main/AndroidManifest.xml
deleted file mode 100644
index c4f2cfa1..00000000
--- a/skeletons/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.skeletons" />
\ No newline at end of file
diff --git a/snackbars/build.gradle.kts b/snackbars/build.gradle.kts
index e79a34e2..246b86e3 100644
--- a/snackbars/build.gradle.kts
+++ b/snackbars/build.gradle.kts
@@ -12,3 +12,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.snackbars"
+}
diff --git a/snackbars/src/main/AndroidManifest.xml b/snackbars/src/main/AndroidManifest.xml
deleted file mode 100644
index cb690bce..00000000
--- a/snackbars/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.decathlon.vitamin.compose.snackbars">
-
-</manifest>
\ No newline at end of file
diff --git a/switches/build.gradle.kts b/switches/build.gradle.kts
index 57e63ffc..40693117 100644
--- a/switches/build.gradle.kts
+++ b/switches/build.gradle.kts
@@ -9,3 +9,7 @@ dependencies {
     api(project(":foundation:foundation"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.switches"
+}
diff --git a/switches/src/main/AndroidManifest.xml b/switches/src/main/AndroidManifest.xml
deleted file mode 100644
index ba27a80e..00000000
--- a/switches/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.switches"/>
\ No newline at end of file
diff --git a/tabs/build.gradle.kts b/tabs/build.gradle.kts
index 57e63ffc..9c53a54c 100644
--- a/tabs/build.gradle.kts
+++ b/tabs/build.gradle.kts
@@ -9,3 +9,7 @@ dependencies {
     api(project(":foundation:foundation"))
     implementation(AndroidX.compose.ui.tooling)
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.tabs"
+}
diff --git a/tabs/src/main/AndroidManifest.xml b/tabs/src/main/AndroidManifest.xml
deleted file mode 100644
index 4d72e31b..00000000
--- a/tabs/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.tabs" />
\ No newline at end of file
diff --git a/tags/build.gradle.kts b/tags/build.gradle.kts
index 8635c2f8..8fb8d6c8 100644
--- a/tags/build.gradle.kts
+++ b/tags/build.gradle.kts
@@ -12,3 +12,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.tags"
+}
diff --git a/tags/src/main/AndroidManifest.xml b/tags/src/main/AndroidManifest.xml
deleted file mode 100644
index 5e15c806..00000000
--- a/tags/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.decathlon.vitamin.compose.tags"/>
diff --git a/text-inputs/build.gradle.kts b/text-inputs/build.gradle.kts
index 905d4df9..618794ac 100644
--- a/text-inputs/build.gradle.kts
+++ b/text-inputs/build.gradle.kts
@@ -13,3 +13,7 @@ dependencies {
     implementation(AndroidX.compose.ui.tooling)
     testImplementation("com.google.testparameterinjector:test-parameter-injector:1.8")
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.textinputs"
+}
diff --git a/text-inputs/src/main/AndroidManifest.xml b/text-inputs/src/main/AndroidManifest.xml
deleted file mode 100644
index 4a0432f4..00000000
--- a/text-inputs/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.textinputs" />
\ No newline at end of file
diff --git a/versions.properties b/versions.properties
index e4edc071..4178f1ca 100644
--- a/versions.properties
+++ b/versions.properties
@@ -8,8 +8,13 @@
 #### suppress inspection "UnusedProperty" for whole file
 
 plugin.org.sonarqube=3.5.0.2730
+##       # available=4.0.0.2929
 
 plugin.org.jlleitschuh.gradle.ktlint=11.0.0
+##                       # available=11.1.0
+##                       # available=11.2.0
+##                       # available=11.3.1
+##                       # available=11.3.2
 
 plugin.io.gitlab.arturbosch.detekt=1.19.0
 ##                     # available=1.20.0-RC1
@@ -22,6 +27,10 @@ plugin.io.gitlab.arturbosch.detekt=1.19.0
 ##                     # available=1.22.0-RC2
 ##                     # available=1.22.0-RC3
 ##                     # available=1.22.0
+##                     # available=1.23.0-RC1
+##                     # available=1.23.0-RC2
+##                     # available=1.23.0-RC3
+##                     # available=1.23.0
 
 plugin.de.fayard.buildSrcLibs=0.51.0
 
@@ -32,6 +41,13 @@ version.androidx.navigation=2.5.3
 ##              # available=2.6.0-alpha02
 ##              # available=2.6.0-alpha03
 ##              # available=2.6.0-alpha04
+##              # available=2.6.0-alpha05
+##              # available=2.6.0-alpha06
+##              # available=2.6.0-alpha07
+##              # available=2.6.0-alpha08
+##              # available=2.6.0-alpha09
+##              # available=2.6.0-beta01
+##              # available=2.6.0-rc01
 
 version.com.decathlon.vitamin..foundation-assets=0.5.0-beta01
 
@@ -41,45 +57,104 @@ version.androidx.activity=1.6.1
 ##            # available=1.7.0-alpha01
 ##            # available=1.7.0-alpha02
 ##            # available=1.7.0-alpha03
+##            # available=1.7.0-alpha04
+##            # available=1.7.0-beta01
+##            # available=1.7.0-beta02
+##            # available=1.7.0-rc01
+##            # available=1.7.0
+##            # available=1.7.1
+##            # available=1.8.0-alpha01
+##            # available=1.8.0-alpha02
+##            # available=1.8.0-alpha03
+##            # available=1.8.0-alpha04
 
 version.androidx.appcompat=1.6.0
+##             # available=1.6.1
 ##             # available=1.7.0-alpha01
+##             # available=1.7.0-alpha02
 
-version.androidx.compose.compiler=1.3.2
-##                    # available=1.4.0-alpha01
-##                    # available=1.4.0-alpha02
-##                    # available=1.4.0
+version.androidx.compose.compiler=1.4.7
 
-version.androidx.compose.ui=1.3.2
-##              # available=1.3.3
+version.androidx.compose.ui=1.3.3
 ##              # available=1.4.0-alpha01
 ##              # available=1.4.0-alpha02
 ##              # available=1.4.0-alpha03
 ##              # available=1.4.0-alpha04
+##              # available=1.4.0-alpha05
+##              # available=1.4.0-beta01
+##              # available=1.4.0-beta02
+##              # available=1.4.0-rc01
+##              # available=1.4.0
+##              # available=1.4.1
+##              # available=1.4.2
+##              # available=1.4.3
+##              # available=1.5.0-alpha01
+##              # available=1.5.0-alpha02
+##              # available=1.5.0-alpha03
+##              # available=1.5.0-alpha04
 
 version.androidx.compose.material=1.3.1
 ##                    # available=1.4.0-alpha01
 ##                    # available=1.4.0-alpha02
 ##                    # available=1.4.0-alpha03
 ##                    # available=1.4.0-alpha04
+##                    # available=1.4.0-alpha05
+##                    # available=1.4.0-beta01
+##                    # available=1.4.0-beta02
+##                    # available=1.4.0-rc01
+##                    # available=1.4.0
+##                    # available=1.4.1
+##                    # available=1.4.2
+##                    # available=1.4.3
+##                    # available=1.5.0-alpha01
+##                    # available=1.5.0-alpha02
+##                    # available=1.5.0-alpha03
+##                    # available=1.5.0-alpha04
 
 version.google.accompanist=0.28.0
 ##             # available=0.29.0-alpha
+##             # available=0.29.1-alpha
+##             # available=0.29.2-rc
+##             # available=0.30.0
+##             # available=0.30.1
+##             # available=0.31.0-alpha
+##             # available=0.31.1-alpha
+##             # available=0.31.2-alpha
 
 version.androidx.core=1.9.0
 ##        # available=1.10.0-alpha01
+##        # available=1.10.0-alpha02
+##        # available=1.10.0-beta01
+##        # available=1.10.0-rc01
+##        # available=1.10.0
+##        # available=1.10.1
+##        # available=1.11.0-alpha01
+##        # available=1.11.0-alpha02
+##        # available=1.11.0-alpha03
+##        # available=1.11.0-alpha04
+##        # available=1.12.0-alpha01
+##        # available=1.12.0-alpha03
+##        # available=1.12.0-alpha04
 
 version.androidx.lifecycle=2.5.1
 ##             # available=2.6.0-alpha01
 ##             # available=2.6.0-alpha02
 ##             # available=2.6.0-alpha03
 ##             # available=2.6.0-alpha04
+##             # available=2.6.0-alpha05
+##             # available=2.6.0-beta01
+##             # available=2.6.0-rc01
+##             # available=2.6.0
+##             # available=2.6.1
 
 version.androidx.savedstate=1.2.0
+##              # available=1.2.1
 
 version.androidx.test.espresso=3.5.1
+##                 # available=3.6.0-alpha01
 
 version.androidx.test.ext.junit=1.1.5
+##                  # available=1.2.0-alpha01
 
 version.google.android.material=1.7.0
 ##                  # available=1.8.0-alpha01
@@ -87,4 +162,12 @@ version.google.android.material=1.7.0
 ##                  # available=1.8.0-alpha03
 ##                  # available=1.8.0-beta01
 ##                  # available=1.8.0-rc01
+##                  # available=1.8.0
 ##                  # available=1.9.0-alpha01
+##                  # available=1.9.0-alpha02
+##                  # available=1.9.0-beta01
+##                  # available=1.9.0-rc01
+##                  # available=1.9.0
+##                  # available=1.10.0-alpha01
+##                  # available=1.10.0-alpha02
+##                  # available=1.10.0-alpha03
diff --git a/vitamin/build.gradle.kts b/vitamin/build.gradle.kts
index baa6a239..0d7d3862 100644
--- a/vitamin/build.gradle.kts
+++ b/vitamin/build.gradle.kts
@@ -32,3 +32,7 @@ dependencies {
     api(project(":quantity-pickers"))
     api(project(":scaffolds"))
 }
+
+android {
+    namespace = "com.decathlon.vitamin.compose.vitamin"
+}
diff --git a/vitamin/src/main/AndroidManifest.xml b/vitamin/src/main/AndroidManifest.xml
index 415f7fd1..568741e5 100644
--- a/vitamin/src/main/AndroidManifest.xml
+++ b/vitamin/src/main/AndroidManifest.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.decathlon.vitamin.compose.vitamin" />
\ No newline at end of file
+<manifest />
\ No newline at end of file