shadowsocks-android
A shadowsocks client for Android
Building the shadowsocks Android client from source
The app is easy to describe, a shadowsocks client for Android. The README is mostly aimed at people compiling it themselves, and the prerequisite list is not short.
What lives in the repo
The repository holds the Android client for shadowsocks, written in Kotlin, with around 36,800 stars. Beyond a short description of the app itself, the README reads as developer documentation: what to install, how to fetch the code, how to build it, and where to look before contributing.
Prerequisites
Four things need to be present before a build can start: JDK 11 or later, the Android SDK, the Android NDK, and Rust with the Android targets installed. That combination of a JVM toolchain, the Android toolchain, and a Rust toolchain tells you the native parts of the app are substantial.
The build path
Clone the repository with submodules, then build either through Android Studio or with a gradle script. If you want to know whether the latest commit even builds under a UNIX environment, the README points you at the Travis status rather than promising anything on its own behalf.
The dependency licenses
A section of the README credits the open source components the app carries: redsocks, libevent, tun2socks, shadowsocks-rust, libsodium, and OpenSSL. It is a longer list than most apps bother to surface, and it sketches the shape of the networking stack sitting underneath the UI.
The license it ships under
The app itself is distributed under the GNU General Public License, with the standard text about free software provided without warranty. So the client is copyleft while several of its dependencies are permissive, a mix that is common enough but worth knowing if you plan to redistribute anything.
Community notes