EARHORNMUSIC UPnP · Android TV · Phones · Android Auto · GNU/Linux
Release 0.5.0

proguard-rules.pro

Each line, with the release that last changed it.

0.5.01# 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.**