mirror of
https://github.com/tiennm99/loto.git
synced 2026-10-20 02:17:46 +00:00
feat: initial Android port of tiennm99/loto
Native Android port of the SvelteKit Lô tô hội chợ Tân Tân web app.
Stack:
- Kotlin 2.1 + Jetpack Compose + Material 3
- Single Activity, single Gradle module (:app)
- Audio: AndroidX Media3 ExoPlayer with bundled MP3 voice clips
- Settings: DataStore Preferences with legacy masterMode migration
- minSdk 24, targetSdk 35, JDK 17
Game logic:
- 9x9 player card with exactly 5 numbers per row AND per column
- Soft constraint: no 3 consecutive filled columns (rejection-sampled)
- 11x9 ones-digit-aligned master tracking board
- Bingo / Cho ("waiting") state machine ported from PlayerBoard.svelte
- Forward-only auto-tick from MasterPanel via app-scoped CallBus
Audio:
- 184 MP3s pre-generated with Microsoft Edge TTS (Hoai My, Nam Minh)
- ExoPlayer playlist for cho + N gapless sequence
- Token-based cancellation matching the web voice.js semantics
CI:
- build-debug.yml: lint + test + assembleDebug on push/PR
- release.yml: signed AAB+APK on v* tag, env-driven keystore
This commit is contained in:
1 parent
36f2f41986
commit
90a9dd1d1a
255 files changed
+4790
No files matched your search
Vendored
+24
@@ -0,0 +1,24 @@
|
||||
# Lô tô Android — ProGuard / R8 rules
|
||||
# Default mode (not fullMode) keeps reflection-heavy Kotlin/AndroidX intact.
|
||||
|
||||
# kotlinx.serialization — keep companion @Serializer references R8 can't infer
|
||||
-keep,includedescriptorclasses class com.miti99.loto.**$$serializer { *; }
|
||||
-keepclassmembers class com.miti99.loto.** {
|
||||
*** Companion;
|
||||
}
|
||||
-keepclasseswithmembers class com.miti99.loto.** {
|
||||
kotlinx.serialization.KSerializer serializer(...);
|
||||
}
|
||||
|
||||
# Keep Kotlin metadata for runtime reflection
|
||||
-keep class kotlin.Metadata { *; }
|
||||
|
||||
# Media3 / ExoPlayer internals — prevent stripping of codec/extractor classes
|
||||
-keep class androidx.media3.** { *; }
|
||||
-dontwarn androidx.media3.**
|
||||
|
||||
# DataStore
|
||||
-keep class androidx.datastore.** { *; }
|
||||
|
||||
# Compose tooling only exists in debug; suppress release warnings
|
||||
-dontwarn androidx.compose.ui.tooling.**
|
||||
Reference in new issue
Block a user