A fully featured ShadowsocksR, V2Ray and Trojan client for Android, written in Scala.
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
build.sbt
for version)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
, in VM 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
from local.properties.example
with your own key information
key.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
# 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
Checkout this link
Structure
, Generated Sources
to correct file pathGradle-aware Make
with android:run
brew install android-ndk android-sdk
export ANDROID_HOME=/usr/local/Cellar/android-sdk/$version
to your .bashrc , then reopen the shell to load it.export ANDROID_NDK_HOME=/usr/local/Cellar/android-ndk/$version
to your .bashrc , then reopen the shell to load it.local.properties
from local.properties.example
with your own key information . git submodule update --init
# Build native binaries
./build.sh
# Build the apk
sbt clean android:package-release
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/.