mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
Removes explicit -keep/-dontwarn wildcards whose behavior is already
provided by the library's own bundled consumer-rules.pro, by Room's
generated static references, or by narrower annotation-targeted keeps.
The merged R8 configuration shrinks by 34 lines (1981→1947 googleRelease,
1653→1619 fdroidRelease), giving R8 more tree-shaking freedom.
Removed (covered by library-bundled consumer rules):
- kotlin.Metadata, kotlin.reflect.**, kotlin.coroutines.Continuation,
kotlinx.coroutines.** (kotlin-stdlib + kotlinx-coroutines-core)
- androidx.datastore.**, androidx.paging.**, androidx.lifecycle.**,
androidx.navigation3.**, androidx.sqlite.**
- coil3.**, okio.**, co.touchlab.kermit.**,
com.mikepenz.aboutlibraries.**, com.mikepenz.markdown.**,
com.juul.kable.**, io.ktor.**, io.ktor.client.engine.java.**
(HttpClientEngineFactory ServiceLoader keep retained)
Room (room3) narrowed:
- Dropped org.meshtastic.core.database.{dao,entity,Converters}.** and
**_Impl wildcards. RoomDatabaseConstructor +
MeshtasticDatabaseConstructor/MeshtasticDatabase keeps retained.
Room 3.0 KMP generates static references rather than reflective
lookups, so reachable DAO/entity/_Impl code survives tree-shaking.
Wire protobuf narrowed:
- Dropped com.squareup.wire.**, org.meshtastic.proto.**, meshtastic.**
wildcards and deleted core/proto/consumer-rules.pro (20 per-class keeps).
- Replaced with targeted -keepclassmembers for ADAPTER fields on
Message subclasses and ProtoAdapter member preservation. Verified
no Class.forName lookups into org.meshtastic.proto namespace.
Meshtastic model + DI:
- Dropped org.meshtastic.core.model.** wildcard and deleted
core/model/consumer-rules.pro (DataPacket is @CommonParcelize'd;
no reflective access to core.model).
- Replaced org.meshtastic.**.di.** wildcard with a narrow
@KoinViewModel class annotation keep (the @Module, @ComponentScan,
@Single, @Factory keeps above already cover the rest of Koin).
Compose resources refinement:
- Narrowed org.meshtastic.core.resources.** to Res + Res$* members
only (sufficient for the fdroid startup-crash workaround in #5146).
Intentionally retained (documented workarounds / policy):
- -dontoptimize, -dontobfuscate, -printconfiguration
- All Koin annotation keeps + org.koin.**
- kotlinx-serialization @Serializable keeps
- Room RoomDatabaseConstructor + MeshtasticDatabase(-Constructor)
- Ktor HttpClientEngineFactory ServiceLoader keep
- Desktop MainKt + org.meshtastic.desktop.** entry points
- All -dontwarn rules for JVM/Android platform gaps
- app/proguard-rules.pro Compose runtime/ui/animation/foundation/
material3 keeps (defence-in-depth with -dontoptimize; may interact
with the parallel CMP freeze RCA investigation).
Verified:
- ./gradlew :app:assembleFdroidRelease — SUCCESS (after each batch)
- ./gradlew :app:assembleGoogleRelease — SUCCESS
- ./gradlew spotlessApply detekt — SUCCESS
- :desktop:createReleaseDistributable — pre-existing failure on
origin/main (Vico/Skia warnings), unrelated to these changes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
||
|---|---|---|
| .. | ||
| api | ||
| barcode | ||
| ble | ||
| common | ||
| data | ||
| database | ||
| datastore | ||
| di | ||
| domain | ||
| model | ||
| navigation | ||
| network | ||
| nfc | ||
| prefs | ||
| proto | ||
| repository | ||
| resources | ||
| service | ||
| takserver | ||
| testing | ||
| ui | ||