diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 5f63ce9..9635700 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -14,7 +14,28 @@ android { targetSdk = libs.versions.android.targetSdk.get().toInt() versionCode = 1 versionName = "1.0" + + ndk { + abiFilters += listOf("arm64-v8a", "armeabi-v7a") + } } + + buildTypes { + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + signingConfig = signingConfigs.getByName("debug") + } + } + + buildFeatures { + buildConfig = false + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro new file mode 100644 index 0000000..540142c --- /dev/null +++ b/androidApp/proguard-rules.pro @@ -0,0 +1,20 @@ +# Kotlin Metadata (required for KMP) +-keep class kotlin.Metadata { *; } +-keepattributes *Annotation*, Signature, InnerClasses, EnclosingMethod + +# kotlinx.datetime +-keep class kotlinx.datetime.** { *; } + +# tyme4kt (Chinese traditional calendar) +-keep class cn.tyme.** { *; } + +# Compose runtime reflective lookups +-keep class androidx.compose.runtime.** { *; } + +# ViewModel (used by CalendarViewModel) +-keep class * extends androidx.lifecycle.ViewModel { *; } + +# Keep entry point composables referenced by string name +-keepclassmembers class * { + @androidx.compose.runtime.Composable ; +} diff --git a/gradle.properties b/gradle.properties index 9c2f0cf..4177846 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,11 +6,14 @@ kotlin.daemon.jvmargs=-Xmx3072M org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8 org.gradle.configuration-cache=true org.gradle.caching=true +org.gradle.parallel=true +org.gradle.daemon=true #Android android.nonTransitiveRClass=true android.useAndroidX=true android.uniquePackageNames=false android.dependency.useConstraints=true -android.r8.strictFullModeForKeepRules=false +android.r8.strictFullModeForKeepRules=true android.generateSyncIssueWhenLibraryConstraintsAreEnabled=false +android.enableR8.fullMode=true