A ShadowsocksR, V2Ray and Trojan Client for Android
A fully featured ShadowsocksR, V2Ray and Trojan client for Android, written in Scala.
PREREQUISITES
- A really fast proxy
- JDK 1.8
sudo apt-get install openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
java -version
- SBT 0.13.8
- Android SDK
- Build Tools 30+
- Android Support Repository and Google Repository (see
build.sbt
for version)
- Android NDK r21e+
BUILD with Android Studio
Warnning: Cannot build in windows
-
Download Android Studio
-
Download Android NDK r20b
-
Install Scala plugin for IntelliJ IDEA
-
Set proxy for Android Studio:
File | Settings | Appearance & Behavior | System Settings | HTTP Proxy
Set proxy for sbt:File | Settings | Build, Execution, Deployment | Build Tools | sbt
, inVM parameters
input:-Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8080 -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080
-
Set environment variable
ANDROID_HOME
to/path/to/Android/Sdk
-
Set environment variable
ANDROID_NDK_HOME
to/path/to/Android/android-ndk-r21e
-
Create your key following the instructions at https://developer.android.com/studio/publish/app-signing.html
-
Put your key in ~/.keystore or any other place
-
Create
local.properties
fromlocal.properties.example
with your own key informationkey.alias: abc key.store: /path/to/Android/abc.jks key.store.password: abc
-
if you installed multiple versions of Java, use
sudo update-alternatives --config java
to select Java 8 -
Before build apk, make sure inside
./project/build.properties
, sbt.version=0.13.18 -
Invoke the building like this
export https_proxy=http://127.0.0.1:8080 # !important
export ANDROID_HOME=/path/to/Android/Sdk
export ANDROID_NDK_HOME=/path/to/Android/android-ndk-r20b
# install and update all git submodule
git submodule update --init
# cd ./src/main/jni/shadowsocks-libev && git checkout Akkariiin/master
# Build the App and fix the problems as the error messages indicated
sbt native-build clean android:package-release
# run app
sbt android:run
If you use x64 linux like Archlinux x86_64, or your linux have new version ncurses lib, you may need install the 32bit version ncurses and link it as follow (make sure all these *.so files in the right location under your system, otherwise you have to copy them to /usr/lib/ and /usr/lib32/ directory):
# use Archlinux x86_64 as example
# install ncurses x64 and x86 version
sudo pacman -S lib32-ncurses ncurses
# link the version-6 ncurses to version-5
sudo ln -s /usr/lib/libncursesw.so /usr/lib/libncurses.so.5
sudo ln -s /usr/lib32/libncursesw.so /usr/lib32/libncurses.so.5
# link libncurses to libtinfo
sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5
sudo ln -s /usr/lib32/libncurses.so.5 /usr/lib32/libtinfo.so.5
Integration with Android Studio
Checkout this link
- rm -rf ~/.android/sbt/exploded-aars/*
- In Project Settings -> Modules -> shadowsocksr-v2ray-trojan-android, change
Structure
,Generated Sources
to correct file path - In Run/Debug Configuration -> Before launch, replace
Gradle-aware Make
withandroid:run
BUILD on Mac OS X (with HomeBrew)
- Install Android SDK and NDK by run
brew install android-ndk android-sdk
- Add
export ANDROID_HOME=/usr/local/Cellar/android-sdk/$version
to your .bashrc , then reopen the shell to load it. - Add
export ANDROID_NDK_HOME=/usr/local/Cellar/android-ndk/$version
to your .bashrc , then reopen the shell to load it. - echo "y" | android update sdk --filter tools,platform-tools,build-tools-23.0.2,android-23,extra-google-m2repository --no-ui -a
- echo "y" | android update sdk --filter extra-android-m2repository --no-ui --no-https -a
- Create your key following the instructions at http://developer.android.com/guide/publishing/app-signing.html#cert
- Put your key in ~/.keystore
- Create
local.properties
fromlocal.properties.example
with your own key information . - Invoke the building like this
git submodule update --init
# Build native binaries
./build.sh
# Build the apk
sbt clean android:package-release
OPEN SOURCE LICENSES
- shadowsocks-libev: GPLv3
- tun2socks: BSD
- redsocks: APL 2.0
- OpenSSL: OpenSSL
- pdnsd: GPLv3
- libev: GPLv2
- libevent: BSD
- v2ray-core: BSD
- go-tun2socks: BSD
LICENSE
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.