From c46a6c2824532f4d47259b75ea837e33c6452524 Mon Sep 17 00:00:00 2001 From: Rods Date: Sat, 5 Sep 2026 09:43:52 -0300 Subject: [PATCH 1/4] fix: disable minify on library modules and add consumer ProGuard rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Library modules must not run R8 at build time — doing so strips classes accessed via reflection (SDUI component registry), causing ClassNotFoundException in consumer release builds while debug works fine. - Set isMinifyEnabled=false on release in kmp-library and android-library convention plugins - Replace consumerProguardFiles target from proguard-rules.pro (empty template) to consumer-rules.pro with actual -keep rules - Add consumer-rules.pro to craftd-core (public API + kotlinx.serialization keep rules), craftd-xml, and craftd-compose - Configure app-sample-cmp as standalone consumer (mavenLocal, version catalog, INTERNET permission, release build type with minify=true for validation) - Bump all modules to 1.1.1 Co-Authored-By: Claude Sonnet 4.6 --- .../KMP-Sample/gradle/libs.versions.toml | 2 +- android_kmp/app-sample-cmp/build.gradle.kts | 25 +++++++++++++++++-- .../src/androidMain/AndroidManifest.xml | 2 ++ .../com.codandotv.android-library.gradle.kts | 5 ++-- .../java/com.codandotv.kmp-library.gradle.kts | 8 ++---- android_kmp/craftd-compose/consumer-rules.pro | 2 ++ android_kmp/craftd-compose/gradle.properties | 2 +- android_kmp/craftd-core/consumer-rules.pro | 16 ++++++++++++ android_kmp/craftd-core/gradle.properties | 2 +- android_kmp/craftd-xml/consumer-rules.pro | 2 ++ android_kmp/craftd-xml/gradle.properties | 2 +- android_kmp/gradle/libs.versions.toml | 3 +++ android_kmp/settings.gradle.kts | 1 + 13 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 android_kmp/craftd-compose/consumer-rules.pro diff --git a/android_kmp/KMP-Sample/gradle/libs.versions.toml b/android_kmp/KMP-Sample/gradle/libs.versions.toml index a0f8bbdb..01e291a4 100644 --- a/android_kmp/KMP-Sample/gradle/libs.versions.toml +++ b/android_kmp/KMP-Sample/gradle/libs.versions.toml @@ -10,7 +10,7 @@ androidx-espresso = "3.7.0" androidx-lifecycle = "2.9.4" androidx-testExt = "1.3.0" composeMultiplatform = "1.9.0" -craftdCompose = "1.1.0" +craftdCompose = "1.1.1" junit = "4.13.2" kotlin = "2.2.21" kotlinxCoroutinesCore = "1.10.2" diff --git a/android_kmp/app-sample-cmp/build.gradle.kts b/android_kmp/app-sample-cmp/build.gradle.kts index b50d2459..8449dbe5 100644 --- a/android_kmp/app-sample-cmp/build.gradle.kts +++ b/android_kmp/app-sample-cmp/build.gradle.kts @@ -10,15 +10,36 @@ plugins { android { namespace = "com.codandotv.appsamplecmp" + compileSdk = 36 defaultConfig { applicationId = "org.example.project" minSdk = 24 targetSdk = 36 - compileSdk = 36 versionCode = 1 versionName = "1.0" } + + signingConfigs { + create("release") { + storeFile = file("${System.getProperty("user.home")}/.android/debug.keystore") + storePassword = "android" + keyAlias = "androiddebugkey" + keyPassword = "android" + } + } + + buildTypes { + getByName("debug") { + isMinifyEnabled = false + } + getByName("release") { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) + signingConfig = signingConfigs.getByName("release") + } + } } kotlin { @@ -47,7 +68,7 @@ kotlin { implementation(libs.coil3.network.okhttp) } commonMain.dependencies { - implementation(projects.craftdCompose) + implementation(libs.craftd.compose) implementation(compose.runtime) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json) diff --git a/android_kmp/app-sample-cmp/src/androidMain/AndroidManifest.xml b/android_kmp/app-sample-cmp/src/androidMain/AndroidManifest.xml index 871b8459..f81d3819 100644 --- a/android_kmp/app-sample-cmp/src/androidMain/AndroidManifest.xml +++ b/android_kmp/app-sample-cmp/src/androidMain/AndroidManifest.xml @@ -1,6 +1,8 @@ + + Date: Sat, 5 Sep 2026 11:53:01 -0300 Subject: [PATCH 2/4] fix: address PR review issues on ProGuard and mavenLocal - Guard mavenLocal() behind useLocalMaven Gradle property to fix CI - Remove redundant -keepnames after -keep in consumer ProGuard rules - Add craftd-xml to version catalog libs.versions.toml Co-Authored-By: Claude Sonnet 4.6 --- android_kmp/craftd-compose/consumer-rules.pro | 1 - android_kmp/craftd-xml/consumer-rules.pro | 1 - android_kmp/gradle/libs.versions.toml | 1 + android_kmp/settings.gradle.kts | 4 +++- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/android_kmp/craftd-compose/consumer-rules.pro b/android_kmp/craftd-compose/consumer-rules.pro index 0cf7d393..f95f150d 100644 --- a/android_kmp/craftd-compose/consumer-rules.pro +++ b/android_kmp/craftd-compose/consumer-rules.pro @@ -1,2 +1 @@ -keep class com.github.codandotv.craftd.compose.** { *; } --keepnames class com.github.codandotv.craftd.compose.** { *; } diff --git a/android_kmp/craftd-xml/consumer-rules.pro b/android_kmp/craftd-xml/consumer-rules.pro index b2f26c7c..c359879d 100644 --- a/android_kmp/craftd-xml/consumer-rules.pro +++ b/android_kmp/craftd-xml/consumer-rules.pro @@ -1,2 +1 @@ -keep class com.github.codandotv.craftd.xml.** { *; } --keepnames class com.github.codandotv.craftd.xml.** { *; } diff --git a/android_kmp/gradle/libs.versions.toml b/android_kmp/gradle/libs.versions.toml index 7cae3a78..11aa2930 100644 --- a/android_kmp/gradle/libs.versions.toml +++ b/android_kmp/gradle/libs.versions.toml @@ -43,6 +43,7 @@ androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } craftd-core = { module = "io.github.codandotv:craftd-core", version.ref = "craftd" } craftd-compose = { module = "io.github.codandotv:craftd-compose", version.ref = "craftd" } +craftd-xml = { module = "io.github.codandotv:craftd-xml", version.ref = "craftd" } plugin_maven = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "plugin-maven" } kotlin_gradle_plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } android_gradle_plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "android_gradle_plugin" } diff --git a/android_kmp/settings.gradle.kts b/android_kmp/settings.gradle.kts index 8f080646..e4a005d7 100644 --- a/android_kmp/settings.gradle.kts +++ b/android_kmp/settings.gradle.kts @@ -13,7 +13,9 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { - mavenLocal() + if (providers.gradleProperty("useLocalMaven").isPresent) { + mavenLocal() + } google() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") From 81cc2b4b87c238deecc8aa80ae13f0c6110ce3e7 Mon Sep 17 00:00:00 2001 From: Rods Date: Sat, 5 Sep 2026 11:57:04 -0300 Subject: [PATCH 3/4] chore: remove mavenLocal from settings.gradle.kts Drop the local property-guarded mavenLocal() repository from dependencyResolutionManagement. Rely on Maven Central and remote repositories only. Co-Authored-By: Claude Sonnet 4.6 --- android_kmp/settings.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/android_kmp/settings.gradle.kts b/android_kmp/settings.gradle.kts index e4a005d7..2f6eaac6 100644 --- a/android_kmp/settings.gradle.kts +++ b/android_kmp/settings.gradle.kts @@ -13,9 +13,6 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { - if (providers.gradleProperty("useLocalMaven").isPresent) { - mavenLocal() - } google() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") From d2d90019012c28c9a2b1b1d87ee0c904a121178a Mon Sep 17 00:00:00 2001 From: Rods Date: Sat, 5 Sep 2026 12:09:33 -0300 Subject: [PATCH 4/4] fix: revert app-sample-cmp to project dependency Restore projects.craftdCompose in app-sample-cmp instead of the published coordinates. The 1.1.1 artifact is not yet on Maven Central, so the sample build broke after mavenLocal() was removed. Co-Authored-By: Claude Sonnet 4.6 --- android_kmp/app-sample-cmp/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android_kmp/app-sample-cmp/build.gradle.kts b/android_kmp/app-sample-cmp/build.gradle.kts index 8449dbe5..69581c2d 100644 --- a/android_kmp/app-sample-cmp/build.gradle.kts +++ b/android_kmp/app-sample-cmp/build.gradle.kts @@ -68,7 +68,7 @@ kotlin { implementation(libs.coil3.network.okhttp) } commonMain.dependencies { - implementation(libs.craftd.compose) + implementation(projects.craftdCompose) implementation(compose.runtime) implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json)