PONGo_android/app/proguard-rules.pro
Jon Vanvik af303d83c8 Make the release (R8) build pass
Enabling R8 in the previous commit surfaced two build issues; fixed here so
assembleDebug AND assembleRelease both succeed (verified on this machine:
Android Studio JBR 21 + SDK android-36).

- proguard-rules.pro: add `-dontwarn com.google.errorprone.annotations.**`.
  Tink (pulled in by androidx.security-crypto / EncryptedSharedPreferences)
  references compile-only Error Prone annotations that aren't on the runtime
  classpath, which R8 treated as fatal "missing class" errors.
- ApiClient.await(): @OptIn(ExperimentalCoroutinesApi::class) for the
  resume(value){ onCancellation } overload (experimental in coroutines 1.8.1).

Release APK is R8-shrunk (~1.8 MB vs ~18 MB debug). It is unsigned — wire a
signing config / keystore (kept out of VCS) before distributing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 17:48:45 +02:00

40 lines
1.9 KiB
Prolog

# ─── kotlinx.serialization ───────────────────────────────────────────────────
# R8 must not strip the generated $$serializer classes / serializer() methods or
# the @Serializable config (ApiConfiguration, ServerTrustPolicy) fails to (de)serialize.
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.**
-keepclassmembers class kotlinx.serialization.json.** { *; }
# Keep `serializer()` and the synthetic Companion for every @Serializable type.
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}
-if @kotlinx.serialization.Serializable class ** {
static **$* *;
}
-keepclassmembers class <2>$<3> {
kotlinx.serialization.KSerializer serializer(...);
}
# Keep this app's serializable models and their generated serializers explicitly.
-keep,includedescriptorclasses class no.svorka.mcms.**$$serializer { *; }
-keepclassmembers class no.svorka.mcms.** {
*** Companion;
}
-keepclasseswithmembers class no.svorka.mcms.** {
kotlinx.serialization.KSerializer serializer(...);
}
# ─── OkHttp / Okio ───────────────────────────────────────────────────────────
# OkHttp ships its own consumer rules; silence the optional-dependency warnings.
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**
# ─── Tink / EncryptedSharedPreferences (androidx.security-crypto) ─────────────
# Tink references compile-only Error Prone annotations that aren't on the runtime
# classpath; they're not needed at runtime, so silence the missing-class errors.
-dontwarn com.google.errorprone.annotations.**