Previously a profile can exist in the following forms: * `.database.Profile` used for everything backend; * `.ShadowsocksSettings` which uses Preferences to provide UI to tweak settings; * `.aidl.Config` used for IPC; * `<data dir>/shared_pref/com.github.shadowsocks_preferences.xml` which exists for no apparent reason. Thus long code block can be seen whose purpose is simply converting the data from one form to another. This commit intends to remove the latter two by: 1. Using profile ID and take advantage of fs r/w lock SQLite uses for IPC and better extensibility; 2. Stop persisting redundant fields in the preferences file and update database directly.
Shadowsocks for Android
A shadowsocks client for Android, written in Scala.
CI STATUS
PREREQUISITES
- JDK 1.8
- SBT 0.13.0+
- Android SDK r25+
- Android NDK r10d+
BUILD
- Set environment variable
ANDROID_HOMEto/path/to/android-sdk - Set environment variable
ANDROID_NDK_HOMEto/path/to/android-ndk - Create your key following the instructions at https://developer.android.com/studio/publish/app-signing.html
- Put your key in ~/.keystore
- Create
local.propertiesfromlocal.properties.examplewith your own key information - Invoke the building like this
git submodule update --init
# Build the App
sbt native-build clean android:package-release
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/$versionto your .bashrc , then reopen the shell to load it. - Add
export ANDROID_NDK_HOME=/usr/local/Cellar/android-ndk/$versionto 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.propertiesfromlocal.properties.examplewith 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
LICENSE
Copyright (C) 2016 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2016 by Mygod Studio <mygodstudio@gmail.com>
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/.