// the find
shadowsocks/shadowsocks-android
A shadowsocks client for Android
The official Android client for shadowsocks, a proxy protocol designed to circumvent network censorship. It's a mature, production-grade app used by millions, primarily in regions where internet access is restricted. Not a general-purpose VPN — it's specifically built around the shadowsocks protocol.
The plugin architecture is genuinely well-designed: plugins are separate APKs discovered via Android's package manager, so the core app doesn't need updates to support new obfuscation methods. The core/mobile module split is clean — shared logic in `core`, UI in `mobile`, with a separate `plugin` SDK for third-party plugin authors. The build uses Rust (shadowsocks-rust) cross-compiled for all four Android ABIs via rustup targets, which is the right call for crypto-heavy code. AIDL-based IPC between the VPN service and UI is solid Android engineering — survives process death correctly.
Build setup is a significant barrier: you need JDK 11+, Android NDK, Rust, and four cross-compilation targets installed just to get started, and `--recurse-submodules` is mandatory but easy to miss. The .travis.yml is still in the repo while CI has clearly moved to CircleCI and GitHub Actions — stale infra files suggest housekeeping isn't a priority. No unit test coverage to speak of beyond some DB migration and ACL parsing tests; the core proxy logic has zero tests. The ACL (access control list) gfwlist update pipeline is a Perl/Python hybrid that generates binary assets — fragile and opaque if it ever breaks.