proguard-rules.pro
44 lines · 2.0 KB
Changed in: 0.5.0
| 1 | # jUPnP uses reflection heavily for UPnP actions / arguments / DIDL-Lite. |
| 2 | -keep class org.jupnp.** { *; } |
| 3 | -dontwarn org.jupnp.** |
| 4 | # Jetty 9.4 (jUPnP's transport) touches servlet + NIO classes reflectively. |
| 5 | -keep class org.eclipse.jetty.** { *; } |
| 6 | -dontwarn org.eclipse.jetty.** |
| 7 | -dontwarn javax.servlet.** |
| 8 | -dontwarn javax.naming.** |
| 9 | -dontwarn org.slf4j.** |
| 10 | |
| 11 | # SLF4J 2.x discovers its logging provider via java.util.ServiceLoader |
| 12 | # (META-INF/services/org.slf4j.spi.SLF4JServiceProvider). R8 doesn't trace |
| 13 | # ServiceLoader references and will prune the JDK14 provider classes as |
| 14 | # "unused", leaving SLF4J unable to find a binding at runtime — symptom |
| 15 | # is "No SLF4J providers were found. Defaulting to no-operation (NOP) |
| 16 | # logger implementation" in logcat. Without a working SLF4J binding, |
| 17 | # jUPnP's discovery / SSDP / control-point logs all go to /dev/null, |
| 18 | # which makes UPnP failures undebuggable. |
| 19 | -keep class org.slf4j.jul.** { *; } |
| 20 | -keep class org.slf4j.spi.SLF4JServiceProvider { *; } |
| 21 | -keepnames class org.slf4j.** { *; } |
| 22 | |
| 23 | # Kotlinx serialization |
| 24 | -keepattributes *Annotation*, InnerClasses |
| 25 | -dontnote kotlinx.serialization.AnnotationsKt |
| 26 | -keep,includedescriptorclasses class dev.stave.**$$serializer { *; } |
| 27 | -keepclassmembers class dev.stave.** { *** Companion; } |
| 28 | -keepclasseswithmembers class dev.stave.** { |
| 29 | kotlinx.serialization.KSerializer serializer(...); |
| 30 | } |
| 31 | |
| 32 | # Media3 |
| 33 | -keep class androidx.media3.** { *; } |
| 34 | -dontwarn androidx.media3.** |
| 35 | |
| 36 | # ── Raw Cast client (observer / follower mode) ────────────────────── |
| 37 | # Hand-rolled Cast v2 wire codec + TLS with permissive trust for the |
| 38 | # Chromecast's self-signed cert, all on raw SSLSocket. First minified |
| 39 | # release coincided with TV follow failing 100% while debug worked; |
| 40 | # no confirmed R8 victim yet (no reflection in the package), so keep |
| 41 | # the whole package as a conservative shield until a release logcat |
| 42 | # trace (tag: EarhornCast) names the exact failure. Size cost: a few KB. |
| 43 | -keep class dev.stave.cast.raw.** { *; } |
| 44 | -dontwarn dev.stave.cast.raw.** |


