Kotlin + Jetpack Compose VPN proxy client (Shadowsocks AEAD SIP004, SOCKS5 RFC1928/1929, HTTP/HTTPS CONNECT) with per-app whitelist via VpnService and the vendored hev-socks5-tunnel engine (JNI). Includes the post-review fixes to the connection lifecycle, reconnect teardown, journal, app-filter auto-reconnect, and the tab/timeline layout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
977 B
Prolog
29 lines
977 B
Prolog
# 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 <methods>;
|
|
*;
|
|
}
|
|
|
|
# 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 <methods>;
|
|
*;
|
|
}
|
|
|
|
# kotlinx.serialization
|
|
-keepattributes *Annotation*, InnerClasses
|
|
-dontnote kotlinx.serialization.**
|
|
-keepclassmembers class **$$serializer { *; }
|
|
-keepclasseswithmembers,allowshrinking,allowobfuscation class chat.vojo.proxy.** {
|
|
@kotlinx.serialization.Serializable <methods>;
|
|
}
|
|
-if @kotlinx.serialization.Serializable class chat.vojo.proxy.**
|
|
-keep,allowobfuscation class <1> {
|
|
static <1>$Companion Companion;
|
|
*** Companion;
|
|
}
|
|
-keepclassmembers class chat.vojo.proxy.** {
|
|
*** serializer(...);
|
|
}
|