mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
chore(r8): remove redundant keep rules covered by consumer rules
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>
This commit is contained in:
parent
90f6e21a9c
commit
c1c01d7765
4 changed files with 36 additions and 114 deletions
|
|
@ -1,2 +0,0 @@
|
|||
-keep class org.meshtastic.core.model.DataPacket
|
||||
-keep class org.meshtastic.core.model.DataPacket$CREATOR
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
# Core proto classes required for packet handling and serialization
|
||||
# FromRadio and related message types (primary packet container)
|
||||
-keep class org.meshtastic.proto.FromRadio
|
||||
-keep class org.meshtastic.proto.Data
|
||||
-keep class org.meshtastic.proto.MeshPacket
|
||||
-keep class org.meshtastic.proto.LogRecord
|
||||
|
||||
# Message type payloads (handled in packet routing)
|
||||
-keep class org.meshtastic.proto.AdminMessage
|
||||
-keep class org.meshtastic.proto.StoreAndForward
|
||||
-keep class org.meshtastic.proto.StoreForwardPlusPlus
|
||||
-keep class org.meshtastic.proto.Routing
|
||||
|
||||
# User and Node information
|
||||
-keep class org.meshtastic.proto.User
|
||||
-keep class org.meshtastic.proto.NeighborInfo
|
||||
-keep class org.meshtastic.proto.Neighbor
|
||||
|
||||
# Location and environment data
|
||||
-keep class org.meshtastic.proto.Position
|
||||
-keep class org.meshtastic.proto.Waypoint
|
||||
-keep class org.meshtastic.proto.StatusMessage
|
||||
|
||||
# Telemetry data types
|
||||
-keep class org.meshtastic.proto.Telemetry
|
||||
-keep class org.meshtastic.proto.DeviceMetrics
|
||||
-keep class org.meshtastic.proto.EnvironmentMetrics
|
||||
-keep class org.meshtastic.proto.AirQualityMetrics
|
||||
-keep class org.meshtastic.proto.PowerMetrics
|
||||
-keep class org.meshtastic.proto.LocalStats
|
||||
-keep class org.meshtastic.proto.HostMetrics
|
||||
|
||||
# Other data
|
||||
-keep class org.meshtastic.proto.Paxcount
|
||||
-keep class org.meshtastic.proto.DeviceMetadata
|
||||
|
||||
# Configuration classes
|
||||
-keep class org.meshtastic.proto.ChannelSet
|
||||
-keep class org.meshtastic.proto.LocalConfig
|
||||
-keep class org.meshtastic.proto.Config
|
||||
-keep class org.meshtastic.proto.ModuleConfig
|
||||
-keep class org.meshtastic.proto.Channel
|
||||
-keep class org.meshtastic.proto.ClientNotification
|
||||
Loading…
Add table
Add a link
Reference in a new issue