# Keep JNI bridge — the native symbol name is derived from the full class+method # name, so the class must not be renamed and the native methods must be kept. -keep class chat.vojo.proxy.core.Tun2Socks { native ; *; } # Vendored libhev's JNI_OnLoad does FindClass + RegisterNatives on this exact # class/signature at load time; renaming or removing it aborts the process. -keep class hev.htproxy.TProxyService { native ; *; } # kotlinx.serialization -keepattributes *Annotation*, InnerClasses -dontnote kotlinx.serialization.** -keepclassmembers class **$$serializer { *; } -keepclasseswithmembers,allowshrinking,allowobfuscation class chat.vojo.proxy.** { @kotlinx.serialization.Serializable ; } -if @kotlinx.serialization.Serializable class chat.vojo.proxy.** -keep,allowobfuscation class <1> { static <1>$Companion Companion; *** Companion; } -keepclassmembers class chat.vojo.proxy.** { *** serializer(...); }