diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml
index 2fb89442..658dd1b4 100644
--- a/.github/workflows/debug.yml
+++ b/.github/workflows/debug.yml
@@ -20,7 +20,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'core/*' > core_status
+ run: git submodule status 'library/core/*' > core_status
- name: Core Cache
id: cache
uses: actions/cache@v2
@@ -39,7 +39,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs core
+ ./run lib core
v2ray:
name: Native Build (V2Ray)
runs-on: ubuntu-latest
@@ -47,14 +47,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status v2ray > v2ray_status
+ run: git submodule status library/v2ray > v2ray_status
- name: V2Ray Cache
id: cache
uses: actions/cache@v2
with:
path: |
app/libs/libv2ray.aar
- key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }}
+ key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -62,7 +62,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs v2ray
+ run: ./run lib v2ray
xtls:
name: Native Build (XTLS)
runs-on: ubuntu-latest
@@ -70,14 +70,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'xtls-plugin/*' > xtls_status
+ run: git submodule status 'plugin/xtls/*' > xtls_status
- name: XTLS Cache
id: cache
uses: actions/cache@v2
with:
path: |
- xtls-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+ plugin/xtls/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -85,7 +85,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs xtls
+ run: ./run plugin xtls
trojan-go:
name: Native Build (Trojan-Go)
runs-on: ubuntu-latest
@@ -93,14 +93,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'trojan-go-plugin/*' > trojan_go_status
+ run: git submodule status 'plugin/trojan-go/*' > trojan_go_status
- name: Trojan-Go Cache
id: cache
uses: actions/cache@v2
with:
path: |
- trojan-go-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }}
+ plugin/trojan-go/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -108,7 +108,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs trojan_go
+ run: ./run plugin trojan_go
naive:
runs-on: ubuntu-latest
name: Native Build (NaïveProxy)
@@ -120,19 +120,19 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'naive-plugin/*' > naive_status
+ run: git submodule status 'plugin/naive/*' > naive_status
- name: Naive Cache
id: cache
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/${{ matrix.arch }}
- key: naive-${{ matrix.arch }}-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/${{ matrix.arch }}
+ key: naive-${{ matrix.arch }}-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
run: |
./run init action naive
- ./run libs naive ${{ matrix.arch }}
+ ./run plugin naive ${{ matrix.arch }}
pingtunnel:
name: Native Build (PingTunnel)
runs-on: ubuntu-latest
@@ -140,14 +140,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'pt-plugin/*' > pt_status
+ run: git submodule status 'plugin/pingtunnel/*' > pt_status
- name: PingTunnel Cache
id: cache
uses: actions/cache@v2
with:
path: |
- pt-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }}
+ plugin/pingtunnel/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -155,7 +155,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs pingtunnel
+ run: ./run plugin pingtunnel
relaybaton:
name: Native Build (RelayBaton)
runs-on: ubuntu-latest
@@ -163,14 +163,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'rb-plugin/*' > rb_status
+ run: git submodule status 'plugin/relaybaton/*' > rb_status
- name: RelayBaton Cache
id: cache
uses: actions/cache@v2
with:
path: |
- rb-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }}
+ plugin/relaybaton/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -178,7 +178,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs relaybaton
+ run: ./run plugin relaybaton
shadowsocks:
name: Native Build (Shadowsocks)
runs-on: ubuntu-latest
@@ -186,14 +186,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'shadowsocks/*' > shadowsocks_status
+ run: git submodule status 'library/shadowsocks/*' > shadowsocks_status
- name: Shadowsocks Cache
id: cache
uses: actions/cache@v2
with:
path: |
app/libs/shadowsocks-release.aar
- key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
+ key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
- name: Install Rust
if: steps.cache.outputs.cache-hit != 'true'
run: ./run init action shadowsocks
@@ -208,7 +208,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs shadowsocks
+ ./run lib shadowsocks
shadowsocksr:
name: Native Build (ShadowsocksR)
runs-on: ubuntu-latest
@@ -216,7 +216,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'shadowsocksr/*' > shadowsocksr_status
+ run: git submodule status 'library/shadowsocksr/*' > shadowsocksr_status
- name: ShadowsocksR Cache
id: cache
uses: actions/cache@v2
@@ -235,7 +235,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs shadowsocksr
+ ./run lib shadowsocksr
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -249,10 +249,10 @@ jobs:
uses: actions/checkout@v2
- name: Fetch Status
run: |
- git submodule status 'core/*' > core_status
- git submodule status 'shadowsocks/*' > shadowsocks_status
- git submodule status 'shadowsocksr/*' > shadowsocksr_status
- git submodule status v2ray > v2ray_status
+ git submodule status 'library/core/*' > core_status
+ git submodule status 'library/shadowsocks/*' > shadowsocks_status
+ git submodule status 'library/shadowsocksr/*' > shadowsocksr_status
+ git submodule status library/v2ray > v2ray_status
- name: Core Cache
uses: actions/cache@v2
with:
@@ -264,13 +264,13 @@ jobs:
with:
path: |
app/libs/libv2ray.aar
- key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }}
+ key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }}
- name: Shadowsocks Cache
uses: actions/cache@v2
with:
path: |
app/libs/shadowsocks-release.aar
- key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
+ key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
- name: ShadowsocksR Cache
uses: actions/cache@v2
with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 6777e0c3..46e162e7 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -33,7 +33,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'core/*' > core_status
+ run: git submodule status 'library/core/*' > core_status
- name: Core Cache
id: cache
uses: actions/cache@v2
@@ -52,7 +52,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs core
+ ./run lib core
v2ray:
name: Native Build (V2Ray)
runs-on: ubuntu-latest
@@ -61,14 +61,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status v2ray > v2ray_status
+ run: git submodule status library/v2ray > v2ray_status
- name: V2Ray Cache
id: cache
uses: actions/cache@v2
with:
path: |
app/libs/libv2ray.aar
- key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }}
+ key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -85,7 +85,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs v2ray
+ ./run lib v2ray
shadowsocks:
name: Native Build (Shadowsocks)
runs-on: ubuntu-latest
@@ -94,14 +94,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'shadowsocks/*' > shadowsocks_status
+ run: git submodule status 'library/shadowsocks/*' > shadowsocks_status
- name: Shadowsocks Cache
id: cache
uses: actions/cache@v2
with:
path: |
app/libs/shadowsocks-release.aar
- key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
+ key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
- name: Install Rust
if: steps.cache.outputs.cache-hit != 'true'
run: ./run init action shadowsocks
@@ -116,7 +116,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs shadowsocks
+ ./run lib shadowsocks
shadowsocksr:
name: Native Build (ShadowsocksR)
runs-on: ubuntu-latest
@@ -125,7 +125,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'shadowsocksr/*' > shadowsocksr_status
+ run: git submodule status 'library/shadowsocksr/*' > shadowsocksr_status
- name: ShadowsocksR Cache
id: cache
uses: actions/cache@v2
@@ -144,7 +144,7 @@ jobs:
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
- ./run libs shadowsocksr
+ ./run lib shadowsocksr
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -158,10 +158,10 @@ jobs:
uses: actions/checkout@v2
- name: Fetch Status
run: |
- git submodule status 'core/*' > core_status
- git submodule status 'shadowsocks/*' > shadowsocks_status
- git submodule status 'shadowsocksr/*' > shadowsocksr_status
- git submodule status v2ray > v2ray_status
+ git submodule status 'library/core/*' > core_status
+ git submodule status 'library/shadowsocks/*' > shadowsocks_status
+ git submodule status 'library/shadowsocksr/*' > shadowsocksr_status
+ git submodule status library/v2ray > v2ray_status
- name: Core Cache
uses: actions/cache@v2
with:
@@ -173,13 +173,13 @@ jobs:
with:
path: |
app/libs/libv2ray.aar
- key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }}
+ key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }}
- name: Shadowsocks Cache
uses: actions/cache@v2
with:
path: |
app/libs/shadowsocks-release.aar
- key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
+ key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
- name: ShadowsocksR Cache
uses: actions/cache@v2
with:
@@ -270,10 +270,10 @@ jobs:
uses: actions/checkout@v2
- name: Fetch Status
run: |
- git submodule status 'core/*' > core_status
- git submodule status 'shadowsocks/*' > shadowsocks_status
- git submodule status 'shadowsocksr/*' > shadowsocksr_status
- git submodule status v2ray > v2ray_status
+ git submodule status 'library/core/*' > core_status
+ git submodule status 'library/shadowsocks/*' > shadowsocks_status
+ git submodule status 'library/shadowsocksr/*' > shadowsocksr_status
+ git submodule status library/v2ray > v2ray_status
- name: Core Cache
uses: actions/cache@v2
with:
@@ -285,13 +285,13 @@ jobs:
with:
path: |
app/libs/libv2ray.aar
- key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }}
+ key: ${{ hashFiles('bin/lib/v2ray/*', 'v2ray_status') }}
- name: Shadowsocks Cache
uses: actions/cache@v2
with:
path: |
app/libs/shadowsocks-release.aar
- key: ${{ hashFiles('shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
+ key: ${{ hashFiles('library/shadowsocks/build.gradle.kts', 'shadowsocks_status') }}
- name: ShadowsocksR Cache
uses: actions/cache@v2
with:
diff --git a/.github/workflows/release_naive.yml b/.github/workflows/release_naive.yml
index 1e8d6289..9d45c10e 100644
--- a/.github/workflows/release_naive.yml
+++ b/.github/workflows/release_naive.yml
@@ -34,14 +34,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'naive-plugin/*' > naive_status
+ run: git submodule status 'plugin/naive/*' > naive_status
- name: Naive Cache
id: cache
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/${{ matrix.arch }}
- key: naive-${{ matrix.arch }}-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/${{ matrix.arch }}
+ key: naive-${{ matrix.arch }}-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Gradle cache
uses: actions/cache@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -54,7 +54,7 @@ jobs:
echo "sdk.dir=${ANDROID_HOME}" > local.properties
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
./run init action naive
- ./run libs naive ${{ matrix.arch }}
+ ./run plugin naive ${{ matrix.arch }}
naive:
needs: naive_libs
name: Gradle Build (NaïveProxy)
@@ -63,31 +63,31 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'naive-plugin/*' > naive_status
+ run: git submodule status 'plugin/naive/*' > naive_status
- name: Naive Cache (armeabi-v7a)
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/armeabi-v7a
- key: naive-armeabi-v7a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/armeabi-v7a
+ key: naive-armeabi-v7a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Naive Cache (arm64-v8a)
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/arm64-v8a
- key: naive-arm64-v8a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/arm64-v8a
+ key: naive-arm64-v8a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Naive Cache (x86)
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/x86
- key: naive-x86-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/x86
+ key: naive-x86-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Naive Cache (x86_64)
uses: actions/cache@v2
with:
path: |
- naive-plugin/src/main/jniLibs/x86_64
- key: naive-x86_64-${{ hashFiles('bin/libs/naive/*', 'naive_status') }}
+ plugin/naive/src/main/jniLibs/x86_64
+ key: naive-x86_64-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -99,7 +99,7 @@ jobs:
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew naive-plugin:assembleRelease
- APK=$(find naive-plugin/build/outputs/apk -name '*arm64-v8a*.apk')
+ APK=$(find plugin/naive/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
@@ -164,13 +164,13 @@ jobs:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Fetch Status
-# run: git submodule status 'xtls-plugin/*' > xtls_status
+# run: git submodule status 'plugin/xtls/*' > xtls_status
# - name: XTLS Cache
# uses: actions/cache@v2
# with:
# path: |
-# xtls-plugin/src/main/jniLibs
-# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+# plugin/xtls/src/main/jniLibs
+# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
# - name: Release Build
# run: |
# echo "sdk.dir=${ANDROID_HOME}" > local.properties
diff --git a/.github/workflows/release_pingtunnel.yml b/.github/workflows/release_pingtunnel.yml
index ffe36e5c..f880e3ad 100644
--- a/.github/workflows/release_pingtunnel.yml
+++ b/.github/workflows/release_pingtunnel.yml
@@ -31,14 +31,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'pt-plugin/*' > pt_status
+ run: git submodule status 'plugin/pingtunnel/*' > pt_status
- name: PingTunnel Cache
id: cache
uses: actions/cache@v2
with:
path: |
- pt-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }}
+ plugin/pingtunnel/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -46,7 +46,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs pingtunnel
+ run: ./run plugin pingtunnel
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -56,13 +56,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'pt-plugin/*' > pt_status
+ run: git submodule status 'plugin/pingtunnel/*' > pt_status
- name: PingTunnel Cache
uses: actions/cache@v2
with:
path: |
- pt-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/pingtunnel.sh', 'pt_status') }}
+ plugin/pingtunnel/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/pingtunnel.sh', 'pt_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -74,7 +74,7 @@ jobs:
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew pt-plugin:assembleRelease
- APK=$(find pt-plugin/build/outputs/apk -name '*arm64-v8a*.apk')
+ APK=$(find plugin/pingtunnel/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
@@ -139,13 +139,13 @@ jobs:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Fetch Status
-# run: git submodule status 'xtls-plugin/*' > xtls_status
+# run: git submodule status 'plugin/xtls/*' > xtls_status
# - name: XTLS Cache
# uses: actions/cache@v2
# with:
# path: |
-# xtls-plugin/src/main/jniLibs
-# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+# plugin/xtls/src/main/jniLibs
+# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
# - name: Release Build
# run: |
# echo "sdk.dir=${ANDROID_HOME}" > local.properties
diff --git a/.github/workflows/release_relaybaton.yml b/.github/workflows/release_relaybaton.yml
index c64e0707..add5ad92 100644
--- a/.github/workflows/release_relaybaton.yml
+++ b/.github/workflows/release_relaybaton.yml
@@ -31,14 +31,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'rb-plugin/*' > rb_status
+ run: git submodule status 'plugin/relaybaton/*' > rb_status
- name: RelayBaton Cache
id: cache
uses: actions/cache@v2
with:
path: |
- rb-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }}
+ plugin/relaybaton/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -46,7 +46,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs relaybaton
+ run: ./run plugin relaybaton
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -56,13 +56,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'rb-plugin/*' > rb_status
+ run: git submodule status 'plugin/relaybaton/*' > rb_status
- name: RelayBaton Cache
uses: actions/cache@v2
with:
path: |
- rb-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/relaybaton.sh', 'rb_status') }}
+ plugin/relaybaton/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/relaybaton.sh', 'rb_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -74,7 +74,7 @@ jobs:
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew rb-plugin:assembleRelease
- APK=$(find rb-plugin/build/outputs/apk -name '*arm64-v8a*.apk')
+ APK=$(find plugin/relaybaton/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
@@ -139,13 +139,13 @@ jobs:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Fetch Status
-# run: git submodule status 'xtls-plugin/*' > xtls_status
+# run: git submodule status 'plugin/xtls/*' > xtls_status
# - name: XTLS Cache
# uses: actions/cache@v2
# with:
# path: |
-# xtls-plugin/src/main/jniLibs
-# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+# plugin/xtls/src/main/jniLibs
+# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
# - name: Release Build
# run: |
# echo "sdk.dir=${ANDROID_HOME}" > local.properties
diff --git a/.github/workflows/release_trojan_go.yml b/.github/workflows/release_trojan_go.yml
index ce89c04e..36a6d26a 100644
--- a/.github/workflows/release_trojan_go.yml
+++ b/.github/workflows/release_trojan_go.yml
@@ -31,14 +31,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'trojan-go-plugin/*' > trojan_go_status
+ run: git submodule status 'plugin/trojan-go/*' > trojan_go_status
- name: Trojan-Go Cache
id: cache
uses: actions/cache@v2
with:
path: |
- trojan-go-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }}
+ plugin/trojan-go/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }}
- name: Install Golang
uses: actions/setup-go@v2
if: steps.cache.outputs.cache-hit != 'true'
@@ -46,7 +46,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs trojan_go
+ run: ./run plugin trojan_go
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -56,13 +56,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'trojan-go-plugin/*' > trojan_go_status
+ run: git submodule status 'plugin/trojan-go/*' > trojan_go_status
- name: Trojan-Go Cache
uses: actions/cache@v2
with:
path: |
- trojan-go-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/trojan_go.sh', 'trojan_go_status') }}
+ plugin/trojan-go/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/trojan_go.sh', 'trojan_go_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -74,7 +74,7 @@ jobs:
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew trojan-go-plugin:assembleRelease
- APK=$(find trojan-go-plugin/build/outputs/apk -name '*arm64-v8a*.apk')
+ APK=$(find plugin/trojan-go/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
@@ -139,13 +139,13 @@ jobs:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Fetch Status
-# run: git submodule status 'xtls-plugin/*' > xtls_status
+# run: git submodule status 'plugin/xtls/*' > xtls_status
# - name: XTLS Cache
# uses: actions/cache@v2
# with:
# path: |
-# xtls-plugin/src/main/jniLibs
-# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+# plugin/xtls/src/main/jniLibs
+# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
# - name: Release Build
# run: |
# echo "sdk.dir=${ANDROID_HOME}" > local.properties
diff --git a/.github/workflows/release_xtls.yml b/.github/workflows/release_xtls.yml
index 27c050c7..733c5b5c 100644
--- a/.github/workflows/release_xtls.yml
+++ b/.github/workflows/release_xtls.yml
@@ -31,14 +31,14 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'xtls-plugin/*' > xtls_status
+ run: git submodule status 'plugin/xtls/*' > xtls_status
- name: XTLS Cache
id: cache
uses: actions/cache@v2
with:
path: |
- xtls-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+ plugin/xtls/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -51,7 +51,7 @@ jobs:
go-version: 1.16
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
- run: ./run libs xtls
+ run: ./run plugin xtls
build:
name: Gradle Build
runs-on: ubuntu-latest
@@ -61,13 +61,13 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Fetch Status
- run: git submodule status 'xtls-plugin/*' > xtls_status
+ run: git submodule status 'plugin/xtls/*' > xtls_status
- name: XTLS Cache
uses: actions/cache@v2
with:
path: |
- xtls-plugin/src/main/jniLibs
- key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+ plugin/xtls/src/main/jniLibs
+ key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
- name: Gradle cache
uses: actions/cache@v2
with:
@@ -79,7 +79,7 @@ jobs:
echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew xtls-plugin:assembleRelease
- APK=$(find xtls-plugin/build/outputs/apk -name '*arm64-v8a*.apk')
+ APK=$(find plugin/xtls/build/outputs/apk -name '*arm64-v8a*.apk')
APK=$(dirname $APK)
echo "APK=$APK" >> $GITHUB_ENV
- uses: actions/upload-artifact@v2
@@ -144,13 +144,13 @@ jobs:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Fetch Status
-# run: git submodule status 'xtls-plugin/*' > xtls_status
+# run: git submodule status 'plugin/xtls/*' > xtls_status
# - name: XTLS Cache
# uses: actions/cache@v2
# with:
# path: |
-# xtls-plugin/src/main/jniLibs
-# key: ${{ hashFiles('bin/libs/xtls.sh', 'xtls_status') }}
+# plugin/xtls/src/main/jniLibs
+# key: ${{ hashFiles('bin/lib/xtls.sh', 'xtls_status') }}
# - name: Release Build
# run: |
# echo "sdk.dir=${ANDROID_HOME}" > local.properties
diff --git a/.gitmodules b/.gitmodules
index 1a67c257..ecf1283b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,48 +1,48 @@
-[submodule "core/src/main/jni/badvpn"]
- path = core/src/main/jni/badvpn
+[submodule "library/core/src/main/jni/badvpn"]
+ path = library/core/src/main/jni/badvpn
url = https://github.com/shadowsocks/badvpn
-[submodule "core/src/main/jni/libancillary"]
- path = core/src/main/jni/libancillary
+[submodule "library/core/src/main/jni/libancillary"]
+ path = library/core/src/main/jni/libancillary
url = https://github.com/shadowsocks/libancillary
-[submodule "v2ray"]
- path = v2ray
+[submodule "library/v2ray"]
+ path = library/v2ray
url = https://github.com/nekohasekai/AndroidLibV2rayLite
-[submodule "shadowsocks/src/main/rust/shadowsocks-rust"]
- path = shadowsocks/src/main/rust/shadowsocks-rust
+[submodule "library/shadowsocks/src/main/rust/shadowsocks-rust"]
+ path = library/shadowsocks/src/main/rust/shadowsocks-rust
url = https://github.com/shadowsocks/shadowsocks-rust.git
-[submodule "shadowsocksr/src/main/jni/shadowsocks-libev"]
- path = shadowsocksr/src/main/jni/shadowsocks-libev
+[submodule "library/shadowsocksr/src/main/jni/shadowsocks-libev"]
+ path = library/shadowsocksr/src/main/jni/shadowsocks-libev
url = https://github.com/shadowsocksRb/shadowsocksr-libev
-[submodule "shadowsocksr/src/main/jni/mbedtls"]
- path = shadowsocksr/src/main/jni/mbedtls
+[submodule "library/shadowsocksr/src/main/jni/mbedtls"]
+ path = library/shadowsocksr/src/main/jni/mbedtls
url = https://github.com/ARMmbed/mbedtls
-[submodule "shadowsocksr/src/main/jni/libancillary"]
- path = shadowsocksr/src/main/jni/libancillary
+[submodule "library/shadowsocksr/src/main/jni/libancillary"]
+ path = library/shadowsocksr/src/main/jni/libancillary
url = https://github.com/shadowsocks/libancillary
-[submodule "shadowsocksr/src/main/jni/pcre"]
- path = shadowsocksr/src/main/jni/pcre
+[submodule "library/shadowsocksr/src/main/jni/pcre"]
+ path = library/shadowsocksr/src/main/jni/pcre
url = https://android.googlesource.com/platform/external/pcre
-[submodule "shadowsocksr/src/main/jni/libsodium"]
- path = shadowsocksr/src/main/jni/libsodium
+[submodule "library/shadowsocksr/src/main/jni/libsodium"]
+ path = library/shadowsocksr/src/main/jni/libsodium
url = https://github.com/jedisct1/libsodium
-[submodule "shadowsocksr/src/main/jni/re2"]
- path = shadowsocksr/src/main/jni/re2
+[submodule "library/shadowsocksr/src/main/jni/re2"]
+ path = library/shadowsocksr/src/main/jni/re2
url = https://github.com/google/re2
-[submodule "xtls-plugin/src/main/go/Xray-core"]
- path = xtls-plugin/src/main/go/Xray-core
+[submodule "plugin/xtls/src/main/go/Xray-core"]
+ path = plugin/xtls/src/main/go/Xray-core
url = https://github.com/XTLS/Xray-core
-[submodule "trojan-go-plugin/src/main/go/trojan-go"]
- path = trojan-go-plugin/src/main/go/trojan-go
+[submodule "plugin/trojan-go/src/main/go/trojan-go"]
+ path = plugin/trojan-go/src/main/go/trojan-go
url = https://github.com/p4gefau1t/trojan-go
[submodule "core/src/main/jni/proxychains-ng"]
- path = core/src/main/jni/proxychains
+ path = library/core/src/main/jni/proxychains
url = https://github.com/SagerNet/proxychains-ng
-[submodule "naive-plugin/src/main/jni/naiveproxy"]
- path = naive-plugin/src/main/jni/naiveproxy
+[submodule "plugin/naive/src/main/jni/naiveproxy"]
+ path = plugin/naive/src/main/jni/naiveproxy
url = https://github.com/klzgrad/naiveproxy
-[submodule "pt-plugin/src/main/go/pingtunnel"]
- path = pt-plugin/src/main/go/pingtunnel
+[submodule "plugin/pingtunnel/src/main/go/pingtunnel"]
+ path = plugin/pingtunnel/src/main/go/pingtunnel
url = https://github.com/esrrhs/pingtunnel
-[submodule "rb-plugin/src/main/go/relaybaton"]
- path = rb-plugin/src/main/go/relaybaton
+[submodule "plugin/relaybaton/src/main/go/relaybaton"]
+ path = plugin/relaybaton/src/main/go/relaybaton
url = https://github.com/iyouport-org/relaybaton
diff --git a/.idea/dictionaries/sekai.xml b/.idea/dictionaries/sekai.xml
index 0e7c2a37..5c6f6030 100644
--- a/.idea/dictionaries/sekai.xml
+++ b/.idea/dictionaries/sekai.xml
@@ -8,6 +8,7 @@
dokodemo
downlink
fakedns
+ fdroid
geoip
geosite
grpc
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 52397a8b..a33621db 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,7 +4,7 @@
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6199cc2a..f2080265 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 797acea5..00000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 5a809a3b..e5d6f123 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,21 +2,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index b75f1323..00000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,230 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-kapt"
- id "kotlin-parcelize"
- id "com.mikepenz.aboutlibraries.plugin"
-}
-
-def metadata = new Properties()
-metadata.load(project.rootProject.file("sager.properties").newDataInputStream())
-
-def verCode = metadata.getProperty("VERSION_CODE").toInteger()
-def verName = metadata.getProperty("VERSION_NAME")
-def packageName = metadata.getProperty("PACKAGE_NAME")
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-def serviceAccountCredentialsFile = rootProject.file("service_account_credentials.json")
-def beta = verName.contains("beta")
-if (serviceAccountCredentialsFile.isFile()) {
- setupPlay(beta)
- play.serviceAccountCredentials = serviceAccountCredentialsFile
-} else if (System.getenv().containsKey("ANDROID_PUBLISHER_CREDENTIALS")) {
- setupPlay(beta)
-}
-
-void setupPlay(boolean beta) {
- apply plugin: "com.github.triplet.play"
- play {
- track = "beta"
- // track = beta ? "beta" : "production"
- defaultToAppBundles = true
- }
-}
-
-configurations {
- compile.exclude module: "support-v4"
-}
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId packageName
- minSdkVersion 21
- targetSdkVersion 30
- versionCode verCode
- versionName verName
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
- javaCompileOptions {
- annotationProcessorOptions {
- arguments += [
- "room.schemaLocation" : "$projectDir/schemas".toString(),
- "room.incremental" : "true",
- "room.expandProjection": "true"]
- }
- }
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- debug {
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- flavorDimensions "version"
-
- productFlavors {
- expert {
- // applicationIdSuffix ".expert"
- }
- oss {
- }
- play {
- versionCode verCode - 1
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- lintOptions {
- disable "MissingTranslation"
- disable "ExtraTranslation"
- disable "BlockedPrivateApi"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
-
- jniLibs {
- useLegacyPackaging true
- }
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- bundle {
- language {
- enableSplit = false
- }
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("app", "SN-" + variant.versionName)
- .replace("-release", "")
- .replace("-oss", "")
- }
- }
-
-}
-
-dependencies {
-
- implementation fileTree(dir: "libs")
- implementation project(":plugin")
-
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
- implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0"
- implementation "androidx.activity:activity-ktx:1.2.3"
- implementation "androidx.fragment:fragment-ktx:1.3.3"
- implementation "androidx.browser:browser:1.3.0"
-
- implementation "androidx.constraintlayout:constraintlayout:2.0.4"
- implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
- implementation "androidx.navigation:navigation-ui-ktx:2.3.5"
- implementation "androidx.preference:preference-ktx:1.1.1"
- implementation "androidx.appcompat:appcompat:1.2.0"
- implementation project(":preferencex")
- implementation project(":preferencex-simplemenu")
- implementation project(":preferencex-colorpicker")
-
- implementation "com.google.android.material:material:1.3.0"
- implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.2"
- implementation "cn.hutool:hutool-core:5.6.5"
- implementation "cn.hutool:hutool-json:5.6.5"
- implementation "cn.hutool:hutool-crypto:5.6.5"
- implementation "com.google.code.gson:gson:2.8.6"
- implementation "com.google.zxing:core:3.4.1"
- implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.2"
- implementation "org.yaml:snakeyaml:1.28"
- implementation "com.github.daniel-stoneuk:material-about-library:3.2.0-rc01"
- implementation "com.mikepenz:aboutlibraries:8.8.6"
-
- implementation("com.simplecityapps:recyclerview-fastscroll:2.0.1") {
- exclude group: "androidx.recyclerview"
- exclude group: "androidx.appcompat"
- }
- implementation("org.smali:dexlib2:2.5.2") {
- exclude group: "com.google.guava", module: "guava"
- }
- implementation "com.google.guava:guava:30.1.1-android"
- implementation "com.journeyapps:zxing-android-embedded:4.2.0"
-
- implementation "androidx.room:room-runtime:2.3.0"
- kapt "androidx.room:room-compiler:2.3.0"
- implementation "androidx.room:room-ktx:2.3.0"
-
- implementation "com.github.MatrixDev.Roomigrant:RoomigrantLib:0.3.4"
- kapt "com.github.MatrixDev.Roomigrant:RoomigrantCompiler:0.3.4"
-
- implementation "com.esotericsoftware:kryo:5.1.1"
-
- testImplementation "junit:junit:4.13.2"
- testImplementation "androidx.room:room-testing:2.3.0"
- androidTestImplementation "androidx.test.ext:junit:1.1.2"
- androidTestImplementation "androidx.test.espresso:espresso-core:3.3.0"
-
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-
-}
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 00000000..73e1765a
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,73 @@
+plugins {
+ id("com.android.application")
+ id("kotlin-android")
+ id("kotlin-kapt")
+ id("kotlin-parcelize")
+ id("com.mikepenz.aboutlibraries.plugin")
+}
+
+setupApp()
+
+android {
+ compileOptions {
+ isCoreLibraryDesugaringEnabled = true
+ }
+ kapt.arguments {
+ arg("room.incremental", true)
+ arg("room.schemaLocation", "$projectDir/schemas")
+ }
+}
+
+dependencies {
+
+ implementation(fileTree("libs"))
+ implementation(project(":plugin:api"))
+
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0")
+ api("androidx.core:core-ktx:1.5.0")
+ implementation("androidx.activity:activity-ktx:1.2.3")
+ implementation("androidx.fragment:fragment-ktx:1.3.4")
+ implementation("androidx.browser:browser:1.3.0")
+
+ implementation("androidx.constraintlayout:constraintlayout:2.0.4")
+ implementation("androidx.navigation:navigation-fragment-ktx:2.3.5")
+ implementation("androidx.navigation:navigation-ui-ktx:2.3.5")
+ implementation("androidx.preference:preference-ktx:1.1.1")
+ implementation("androidx.appcompat:appcompat:1.3.0")
+
+ implementation(project(":external:preferencex"))
+ implementation(project(":external:preferencex-simplemenu"))
+ implementation(project(":external:preferencex-colorpicker"))
+
+ implementation("com.google.android.material:material:1.3.0")
+ implementation("com.squareup.okhttp3:okhttp:5.0.0-alpha.2")
+ implementation("cn.hutool:hutool-core:5.6.5")
+ implementation("cn.hutool:hutool-json:5.6.5")
+ implementation("cn.hutool:hutool-crypto:5.6.5")
+ implementation("com.google.code.gson:gson:2.8.6")
+ implementation("com.google.zxing:core:3.4.1")
+ implementation("com.squareup.okhttp3:okhttp:5.0.0-alpha.2")
+ implementation("org.yaml:snakeyaml:1.28")
+ implementation("com.github.daniel-stoneuk:material-about-library:3.2.0-rc01")
+ implementation("com.mikepenz:aboutlibraries:8.8.6")
+
+ implementation("com.simplecityapps:recyclerview-fastscroll:2.0.1") {
+ exclude(group = "androidx.recyclerview")
+ exclude(group = "androidx.appcompat")
+ }
+ implementation("org.smali:dexlib2:2.5.2") {
+ exclude(group = "com.google.guava", module = "guava")
+ }
+ implementation("com.google.guava:guava:30.1.1-android")
+ implementation("com.journeyapps:zxing-android-embedded:4.2.0")
+
+ implementation("androidx.room:room-runtime:2.3.0")
+ kapt("androidx.room:room-compiler:2.3.0")
+ implementation("androidx.room:room-ktx:2.3.0")
+
+ implementation("com.github.MatrixDev.Roomigrant:RoomigrantLib:0.3.4")
+ kapt("com.github.MatrixDev.Roomigrant:RoomigrantCompiler:0.3.4")
+
+ implementation("com.esotericsoftware:kryo:5.1.1")
+ coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
+}
\ No newline at end of file
diff --git a/bin/init/action/shadowsocks.sh b/bin/init/action/shadowsocks.sh
index afc3b10c..50576f7b 100755
--- a/bin/init/action/shadowsocks.sh
+++ b/bin/init/action/shadowsocks.sh
@@ -3,6 +3,6 @@
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
echo "source \$HOME/.cargo/env" >>$HOME/.bashrc && source $HOME/.cargo/env
-git submodule update --init shadowsocks/src/main/rust/shadowsocks-rust
-cd shadowsocks/src/main/rust/shadowsocks-rust
+git submodule update --init library/shadowsocks/src/main/rust/shadowsocks-rust
+cd library/shadowsocks/src/main/rust/shadowsocks-rust
rustup target install armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
diff --git a/bin/lib/core.sh b/bin/lib/core.sh
new file mode 100755
index 00000000..17afa900
--- /dev/null
+++ b/bin/lib/core.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+source "bin/init/env.sh"
+
+git submodule update --init library/core/src/main/jni/*
+rm -rf library/core/build/outputs/aar
+./gradlew :library:core:assembleRelease || exit 1
+mkdir -p app/libs
+cp library/core/build/outputs/aar/* app/libs
diff --git a/bin/lib/shadowsocks.sh b/bin/lib/shadowsocks.sh
new file mode 100755
index 00000000..ad31d6d1
--- /dev/null
+++ b/bin/lib/shadowsocks.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+source "bin/init/env.sh"
+
+git submodule update --init library/shadowsocks/src/main/rust/shadowsocks-rust
+rm -rf library/shadowsocks/build/outputs/aar
+./gradlew :library:shadowsocks:assembleRelease || exit 1
+mkdir -p app/libs
+cp library/shadowsocks/build/outputs/aar/* app/libs
diff --git a/bin/lib/shadowsocksr.sh b/bin/lib/shadowsocksr.sh
new file mode 100755
index 00000000..7eb8ec63
--- /dev/null
+++ b/bin/lib/shadowsocksr.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+source "bin/init/env.sh"
+
+git submodule update --init library/shadowsocksr/src/main/jni/*
+rm -rf library/shadowsocksr/build/outputs/aar
+./gradlew :library:shadowsocksr:assembleRelease || exit 1
+mkdir -p app/libs
+cp library/shadowsocksr/build/outputs/aar/* app/libs
diff --git a/bin/lib/v2ray.sh b/bin/lib/v2ray.sh
new file mode 100755
index 00000000..8fb5b9ad
--- /dev/null
+++ b/bin/lib/v2ray.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+bin/lib/v2ray/init.sh
+bin/lib/v2ray/build.sh
\ No newline at end of file
diff --git a/bin/libs/v2ray/build.sh b/bin/lib/v2ray/build.sh
similarity index 91%
rename from bin/libs/v2ray/build.sh
rename to bin/lib/v2ray/build.sh
index 04ece401..95bbac14 100755
--- a/bin/libs/v2ray/build.sh
+++ b/bin/lib/v2ray/build.sh
@@ -3,7 +3,7 @@
source "bin/init/env.sh"
export GO386=softfloat
-cd "$PROJECT/v2ray"
+cd library/v2ray
gomobile init
gomobile bind -v -ldflags='-s -w' . || exit 1
diff --git a/bin/libs/v2ray/init.sh b/bin/lib/v2ray/init.sh
similarity index 65%
rename from bin/libs/v2ray/init.sh
rename to bin/lib/v2ray/init.sh
index e39f0a55..cee2adc8 100755
--- a/bin/libs/v2ray/init.sh
+++ b/bin/lib/v2ray/init.sh
@@ -4,8 +4,7 @@ source "bin/init/env.sh"
export PATH="$PATH:$(go env GOPATH)/bin"
-cd $PROJECT
-[ -f v2ray/go.mod ] || git submodule update --init v2ray || exit 1
-cd v2ray
+[ -f library/v2ray/go.mod ] || git submodule update --init library/v2ray || exit 1
+cd library/v2ray
git reset --hard && git clean -fdx
go mod download -x && go get -v golang.org/x/mobile/cmd/... || exit 1
diff --git a/bin/libs/core.sh b/bin/libs/core.sh
deleted file mode 100755
index 722a7c48..00000000
--- a/bin/libs/core.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-source "bin/init/env.sh"
-
-git submodule update --init core/src/main/jni/*
-rm -rf core/build/outputs/aar
-./gradlew core:assembleRelease || exit 1
-mkdir -p app/libs
-cp core/build/outputs/aar/* app/libs
diff --git a/bin/libs/shadowsocks.sh b/bin/libs/shadowsocks.sh
deleted file mode 100755
index d0647724..00000000
--- a/bin/libs/shadowsocks.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-source "bin/init/env.sh"
-
-git submodule update --init shadowsocks/src/main/rust/shadowsocks-rust
-rm -rf shadowsocks/build/outputs/aar
-./gradlew shadowsocks:assembleRelease || exit 1
-mkdir -p app/libs
-cp shadowsocks/build/outputs/aar/* app/libs
diff --git a/bin/libs/shadowsocksr.sh b/bin/libs/shadowsocksr.sh
deleted file mode 100755
index 411d5d37..00000000
--- a/bin/libs/shadowsocksr.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-source "bin/init/env.sh"
-
-git submodule update --init shadowsocksr/src/main/jni/*
-rm -rf shadowsocksr/build/outputs/aar
-./gradlew shadowsocksr:assembleRelease || exit 1
-mkdir -p app/libs
-cp shadowsocksr/build/outputs/aar/* app/libs
diff --git a/bin/libs/trojan_go.sh b/bin/libs/trojan_go.sh
deleted file mode 100755
index b6634469..00000000
--- a/bin/libs/trojan_go.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-
-source "bin/init/env.sh"
-
-export CGO_ENABLED=1
-export GOOS=android
-
-OUTPUT="trojan-go"
-LIB_OUTPUT="lib$OUTPUT.so"
-AAR_OUTPUT="$OUTPUT.aar"
-ROOT="$PROJECT/trojan-go-plugin/src/main/jniLibs"
-
-git submodule update --init 'trojan-go-plugin/*'
-cd $PROJECT/trojan-go-plugin/src/main/go/trojan-go
-
-DIR="$ROOT/armeabi-v7a"
-mkdir -p $DIR
-env CC=$ANDROID_ARM_CC GOARCH=arm GOARM=7 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
-$ANDROID_ARM_STRIP $DIR/$LIB_OUTPUT
-
-DIR="$ROOT/arm64-v8a"
-mkdir -p $DIR
-env CC=$ANDROID_ARM64_CC GOARCH=arm64 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
-$ANDROID_ARM64_STRIP $DIR/$LIB_OUTPUT
-
-DIR="$ROOT/x86"
-mkdir -p $DIR
-env CC=$ANDROID_X86_CC GOARCH=386 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
-$ANDROID_X86_STRIP $DIR/$LIB_OUTPUT
-
-DIR="$ROOT/x86_64"
-mkdir -p $DIR
-env CC=$ANDROID_X86_64_CC GOARCH=amd64 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
-$ANDROID_X86_64_STRIP $DIR/$LIB_OUTPUT
diff --git a/bin/libs/v2ray.sh b/bin/libs/v2ray.sh
deleted file mode 100755
index 36b80da5..00000000
--- a/bin/libs/v2ray.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-bin/libs/v2ray/init.sh
-bin/libs/v2ray/build.sh
\ No newline at end of file
diff --git a/bin/libs/naive.sh b/bin/plugin/naive.sh
similarity index 87%
rename from bin/libs/naive.sh
rename to bin/plugin/naive.sh
index e72b8c14..f68281ac 100755
--- a/bin/libs/naive.sh
+++ b/bin/plugin/naive.sh
@@ -2,12 +2,15 @@
source "bin/init/env.sh"
-ROOT="$PROJECT/naive-plugin/src/main/jniLibs"
+CURR="plugin/naive"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
OUTPUT="naive"
LIB_OUTPUT="lib$OUTPUT.so"
-git submodule update --init --recursive 'naive-plugin/*'
-cd naive-plugin/src/main/jni/naiveproxy/src
+git submodule update --init --recursive "$CURR/*"
+cd $CURR_PATH/src/main/jni/naiveproxy/src
[ -f $NDK/BUILD.gn ] || cp ../../BUILD.gn $NDK
diff --git a/bin/libs/naive/arm64-v8a.sh b/bin/plugin/naive/arm64-v8a.sh
similarity index 85%
rename from bin/libs/naive/arm64-v8a.sh
rename to bin/plugin/naive/arm64-v8a.sh
index 5f06a7db..0872fd5e 100755
--- a/bin/libs/naive/arm64-v8a.sh
+++ b/bin/plugin/naive/arm64-v8a.sh
@@ -1,7 +1,7 @@
#!/bin/bash
source "bin/init/env.sh"
-source "bin/libs/naive/build.sh"
+source "bin/plugin/naive/build.sh"
export EXTRA_FLAGS='target_os="android" target_cpu="arm64"'
./get-clang.sh
diff --git a/bin/libs/naive/armeabi-v7a.sh b/bin/plugin/naive/armeabi-v7a.sh
similarity index 85%
rename from bin/libs/naive/armeabi-v7a.sh
rename to bin/plugin/naive/armeabi-v7a.sh
index f14375f9..d2a0f5da 100755
--- a/bin/libs/naive/armeabi-v7a.sh
+++ b/bin/plugin/naive/armeabi-v7a.sh
@@ -1,7 +1,7 @@
#!/bin/bash
source "bin/init/env.sh"
-source "bin/libs/naive/build.sh"
+source "bin/plugin/naive/build.sh"
export EXTRA_FLAGS='target_os="android" target_cpu="arm"'
./get-clang.sh
diff --git a/bin/libs/naive/build.sh b/bin/plugin/naive/build.sh
similarity index 56%
rename from bin/libs/naive/build.sh
rename to bin/plugin/naive/build.sh
index 56731fc6..52d2a577 100644
--- a/bin/libs/naive/build.sh
+++ b/bin/plugin/naive/build.sh
@@ -2,12 +2,15 @@
source "bin/init/env.sh"
-ROOT="$PROJECT/naive-plugin/src/main/jniLibs"
+CURR="plugin/naive"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
OUTPUT="naive"
LIB_OUTPUT="lib$OUTPUT.so"
-git submodule update --init --recursive 'naive-plugin/*'
-cd naive-plugin/src/main/jni/naiveproxy/src
+git submodule update --init --recursive "$CURR/*"
+cd $CURR_PATH/src/main/jni/naiveproxy/src
rm third_party/android_ndk
ln -s $NDK third_party/android_ndk
diff --git a/bin/libs/naive/x86.sh b/bin/plugin/naive/x86.sh
similarity index 85%
rename from bin/libs/naive/x86.sh
rename to bin/plugin/naive/x86.sh
index 3976f3d1..6ecfe213 100755
--- a/bin/libs/naive/x86.sh
+++ b/bin/plugin/naive/x86.sh
@@ -1,7 +1,7 @@
#!/bin/bash
source "bin/init/env.sh"
-source "bin/libs/naive/build.sh"
+source "bin/plugin/naive/build.sh"
export EXTRA_FLAGS='target_os="android" target_cpu="x86"'
./get-clang.sh
diff --git a/bin/libs/naive/x86_64.sh b/bin/plugin/naive/x86_64.sh
similarity index 85%
rename from bin/libs/naive/x86_64.sh
rename to bin/plugin/naive/x86_64.sh
index 71a3f404..b21fe337 100755
--- a/bin/libs/naive/x86_64.sh
+++ b/bin/plugin/naive/x86_64.sh
@@ -1,7 +1,7 @@
#!/bin/bash
source "bin/init/env.sh"
-source "bin/libs/naive/build.sh"
+source "bin/plugin/naive/build.sh"
export EXTRA_FLAGS='target_os="android" target_cpu="x64"'
./get-clang.sh
diff --git a/bin/libs/pingtunnel.sh b/bin/plugin/pingtunnel.sh
similarity index 84%
rename from bin/libs/pingtunnel.sh
rename to bin/plugin/pingtunnel.sh
index 31ce0c6c..495e6431 100755
--- a/bin/libs/pingtunnel.sh
+++ b/bin/plugin/pingtunnel.sh
@@ -6,12 +6,15 @@ export GO111MODULE=off
export CGO_ENABLED=1
export GOOS=android
-ROOT="$PROJECT/pt-plugin/src/main/jniLibs"
+CURR="plugin/pingtunnel"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
OUTPUT="ptexec"
LIB_OUTPUT="lib$OUTPUT.so"
-git submodule update --init --recursive 'pt-plugin/*'
-cd pt-plugin/src/main/go/pingtunnel
+git submodule update --init "$CURR/*"
+cd $CURR_PATH/src/main/go/pingtunnel
go get -v -t
DIR="$ROOT/armeabi-v7a"
diff --git a/bin/libs/relaybaton.sh b/bin/plugin/relaybaton.sh
similarity index 88%
rename from bin/libs/relaybaton.sh
rename to bin/plugin/relaybaton.sh
index 847d7a1b..d54d35f3 100755
--- a/bin/libs/relaybaton.sh
+++ b/bin/plugin/relaybaton.sh
@@ -2,13 +2,15 @@
source "bin/init/env.sh"
+CURR="plugin/relaybaton"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
OUTPUT="relaybaton"
LIB_OUTPUT="lib$OUTPUT.so"
-AAR_OUTPUT="$OUTPUT.aar"
-ROOT="$PROJECT/rb-plugin/src/main/jniLibs"
-git submodule update --init 'rb-plugin/*'
-cd $PROJECT/rb-plugin/src/main/go/relaybaton
+git submodule update --init "$CURR/*"
+cd $CURR_PATH/src/main/go/relaybaton
export GO111MOD=on
export CGO_ENABLED=1
diff --git a/bin/plugin/trojan_go.sh b/bin/plugin/trojan_go.sh
new file mode 100755
index 00000000..78be168b
--- /dev/null
+++ b/bin/plugin/trojan_go.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/env bash
+
+#
+#
+# Copyright (C) 2021 by nekohasekai
+# Copyright (C) 2021 by Max Lv
+# Copyright (C) 2021 by Mygod Studio
+#
+# 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 .
+#
+#
+
+source "bin/init/env.sh"
+
+export CGO_ENABLED=1
+export GOOS=android
+
+CURR="plugin/trojan-go"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
+OUTPUT="trojan-go"
+LIB_OUTPUT="lib$OUTPUT.so"
+
+git submodule update --init "$CURR/*"
+cd $CURR_PATH/src/main/go/trojan-go
+
+DIR="$ROOT/armeabi-v7a"
+mkdir -p $DIR
+env CC=$ANDROID_ARM_CC GOARCH=arm GOARM=7 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
+$ANDROID_ARM_STRIP $DIR/$LIB_OUTPUT
+
+DIR="$ROOT/arm64-v8a"
+mkdir -p $DIR
+env CC=$ANDROID_ARM64_CC GOARCH=arm64 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
+$ANDROID_ARM64_STRIP $DIR/$LIB_OUTPUT
+
+DIR="$ROOT/x86"
+mkdir -p $DIR
+env CC=$ANDROID_X86_CC GOARCH=386 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
+$ANDROID_X86_STRIP $DIR/$LIB_OUTPUT
+
+DIR="$ROOT/x86_64"
+mkdir -p $DIR
+env CC=$ANDROID_X86_64_CC GOARCH=amd64 go build -x -o $DIR/$LIB_OUTPUT -tags "client" -trimpath -ldflags="-s -w -buildid="
+$ANDROID_X86_64_STRIP $DIR/$LIB_OUTPUT
diff --git a/bin/libs/xtls.sh b/bin/plugin/xtls.sh
similarity index 84%
rename from bin/libs/xtls.sh
rename to bin/plugin/xtls.sh
index 5f895a2b..8ebabc31 100755
--- a/bin/libs/xtls.sh
+++ b/bin/plugin/xtls.sh
@@ -5,13 +5,15 @@ source "bin/init/env.sh"
export CGO_ENABLED=1
export GOOS=android
+CURR="plugin/xtls"
+CURR_PATH="$PROJECT/$CURR"
+
+ROOT="$CURR_PATH/src/main/jniLibs"
OUTPUT="xrayexec"
LIB_OUTPUT="lib$OUTPUT.so"
-AAR_OUTPUT="$OUTPUT.aar"
-ROOT="$PROJECT/xtls-plugin/src/main/jniLibs"
-git submodule update --init 'xtls-plugin/*'
-cd $PROJECT/xtls-plugin/src/main/go/Xray-core
+git submodule update --init "$CURR/*"
+cd $CURR_PATH/src/main/go/Xray-core
DIR="$ROOT/armeabi-v7a"
mkdir -p $DIR
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 20a0a246..00000000
--- a/build.gradle
+++ /dev/null
@@ -1,37 +0,0 @@
-buildscript {
- ext {
- kotlin_version = "1.5.0"
- }
- repositories {
- mavenCentral()
- google()
- maven { url "https://plugins.gradle.org/m2/" }
- }
- dependencies {
- classpath "com.android.tools.build:gradle:4.2.1"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath "org.mozilla.rust-android-gradle:plugin:0.8.6"
- //noinspection GradleDependency
- classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:8.8.4"
- //noinspection GradleDependency
- classpath "com.github.triplet.gradle:play-publisher:3.4.0-agp4.2"
- classpath "com.github.ben-manes:gradle-versions-plugin:0.38.0"
-
- }
-}
-
-plugins {
- id "com.github.ben-manes.versions" version "0.28.0"
-}
-
-allprojects {
- repositories {
- mavenCentral()
- google()
- maven { url 'https://jitpack.io' }
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 00000000..bd3a9a91
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,42 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+plugins {
+ id("com.github.ben-manes.versions") version "0.38.0"
+}
+
+buildscript {
+ apply(from = "repositories.gradle.kts")
+
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+
+ dependencies {
+ val androidPluginVersion = rootProject.extra["androidPluginVersion"].toString()
+ val kotlinVersion = rootProject.extra["kotlinVersion"].toString()
+ val playPublisherVersion = rootProject.extra["playPublisherVersion"].toString()
+
+ classpath("com.android.tools.build:gradle:$androidPluginVersion")
+ classpath(kotlin("gradle-plugin", kotlinVersion))
+ classpath("org.mozilla.rust-android-gradle:plugin:0.8.6")
+ classpath("com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:8.8.4")
+ classpath("com.github.triplet.gradle:play-publisher:$playPublisherVersion")
+ }
+}
+
+allprojects {
+ apply(from = "${rootProject.projectDir}/repositories.gradle.kts")
+}
+
+tasks.register("clean") {
+ delete(rootProject.buildDir)
+}
+
+// skip uploading the mapping to Crashlytics
+subprojects {
+ tasks.whenTaskAdded {
+ if (name.contains("uploadCrashlyticsMappingFile")) enabled = false
+ }
+}
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 00000000..1ebd29d3
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,16 @@
+plugins {
+ `kotlin-dsl`
+}
+
+apply(from = "../repositories.gradle.kts")
+
+dependencies {
+ val androidPluginVersion = rootProject.extra["androidPluginVersion"].toString()
+ val kotlinVersion = rootProject.extra["kotlinVersion"].toString()
+ val playPublisherVersion = rootProject.extra["playPublisherVersion"].toString()
+ implementation("com.android.tools.build:gradle:$androidPluginVersion")
+ implementation("com.android.tools.build:gradle-api:$androidPluginVersion")
+ implementation(kotlin("gradle-plugin", kotlinVersion))
+ implementation(kotlin("stdlib"))
+ implementation("com.github.triplet.gradle:play-publisher:$playPublisherVersion")
+}
diff --git a/buildSrc/src/main/kotlin/Helpers.kt b/buildSrc/src/main/kotlin/Helpers.kt
new file mode 100644
index 00000000..d679a487
--- /dev/null
+++ b/buildSrc/src/main/kotlin/Helpers.kt
@@ -0,0 +1,346 @@
+import com.android.build.gradle.AbstractAppExtension
+import com.android.build.gradle.BaseExtension
+import com.android.build.gradle.internal.api.BaseVariantOutputImpl
+import com.github.triplet.gradle.play.PlayPublisherExtension
+import org.apache.commons.codec.binary.Base64InputStream
+import org.apache.tools.ant.filters.StringInputStream
+import org.gradle.api.JavaVersion
+import org.gradle.api.Project
+import org.gradle.api.plugins.ExtensionAware
+import org.gradle.kotlin.dsl.apply
+import org.gradle.kotlin.dsl.dependencies
+import org.gradle.kotlin.dsl.getByName
+import org.gradle.kotlin.dsl.kotlin
+import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
+import java.util.*
+
+private val Project.android get() = extensions.getByName("android")
+
+private val javaVersion = JavaVersion.VERSION_1_8
+private lateinit var metadata: Properties
+private lateinit var localProperties: Properties
+
+fun Project.requireMetadata(): Properties {
+ if (!::metadata.isInitialized) {
+ metadata = Properties().apply {
+ load(rootProject.file("sager.properties").inputStream())
+ }
+ }
+ return metadata
+}
+
+fun Project.requireLocalProperties(): Properties {
+ if (!::localProperties.isInitialized) {
+ localProperties = Properties()
+
+ val base64 = System.getenv("LOCAL_PROPERTIES")
+ if (!base64.isNullOrBlank()) {
+ localProperties.load(Base64InputStream(StringInputStream(base64)))
+ } else if (project.rootProject.file("local.properties").exists()) {
+ localProperties.load(rootProject.file("local.properties").inputStream())
+ }
+ }
+ return localProperties
+}
+
+fun Project.setupCommon() {
+ android.apply {
+ buildToolsVersion("30.0.3")
+ compileSdkVersion(30)
+ defaultConfig {
+ minSdkVersion(21)
+ targetSdkVersion(30)
+ }
+ buildTypes {
+ getByName("release") {
+ isMinifyEnabled = true
+ }
+ }
+ compileOptions {
+ sourceCompatibility = javaVersion
+ targetCompatibility = javaVersion
+ }
+ lintOptions {
+ disable("MissingTranslation")
+ disable("ExtraTranslation")
+ disable("BlockedPrivateApi")
+ }
+ packagingOptions {
+ exclude("**/*.kotlin_*")
+ exclude("/META-INF/*.version")
+ exclude("/META-INF/native-image/**")
+ exclude("/META-INF/INDEX.LIST")
+ exclude("DebugProbesKt.bin")
+ }
+ packagingOptions {
+ jniLibs.useLegacyPackaging = true
+ }
+ (this as? AbstractAppExtension)?.apply {
+ buildTypes {
+ getByName("release") {
+ isShrinkResources = true
+ }
+ }
+ applicationVariants.forEach { variant ->
+ variant.outputs.forEach {
+ it as BaseVariantOutputImpl
+ it.outputFileName = it.outputFileName
+ .replace("app", "${project.name}-" + variant.versionName)
+ .replace("-release", "")
+ .replace("-oss", "")
+ }
+ }
+ }
+ }
+}
+
+fun Project.setupKotlinCommon() {
+ setupCommon()
+ (android as ExtensionAware).extensions.getByName("kotlinOptions").apply {
+ jvmTarget = javaVersion.toString()
+ }
+ dependencies.apply {
+ add("implementation", kotlin("stdlib-jdk8"))
+ }
+}
+
+fun Project.setupNdk() {
+ android.ndkVersion = "21.4.7075529"
+}
+
+fun Project.setupNdkLibrary() {
+ setupCommon()
+ setupNdk()
+ android.apply {
+ defaultConfig {
+ externalNativeBuild.ndkBuild {
+ abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
+ arguments("-j${Runtime.getRuntime().availableProcessors()}")
+ }
+ }
+
+ externalNativeBuild.ndkBuild.path("src/main/jni/Android.mk")
+ }
+}
+
+fun Project.setupPlay(): PlayPublisherExtension {
+ apply(plugin = "com.github.triplet.play")
+ return (extensions.getByName("play") as PlayPublisherExtension).apply {
+ track.set("beta")
+ defaultToAppBundles.set(true)
+ }
+}
+
+fun Project.setupAppCommon() {
+ setupKotlinCommon()
+
+ val lp = requireLocalProperties()
+ val keystorePwd = lp.getProperty("KEYSTORE_PASS") ?: System.getenv("KEYSTORE_PASS")
+ val alias = lp.getProperty("ALIAS_NAME") ?: System.getenv("ALIAS_NAME")
+ val pwd = lp.getProperty("ALIAS_PASS") ?: System.getenv("ALIAS_PASS")
+
+ val serviceAccountCredentialsFile = rootProject.file("service_account_credentials.json")
+ if (serviceAccountCredentialsFile.isFile) {
+ setupPlay().serviceAccountCredentials.set(serviceAccountCredentialsFile)
+ } else if (System.getenv().containsKey("ANDROID_PUBLISHER_CREDENTIALS")) {
+ setupPlay()
+ }
+
+ android.apply {
+ if (keystorePwd != null) {
+ signingConfigs {
+ create("release") {
+ storeFile(rootProject.file("release.keystore"))
+ storePassword(keystorePwd)
+ keyAlias(alias)
+ keyPassword(pwd)
+ }
+ }
+ }
+ buildTypes {
+ getByName("release").signingConfig = if (keystorePwd != null) {
+ signingConfigs.getByName("release")
+ } else {
+ signingConfigs.getByName("debug")
+ }
+ }
+
+ }
+}
+
+fun Project.setupPlugin(project: String) {
+ val propPrefix = project.toUpperCase(Locale.ROOT)
+ val verName = requireMetadata().getProperty("${propPrefix}_VERSION_NAME")
+ val verCode = requireMetadata().getProperty("${propPrefix}_VERSION").toInt() * 5
+ android.defaultConfig {
+ applicationId = "io.nekohasekai.sagernet.plugin.${project.toLowerCase(Locale.ROOT)}"
+
+ versionName = verName
+ versionCode = verCode
+ }
+
+ apply(plugin = "kotlin-android")
+
+ setupAppCommon()
+
+ android.apply {
+ this as AbstractAppExtension
+
+ buildTypes {
+ getByName("release") {
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), project(":plugin:api").file("proguard-rules.pro"))
+ }
+ }
+
+ splits.abi {
+ isEnable = true
+ isUniversalApk = false
+
+ var targetAbi = ""
+ if (gradle.startParameter.taskNames.isNotEmpty()) {
+ if (gradle.startParameter.taskNames.size == 1) {
+ val targetTask = gradle.startParameter.taskNames[0].toLowerCase(Locale.ROOT)
+ when {
+ targetTask.contains("arm64") -> targetAbi = "arm64-v8a"
+ targetTask.contains("arm") -> targetAbi = "armeabi-v7a"
+ targetTask.contains("x64") -> targetAbi = "x86_64"
+ targetTask.contains("x86") -> targetAbi = "x86"
+ }
+ }
+ }
+
+ if (targetAbi.isNotBlank()) {
+ reset()
+ include(targetAbi)
+ }
+ }
+
+ flavorDimensions("vendor")
+ productFlavors {
+ create("oss")
+ create("fdroidArm64") {
+ versionNameSuffix = "-arm64"
+ }
+ create("fdroidArm") {
+ versionCode = verCode - 1
+ versionNameSuffix = "-arm"
+ }
+ create("fdroidX64") {
+ versionCode = verCode - 2
+ versionNameSuffix = "-x64"
+ }
+ create("fdroidX86") {
+ versionCode = verCode - 3
+ versionNameSuffix = "-x86"
+ }
+ create("play") {
+ versionCode = verCode - 4
+ }
+ }
+
+ applicationVariants.forEach { variant ->
+ variant.outputs.forEach {
+ it as BaseVariantOutputImpl
+ it.outputFileName = it.outputFileName
+ .replace(name, "$name-plugin-" + variant.versionName)
+ .replace("-release", "")
+ .replace("-oss", "")
+
+ }
+ }
+ }
+
+ dependencies.add("implementation", project(":plugin:api"))
+}
+
+fun Project.setupApp() {
+ val pkgName = requireMetadata().getProperty("PACKAGE_NAME")
+ val verName = requireMetadata().getProperty("VERSION_NAME")
+ val skip = 40
+ val verCode = (requireMetadata().getProperty("VERSION_CODE").toInt() - skip) * 5 + skip
+ android.apply {
+ defaultConfig {
+ applicationId = pkgName
+ versionCode = verCode
+ versionName = verName
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+ }
+ setupAppCommon()
+
+ android.apply {
+ this as AbstractAppExtension
+
+ buildTypes {
+ getByName("release") {
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), file("proguard-rules.pro"))
+ }
+ }
+
+ splits.abi {
+ isEnable = true
+ isUniversalApk = false
+
+ var targetAbi = ""
+ if (gradle.startParameter.taskNames.isNotEmpty()) {
+ if (gradle.startParameter.taskNames.size == 1) {
+ val targetTask = gradle.startParameter.taskNames[0].toLowerCase(Locale.ROOT)
+ when {
+ targetTask.contains("arm64") -> targetAbi = "arm64-v8a"
+ targetTask.contains("arm") -> targetAbi = "armeabi-v7a"
+ targetTask.contains("x64") -> targetAbi = "x86_64"
+ targetTask.contains("x86") -> targetAbi = "x86"
+ }
+ }
+ }
+
+ if (targetAbi.isNotBlank()) {
+ reset()
+ include(targetAbi)
+ }
+ }
+
+ flavorDimensions("vendor")
+ productFlavors {
+ create("oss")
+ create("expert")
+ create("fdroidArm64") {
+ versionNameSuffix = "-arm64"
+ }
+ create("fdroidArm") {
+ versionCode = verCode - 1
+ versionNameSuffix = "-arm"
+ }
+ create("fdroidX64") {
+ versionCode = verCode - 2
+ versionNameSuffix = "-x64"
+ }
+ create("fdroidX86") {
+ versionCode = verCode - 3
+ versionNameSuffix = "-x86"
+ }
+ create("play") {
+ versionCode = verCode - 4
+ }
+ }
+
+ applicationVariants.forEach { variant ->
+ variant.outputs.forEach {
+ it as BaseVariantOutputImpl
+ it.outputFileName = it.outputFileName
+ .replace("app", "SN-" + variant.versionName)
+ .replace("-release", "")
+ .replace("-oss", "")
+
+ }
+ }
+ }
+
+ dependencies {
+ add("implementation", project(":plugin:api"))
+ add("testImplementation", "junit:junit:4.13.2")
+ add("androidTestImplementation", "androidx.test.ext:junit:1.1.2")
+ add("androidTestImplementation", "androidx.test:runner:1.3.0")
+ add("androidTestImplementation", "androidx.test.espresso:espresso-core:3.3.0")
+ }
+}
\ No newline at end of file
diff --git a/core/build.gradle b/core/build.gradle
deleted file mode 100644
index a409dd92..00000000
--- a/core/build.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-apply plugin: 'com.android.library'
-
-android {
- compileSdkVersion 30
- buildToolsVersion '30.0.3'
- defaultConfig {
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 1
- versionName "1.0.0"
-
- externalNativeBuild.ndkBuild {
- abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
- arguments "-j${Runtime.getRuntime().availableProcessors()}"
- }
- }
-
- externalNativeBuild.ndkBuild.path "src/main/jni/Android.mk"
-}
\ No newline at end of file
diff --git a/colorpicker/.gitignore b/external/colorpicker/.gitignore
similarity index 100%
rename from colorpicker/.gitignore
rename to external/colorpicker/.gitignore
diff --git a/colorpicker/build.gradle b/external/colorpicker/build.gradle
similarity index 81%
rename from colorpicker/build.gradle
rename to external/colorpicker/build.gradle
index bb5a47b5..495df2f5 100644
--- a/colorpicker/build.gradle
+++ b/external/colorpicker/build.gradle
@@ -17,7 +17,7 @@ android {
}
dependencies {
- api 'androidx.appcompat:appcompat:1.2.0'
+ api 'androidx.appcompat:appcompat:1.3.0'
api 'androidx.recyclerview:recyclerview:1.2.0'
- api project(':flexbox')
+ api project(':external:flexbox')
}
\ No newline at end of file
diff --git a/colorpicker/src/main/AndroidManifest.xml b/external/colorpicker/src/main/AndroidManifest.xml
similarity index 100%
rename from colorpicker/src/main/AndroidManifest.xml
rename to external/colorpicker/src/main/AndroidManifest.xml
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java
similarity index 99%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java
index 30c68c41..cb4898d5 100644
--- a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java
+++ b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialog.java
@@ -4,13 +4,14 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
-import androidx.annotation.IntDef;
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java
similarity index 99%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java
index da0192f6..4914f334 100644
--- a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java
+++ b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerDialogFragment.java
@@ -3,6 +3,7 @@ package com.takisoft.colorpicker;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerPaletteFlex.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerPaletteFlex.java
similarity index 100%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerPaletteFlex.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerPaletteFlex.java
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerSwatch.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerSwatch.java
similarity index 100%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerSwatch.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorPickerSwatch.java
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/ColorStateDrawable.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorStateDrawable.java
similarity index 100%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/ColorStateDrawable.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/ColorStateDrawable.java
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/HsvColorComparator.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/HsvColorComparator.java
similarity index 100%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/HsvColorComparator.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/HsvColorComparator.java
diff --git a/colorpicker/src/main/java/com/takisoft/colorpicker/OnColorSelectedListener.java b/external/colorpicker/src/main/java/com/takisoft/colorpicker/OnColorSelectedListener.java
similarity index 100%
rename from colorpicker/src/main/java/com/takisoft/colorpicker/OnColorSelectedListener.java
rename to external/colorpicker/src/main/java/com/takisoft/colorpicker/OnColorSelectedListener.java
diff --git a/colorpicker/src/main/res/drawable/color_picker_check_base.xml b/external/colorpicker/src/main/res/drawable/color_picker_check_base.xml
similarity index 100%
rename from colorpicker/src/main/res/drawable/color_picker_check_base.xml
rename to external/colorpicker/src/main/res/drawable/color_picker_check_base.xml
diff --git a/colorpicker/src/main/res/drawable/color_picker_check_tick.xml b/external/colorpicker/src/main/res/drawable/color_picker_check_tick.xml
similarity index 100%
rename from colorpicker/src/main/res/drawable/color_picker_check_tick.xml
rename to external/colorpicker/src/main/res/drawable/color_picker_check_tick.xml
diff --git a/colorpicker/src/main/res/drawable/color_picker_checkmark.xml b/external/colorpicker/src/main/res/drawable/color_picker_checkmark.xml
similarity index 100%
rename from colorpicker/src/main/res/drawable/color_picker_checkmark.xml
rename to external/colorpicker/src/main/res/drawable/color_picker_checkmark.xml
diff --git a/colorpicker/src/main/res/drawable/color_picker_swatch.xml b/external/colorpicker/src/main/res/drawable/color_picker_swatch.xml
similarity index 100%
rename from colorpicker/src/main/res/drawable/color_picker_swatch.xml
rename to external/colorpicker/src/main/res/drawable/color_picker_swatch.xml
diff --git a/colorpicker/src/main/res/layout/color_picker_dialog.xml b/external/colorpicker/src/main/res/layout/color_picker_dialog.xml
similarity index 100%
rename from colorpicker/src/main/res/layout/color_picker_dialog.xml
rename to external/colorpicker/src/main/res/layout/color_picker_dialog.xml
diff --git a/colorpicker/src/main/res/layout/color_picker_swatch.xml b/external/colorpicker/src/main/res/layout/color_picker_swatch.xml
similarity index 100%
rename from colorpicker/src/main/res/layout/color_picker_swatch.xml
rename to external/colorpicker/src/main/res/layout/color_picker_swatch.xml
diff --git a/colorpicker/src/main/res/values-af/strings.xml b/external/colorpicker/src/main/res/values-af/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-af/strings.xml
rename to external/colorpicker/src/main/res/values-af/strings.xml
diff --git a/colorpicker/src/main/res/values-am/strings.xml b/external/colorpicker/src/main/res/values-am/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-am/strings.xml
rename to external/colorpicker/src/main/res/values-am/strings.xml
diff --git a/colorpicker/src/main/res/values-ar/strings.xml b/external/colorpicker/src/main/res/values-ar/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ar/strings.xml
rename to external/colorpicker/src/main/res/values-ar/strings.xml
diff --git a/colorpicker/src/main/res/values-az/strings.xml b/external/colorpicker/src/main/res/values-az/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-az/strings.xml
rename to external/colorpicker/src/main/res/values-az/strings.xml
diff --git a/colorpicker/src/main/res/values-b+sr+Latn/strings.xml b/external/colorpicker/src/main/res/values-b+sr+Latn/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-b+sr+Latn/strings.xml
rename to external/colorpicker/src/main/res/values-b+sr+Latn/strings.xml
diff --git a/colorpicker/src/main/res/values-be/strings.xml b/external/colorpicker/src/main/res/values-be/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-be/strings.xml
rename to external/colorpicker/src/main/res/values-be/strings.xml
diff --git a/colorpicker/src/main/res/values-bg/strings.xml b/external/colorpicker/src/main/res/values-bg/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-bg/strings.xml
rename to external/colorpicker/src/main/res/values-bg/strings.xml
diff --git a/colorpicker/src/main/res/values-bn/strings.xml b/external/colorpicker/src/main/res/values-bn/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-bn/strings.xml
rename to external/colorpicker/src/main/res/values-bn/strings.xml
diff --git a/colorpicker/src/main/res/values-bs/strings.xml b/external/colorpicker/src/main/res/values-bs/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-bs/strings.xml
rename to external/colorpicker/src/main/res/values-bs/strings.xml
diff --git a/colorpicker/src/main/res/values-ca/strings.xml b/external/colorpicker/src/main/res/values-ca/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ca/strings.xml
rename to external/colorpicker/src/main/res/values-ca/strings.xml
diff --git a/colorpicker/src/main/res/values-cs/strings.xml b/external/colorpicker/src/main/res/values-cs/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-cs/strings.xml
rename to external/colorpicker/src/main/res/values-cs/strings.xml
diff --git a/colorpicker/src/main/res/values-da/strings.xml b/external/colorpicker/src/main/res/values-da/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-da/strings.xml
rename to external/colorpicker/src/main/res/values-da/strings.xml
diff --git a/colorpicker/src/main/res/values-de/strings.xml b/external/colorpicker/src/main/res/values-de/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-de/strings.xml
rename to external/colorpicker/src/main/res/values-de/strings.xml
diff --git a/colorpicker/src/main/res/values-el/strings.xml b/external/colorpicker/src/main/res/values-el/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-el/strings.xml
rename to external/colorpicker/src/main/res/values-el/strings.xml
diff --git a/colorpicker/src/main/res/values-en-rAU/strings.xml b/external/colorpicker/src/main/res/values-en-rAU/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-en-rAU/strings.xml
rename to external/colorpicker/src/main/res/values-en-rAU/strings.xml
diff --git a/colorpicker/src/main/res/values-en-rGB/strings.xml b/external/colorpicker/src/main/res/values-en-rGB/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-en-rGB/strings.xml
rename to external/colorpicker/src/main/res/values-en-rGB/strings.xml
diff --git a/colorpicker/src/main/res/values-en-rIN/strings.xml b/external/colorpicker/src/main/res/values-en-rIN/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-en-rIN/strings.xml
rename to external/colorpicker/src/main/res/values-en-rIN/strings.xml
diff --git a/colorpicker/src/main/res/values-es-rUS/strings.xml b/external/colorpicker/src/main/res/values-es-rUS/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-es-rUS/strings.xml
rename to external/colorpicker/src/main/res/values-es-rUS/strings.xml
diff --git a/colorpicker/src/main/res/values-es/strings.xml b/external/colorpicker/src/main/res/values-es/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-es/strings.xml
rename to external/colorpicker/src/main/res/values-es/strings.xml
diff --git a/colorpicker/src/main/res/values-et/strings.xml b/external/colorpicker/src/main/res/values-et/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-et/strings.xml
rename to external/colorpicker/src/main/res/values-et/strings.xml
diff --git a/colorpicker/src/main/res/values-eu/strings.xml b/external/colorpicker/src/main/res/values-eu/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-eu/strings.xml
rename to external/colorpicker/src/main/res/values-eu/strings.xml
diff --git a/colorpicker/src/main/res/values-fa/strings.xml b/external/colorpicker/src/main/res/values-fa/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-fa/strings.xml
rename to external/colorpicker/src/main/res/values-fa/strings.xml
diff --git a/colorpicker/src/main/res/values-fi/strings.xml b/external/colorpicker/src/main/res/values-fi/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-fi/strings.xml
rename to external/colorpicker/src/main/res/values-fi/strings.xml
diff --git a/colorpicker/src/main/res/values-fr-rCA/strings.xml b/external/colorpicker/src/main/res/values-fr-rCA/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-fr-rCA/strings.xml
rename to external/colorpicker/src/main/res/values-fr-rCA/strings.xml
diff --git a/colorpicker/src/main/res/values-fr/strings.xml b/external/colorpicker/src/main/res/values-fr/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-fr/strings.xml
rename to external/colorpicker/src/main/res/values-fr/strings.xml
diff --git a/colorpicker/src/main/res/values-gl/strings.xml b/external/colorpicker/src/main/res/values-gl/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-gl/strings.xml
rename to external/colorpicker/src/main/res/values-gl/strings.xml
diff --git a/colorpicker/src/main/res/values-gu/strings.xml b/external/colorpicker/src/main/res/values-gu/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-gu/strings.xml
rename to external/colorpicker/src/main/res/values-gu/strings.xml
diff --git a/colorpicker/src/main/res/values-hi/strings.xml b/external/colorpicker/src/main/res/values-hi/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-hi/strings.xml
rename to external/colorpicker/src/main/res/values-hi/strings.xml
diff --git a/colorpicker/src/main/res/values-hr/strings.xml b/external/colorpicker/src/main/res/values-hr/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-hr/strings.xml
rename to external/colorpicker/src/main/res/values-hr/strings.xml
diff --git a/colorpicker/src/main/res/values-hu/strings.xml b/external/colorpicker/src/main/res/values-hu/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-hu/strings.xml
rename to external/colorpicker/src/main/res/values-hu/strings.xml
diff --git a/colorpicker/src/main/res/values-hy/strings.xml b/external/colorpicker/src/main/res/values-hy/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-hy/strings.xml
rename to external/colorpicker/src/main/res/values-hy/strings.xml
diff --git a/colorpicker/src/main/res/values-in/strings.xml b/external/colorpicker/src/main/res/values-in/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-in/strings.xml
rename to external/colorpicker/src/main/res/values-in/strings.xml
diff --git a/colorpicker/src/main/res/values-is/strings.xml b/external/colorpicker/src/main/res/values-is/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-is/strings.xml
rename to external/colorpicker/src/main/res/values-is/strings.xml
diff --git a/colorpicker/src/main/res/values-it/strings.xml b/external/colorpicker/src/main/res/values-it/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-it/strings.xml
rename to external/colorpicker/src/main/res/values-it/strings.xml
diff --git a/colorpicker/src/main/res/values-iw/strings.xml b/external/colorpicker/src/main/res/values-iw/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-iw/strings.xml
rename to external/colorpicker/src/main/res/values-iw/strings.xml
diff --git a/colorpicker/src/main/res/values-ja/strings.xml b/external/colorpicker/src/main/res/values-ja/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ja/strings.xml
rename to external/colorpicker/src/main/res/values-ja/strings.xml
diff --git a/colorpicker/src/main/res/values-ka/strings.xml b/external/colorpicker/src/main/res/values-ka/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ka/strings.xml
rename to external/colorpicker/src/main/res/values-ka/strings.xml
diff --git a/colorpicker/src/main/res/values-kk/strings.xml b/external/colorpicker/src/main/res/values-kk/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-kk/strings.xml
rename to external/colorpicker/src/main/res/values-kk/strings.xml
diff --git a/colorpicker/src/main/res/values-km/strings.xml b/external/colorpicker/src/main/res/values-km/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-km/strings.xml
rename to external/colorpicker/src/main/res/values-km/strings.xml
diff --git a/colorpicker/src/main/res/values-kn/strings.xml b/external/colorpicker/src/main/res/values-kn/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-kn/strings.xml
rename to external/colorpicker/src/main/res/values-kn/strings.xml
diff --git a/colorpicker/src/main/res/values-ko/strings.xml b/external/colorpicker/src/main/res/values-ko/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ko/strings.xml
rename to external/colorpicker/src/main/res/values-ko/strings.xml
diff --git a/colorpicker/src/main/res/values-ky/strings.xml b/external/colorpicker/src/main/res/values-ky/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ky/strings.xml
rename to external/colorpicker/src/main/res/values-ky/strings.xml
diff --git a/colorpicker/src/main/res/values-lo/strings.xml b/external/colorpicker/src/main/res/values-lo/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-lo/strings.xml
rename to external/colorpicker/src/main/res/values-lo/strings.xml
diff --git a/colorpicker/src/main/res/values-lt/strings.xml b/external/colorpicker/src/main/res/values-lt/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-lt/strings.xml
rename to external/colorpicker/src/main/res/values-lt/strings.xml
diff --git a/colorpicker/src/main/res/values-lv/strings.xml b/external/colorpicker/src/main/res/values-lv/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-lv/strings.xml
rename to external/colorpicker/src/main/res/values-lv/strings.xml
diff --git a/colorpicker/src/main/res/values-mk/strings.xml b/external/colorpicker/src/main/res/values-mk/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-mk/strings.xml
rename to external/colorpicker/src/main/res/values-mk/strings.xml
diff --git a/colorpicker/src/main/res/values-ml/strings.xml b/external/colorpicker/src/main/res/values-ml/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ml/strings.xml
rename to external/colorpicker/src/main/res/values-ml/strings.xml
diff --git a/colorpicker/src/main/res/values-mn/strings.xml b/external/colorpicker/src/main/res/values-mn/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-mn/strings.xml
rename to external/colorpicker/src/main/res/values-mn/strings.xml
diff --git a/colorpicker/src/main/res/values-mr/strings.xml b/external/colorpicker/src/main/res/values-mr/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-mr/strings.xml
rename to external/colorpicker/src/main/res/values-mr/strings.xml
diff --git a/colorpicker/src/main/res/values-ms/strings.xml b/external/colorpicker/src/main/res/values-ms/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ms/strings.xml
rename to external/colorpicker/src/main/res/values-ms/strings.xml
diff --git a/colorpicker/src/main/res/values-my/strings.xml b/external/colorpicker/src/main/res/values-my/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-my/strings.xml
rename to external/colorpicker/src/main/res/values-my/strings.xml
diff --git a/colorpicker/src/main/res/values-nb/strings.xml b/external/colorpicker/src/main/res/values-nb/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-nb/strings.xml
rename to external/colorpicker/src/main/res/values-nb/strings.xml
diff --git a/colorpicker/src/main/res/values-ne/strings.xml b/external/colorpicker/src/main/res/values-ne/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ne/strings.xml
rename to external/colorpicker/src/main/res/values-ne/strings.xml
diff --git a/colorpicker/src/main/res/values-nl/strings.xml b/external/colorpicker/src/main/res/values-nl/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-nl/strings.xml
rename to external/colorpicker/src/main/res/values-nl/strings.xml
diff --git a/colorpicker/src/main/res/values-pa/strings.xml b/external/colorpicker/src/main/res/values-pa/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-pa/strings.xml
rename to external/colorpicker/src/main/res/values-pa/strings.xml
diff --git a/colorpicker/src/main/res/values-pl/strings.xml b/external/colorpicker/src/main/res/values-pl/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-pl/strings.xml
rename to external/colorpicker/src/main/res/values-pl/strings.xml
diff --git a/colorpicker/src/main/res/values-pt-rPT/strings.xml b/external/colorpicker/src/main/res/values-pt-rPT/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-pt-rPT/strings.xml
rename to external/colorpicker/src/main/res/values-pt-rPT/strings.xml
diff --git a/colorpicker/src/main/res/values-pt/strings.xml b/external/colorpicker/src/main/res/values-pt/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-pt/strings.xml
rename to external/colorpicker/src/main/res/values-pt/strings.xml
diff --git a/colorpicker/src/main/res/values-ro/strings.xml b/external/colorpicker/src/main/res/values-ro/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ro/strings.xml
rename to external/colorpicker/src/main/res/values-ro/strings.xml
diff --git a/colorpicker/src/main/res/values-ru/strings.xml b/external/colorpicker/src/main/res/values-ru/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ru/strings.xml
rename to external/colorpicker/src/main/res/values-ru/strings.xml
diff --git a/colorpicker/src/main/res/values-si/strings.xml b/external/colorpicker/src/main/res/values-si/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-si/strings.xml
rename to external/colorpicker/src/main/res/values-si/strings.xml
diff --git a/colorpicker/src/main/res/values-sk/strings.xml b/external/colorpicker/src/main/res/values-sk/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sk/strings.xml
rename to external/colorpicker/src/main/res/values-sk/strings.xml
diff --git a/colorpicker/src/main/res/values-sl/strings.xml b/external/colorpicker/src/main/res/values-sl/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sl/strings.xml
rename to external/colorpicker/src/main/res/values-sl/strings.xml
diff --git a/colorpicker/src/main/res/values-sq/strings.xml b/external/colorpicker/src/main/res/values-sq/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sq/strings.xml
rename to external/colorpicker/src/main/res/values-sq/strings.xml
diff --git a/colorpicker/src/main/res/values-sr/strings.xml b/external/colorpicker/src/main/res/values-sr/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sr/strings.xml
rename to external/colorpicker/src/main/res/values-sr/strings.xml
diff --git a/colorpicker/src/main/res/values-sv/strings.xml b/external/colorpicker/src/main/res/values-sv/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sv/strings.xml
rename to external/colorpicker/src/main/res/values-sv/strings.xml
diff --git a/colorpicker/src/main/res/values-sw/strings.xml b/external/colorpicker/src/main/res/values-sw/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-sw/strings.xml
rename to external/colorpicker/src/main/res/values-sw/strings.xml
diff --git a/colorpicker/src/main/res/values-ta/strings.xml b/external/colorpicker/src/main/res/values-ta/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ta/strings.xml
rename to external/colorpicker/src/main/res/values-ta/strings.xml
diff --git a/colorpicker/src/main/res/values-te/strings.xml b/external/colorpicker/src/main/res/values-te/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-te/strings.xml
rename to external/colorpicker/src/main/res/values-te/strings.xml
diff --git a/colorpicker/src/main/res/values-th/strings.xml b/external/colorpicker/src/main/res/values-th/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-th/strings.xml
rename to external/colorpicker/src/main/res/values-th/strings.xml
diff --git a/colorpicker/src/main/res/values-tl/strings.xml b/external/colorpicker/src/main/res/values-tl/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-tl/strings.xml
rename to external/colorpicker/src/main/res/values-tl/strings.xml
diff --git a/colorpicker/src/main/res/values-tr/strings.xml b/external/colorpicker/src/main/res/values-tr/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-tr/strings.xml
rename to external/colorpicker/src/main/res/values-tr/strings.xml
diff --git a/colorpicker/src/main/res/values-uk/strings.xml b/external/colorpicker/src/main/res/values-uk/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-uk/strings.xml
rename to external/colorpicker/src/main/res/values-uk/strings.xml
diff --git a/colorpicker/src/main/res/values-ur/strings.xml b/external/colorpicker/src/main/res/values-ur/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-ur/strings.xml
rename to external/colorpicker/src/main/res/values-ur/strings.xml
diff --git a/colorpicker/src/main/res/values-uz/strings.xml b/external/colorpicker/src/main/res/values-uz/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-uz/strings.xml
rename to external/colorpicker/src/main/res/values-uz/strings.xml
diff --git a/colorpicker/src/main/res/values-vi/strings.xml b/external/colorpicker/src/main/res/values-vi/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-vi/strings.xml
rename to external/colorpicker/src/main/res/values-vi/strings.xml
diff --git a/colorpicker/src/main/res/values-zh-rCN/strings.xml b/external/colorpicker/src/main/res/values-zh-rCN/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-zh-rCN/strings.xml
rename to external/colorpicker/src/main/res/values-zh-rCN/strings.xml
diff --git a/colorpicker/src/main/res/values-zh-rHK/strings.xml b/external/colorpicker/src/main/res/values-zh-rHK/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-zh-rHK/strings.xml
rename to external/colorpicker/src/main/res/values-zh-rHK/strings.xml
diff --git a/colorpicker/src/main/res/values-zh-rTW/strings.xml b/external/colorpicker/src/main/res/values-zh-rTW/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-zh-rTW/strings.xml
rename to external/colorpicker/src/main/res/values-zh-rTW/strings.xml
diff --git a/colorpicker/src/main/res/values-zu/strings.xml b/external/colorpicker/src/main/res/values-zu/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values-zu/strings.xml
rename to external/colorpicker/src/main/res/values-zu/strings.xml
diff --git a/colorpicker/src/main/res/values/attrs.xml b/external/colorpicker/src/main/res/values/attrs.xml
similarity index 100%
rename from colorpicker/src/main/res/values/attrs.xml
rename to external/colorpicker/src/main/res/values/attrs.xml
diff --git a/colorpicker/src/main/res/values/colors.xml b/external/colorpicker/src/main/res/values/colors.xml
similarity index 100%
rename from colorpicker/src/main/res/values/colors.xml
rename to external/colorpicker/src/main/res/values/colors.xml
diff --git a/colorpicker/src/main/res/values/dimens.xml b/external/colorpicker/src/main/res/values/dimens.xml
similarity index 100%
rename from colorpicker/src/main/res/values/dimens.xml
rename to external/colorpicker/src/main/res/values/dimens.xml
diff --git a/colorpicker/src/main/res/values/strings.xml b/external/colorpicker/src/main/res/values/strings.xml
similarity index 100%
rename from colorpicker/src/main/res/values/strings.xml
rename to external/colorpicker/src/main/res/values/strings.xml
diff --git a/colorpicker/src/main/res/values/styles.xml b/external/colorpicker/src/main/res/values/styles.xml
similarity index 100%
rename from colorpicker/src/main/res/values/styles.xml
rename to external/colorpicker/src/main/res/values/styles.xml
diff --git a/flexbox/.gitignore b/external/flexbox/.gitignore
similarity index 100%
rename from flexbox/.gitignore
rename to external/flexbox/.gitignore
diff --git a/flexbox/build.gradle b/external/flexbox/build.gradle
similarity index 96%
rename from flexbox/build.gradle
rename to external/flexbox/build.gradle
index 2c78139d..08880eda 100644
--- a/flexbox/build.gradle
+++ b/external/flexbox/build.gradle
@@ -41,6 +41,6 @@ android {
}
dependencies {
- compileOnly "androidx.core:core-ktx:1.3.2"
+ compileOnly "androidx.core:core-ktx:1.5.0"
compileOnly "androidx.recyclerview:recyclerview:1.2.0"
}
diff --git a/flexbox/proguard-rules.txt b/external/flexbox/proguard-rules.txt
similarity index 100%
rename from flexbox/proguard-rules.txt
rename to external/flexbox/proguard-rules.txt
diff --git a/flexbox/src/androidTest/AndroidManifest.xml b/external/flexbox/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from flexbox/src/androidTest/AndroidManifest.xml
rename to external/flexbox/src/androidTest/AndroidManifest.xml
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/FakeFlexContainer.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/FakeFlexContainer.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/FakeFlexContainer.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/FakeFlexContainer.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/FlexboxHelperTest.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/FlexboxHelperTest.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/FlexboxHelperTest.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/FlexboxHelperTest.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/ConfigChangeActivity.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/ConfigChangeActivity.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/ConfigChangeActivity.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/ConfigChangeActivity.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxAndroidTest.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxAndroidTest.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxAndroidTest.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxAndroidTest.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerConfigChangeTest.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerConfigChangeTest.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerConfigChangeTest.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerConfigChangeTest.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerTest.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerTest.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerTest.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxLayoutManagerTest.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxTestActivity.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxTestActivity.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxTestActivity.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/FlexboxTestActivity.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/IsEqualAllowingError.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/IsEqualAllowingError.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/IsEqualAllowingError.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/IsEqualAllowingError.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedInnerAdapter.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedInnerAdapter.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedInnerAdapter.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedInnerAdapter.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedOuterAdapter.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedOuterAdapter.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedOuterAdapter.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/NestedOuterAdapter.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapter.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapter.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapter.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapter.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapterMultiViewTypes.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapterMultiViewTypes.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapterMultiViewTypes.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestAdapterMultiViewTypes.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestUtil.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestUtil.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/TestUtil.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestUtil.kt
diff --git a/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestViewHolder.kt b/external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestViewHolder.kt
similarity index 100%
rename from flexbox/src/androidTest/java/com/google/android/flexbox/test/TestViewHolder.kt
rename to external/flexbox/src/androidTest/java/com/google/android/flexbox/test/TestViewHolder.kt
diff --git a/flexbox/src/androidTest/res/drawable/divider.xml b/external/flexbox/src/androidTest/res/drawable/divider.xml
similarity index 100%
rename from flexbox/src/androidTest/res/drawable/divider.xml
rename to external/flexbox/src/androidTest/res/drawable/divider.xml
diff --git a/flexbox/src/androidTest/res/drawable/divider_thick.xml b/external/flexbox/src/androidTest/res/drawable/divider_thick.xml
similarity index 100%
rename from flexbox/src/androidTest/res/drawable/divider_thick.xml
rename to external/flexbox/src/androidTest/res/drawable/divider_thick.xml
diff --git a/flexbox/src/androidTest/res/drawable/flex_item_background.xml b/external/flexbox/src/androidTest/res/drawable/flex_item_background.xml
similarity index 100%
rename from flexbox/src/androidTest/res/drawable/flex_item_background.xml
rename to external/flexbox/src/androidTest/res/drawable/flex_item_background.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_content_test.xml b/external/flexbox/src/androidTest/res/layout/activity_align_content_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_content_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_content_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_content_test_overflowed.xml b/external/flexbox/src/androidTest/res/layout/activity_align_content_test_overflowed.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_content_test_overflowed.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_content_test_overflowed.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_items_baseline_test.xml b/external/flexbox/src/androidTest/res/layout/activity_align_items_baseline_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_items_baseline_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_items_baseline_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_items_baseline_wrap_content.xml b/external/flexbox/src/androidTest/res/layout/activity_align_items_baseline_wrap_content.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_items_baseline_wrap_content.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_items_baseline_wrap_content.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_items_parent_padding_test.xml b/external/flexbox/src/androidTest/res/layout/activity_align_items_parent_padding_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_items_parent_padding_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_items_parent_padding_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_items_test.xml b/external/flexbox/src/androidTest/res/layout/activity_align_items_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_items_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_items_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_align_self_stretch_test.xml b/external/flexbox/src/androidTest/res/layout/activity_align_self_stretch_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_align_self_stretch_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_align_self_stretch_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_column.xml b/external/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_column.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_column.xml
rename to external/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_column.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_row.xml b/external/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_row.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_row.xml
rename to external/flexbox/src/androidTest/res/layout/activity_child_needs_remeasure_row.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_direction_column_align_items_center_margin_oneside.xml b/external/flexbox/src/androidTest/res/layout/activity_direction_column_align_items_center_margin_oneside.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_direction_column_align_items_center_margin_oneside.xml
rename to external/flexbox/src/androidTest/res/layout/activity_direction_column_align_items_center_margin_oneside.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_direction_row_align_items_center_margin_oneside.xml b/external/flexbox/src/androidTest/res/layout/activity_direction_row_align_items_center_margin_oneside.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_direction_row_align_items_center_margin_oneside.xml
rename to external/flexbox/src/androidTest/res/layout/activity_direction_row_align_items_center_margin_oneside.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_divider_test_direction_column.xml b/external/flexbox/src/androidTest/res/layout/activity_divider_test_direction_column.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_divider_test_direction_column.xml
rename to external/flexbox/src/androidTest/res/layout/activity_divider_test_direction_column.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_divider_test_direction_row.xml b/external/flexbox/src/androidTest/res/layout/activity_divider_test_direction_row.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_divider_test_direction_row.xml
rename to external/flexbox/src/androidTest/res/layout/activity_divider_test_direction_row.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_empty_children.xml b/external/flexbox/src/androidTest/res/layout/activity_empty_children.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_empty_children.xml
rename to external/flexbox/src/androidTest/res/layout/activity_empty_children.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_first_item_large_horizontal_test.xml b/external/flexbox/src/androidTest/res/layout/activity_first_item_large_horizontal_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_first_item_large_horizontal_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_first_item_large_horizontal_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_first_item_large_vertical_test.xml b/external/flexbox/src/androidTest/res/layout/activity_first_item_large_vertical_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_first_item_large_vertical_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_first_item_large_vertical_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_first_view_gone_first_line_single_item.xml b/external/flexbox/src/androidTest/res/layout/activity_first_view_gone_first_line_single_item.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_first_view_gone_first_line_single_item.xml
rename to external/flexbox/src/androidTest/res/layout/activity_first_view_gone_first_line_single_item.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_grow_set_for_rest.xml b/external/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_grow_set_for_rest.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_grow_set_for_rest.xml
rename to external/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_grow_set_for_rest.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_shrink_set_for_rest.xml b/external/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_shrink_set_for_rest.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_shrink_set_for_rest.xml
rename to external/flexbox/src/androidTest/res/layout/activity_first_view_gone_layout_shrink_set_for_rest.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flex_basis_percent_test.xml b/external/flexbox/src/androidTest/res/layout/activity_flex_basis_percent_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flex_basis_percent_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flex_basis_percent_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flex_grow_test.xml b/external/flexbox/src/androidTest/res/layout/activity_flex_grow_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flex_grow_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flex_grow_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent.xml b/external/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flex_item_match_parent.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent_direction_column.xml b/external/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent_direction_column.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flex_item_match_parent_direction_column.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flex_item_match_parent_direction_column.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flex_wrap_test.xml b/external/flexbox/src/androidTest/res/layout/activity_flex_wrap_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flex_wrap_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flex_wrap_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flexbox_wrap_content.xml b/external/flexbox/src/androidTest/res/layout/activity_flexbox_wrap_content.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flexbox_wrap_content.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flexbox_wrap_content.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_horizontalscrollview.xml b/external/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_horizontalscrollview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_horizontalscrollview.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_horizontalscrollview.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_scrollview.xml b/external/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_scrollview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_scrollview.xml
rename to external/flexbox/src/androidTest/res/layout/activity_flexbox_wrapped_with_scrollview.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_justify_content_test.xml b/external/flexbox/src/androidTest/res/layout/activity_justify_content_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_justify_content_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_justify_content_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_justify_content_with_gone.xml b/external/flexbox/src/androidTest/res/layout/activity_justify_content_with_gone.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_justify_content_with_gone.xml
rename to external/flexbox/src/androidTest/res/layout/activity_justify_content_with_gone.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_justify_content_with_parent_padding.xml b/external/flexbox/src/androidTest/res/layout/activity_justify_content_with_parent_padding.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_justify_content_with_parent_padding.xml
rename to external/flexbox/src/androidTest/res/layout/activity_justify_content_with_parent_padding.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_maxheight_test.xml b/external/flexbox/src/androidTest/res/layout/activity_maxheight_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_maxheight_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_maxheight_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_maxheight_upper_bound_test.xml b/external/flexbox/src/androidTest/res/layout/activity_maxheight_upper_bound_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_maxheight_upper_bound_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_maxheight_upper_bound_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_maxwidth_test.xml b/external/flexbox/src/androidTest/res/layout/activity_maxwidth_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_maxwidth_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_maxwidth_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_maxwidth_upper_bound_test.xml b/external/flexbox/src/androidTest/res/layout/activity_maxwidth_upper_bound_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_maxwidth_upper_bound_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_maxwidth_upper_bound_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_minheight_lower_bound_test.xml b/external/flexbox/src/androidTest/res/layout/activity_minheight_lower_bound_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_minheight_lower_bound_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_minheight_lower_bound_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_minheight_test.xml b/external/flexbox/src/androidTest/res/layout/activity_minheight_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_minheight_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_minheight_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_minwidth_lower_bound_test.xml b/external/flexbox/src/androidTest/res/layout/activity_minwidth_lower_bound_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_minwidth_lower_bound_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_minwidth_lower_bound_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_minwidth_test.xml b/external/flexbox/src/androidTest/res/layout/activity_minwidth_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_minwidth_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_minwidth_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_order_test.xml b/external/flexbox/src/androidTest/res/layout/activity_order_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_order_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_order_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_simple.xml b/external/flexbox/src/androidTest/res/layout/activity_simple.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_simple.xml
rename to external/flexbox/src/androidTest/res/layout/activity_simple.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_stretch_test.xml b/external/flexbox/src/androidTest/res/layout/activity_stretch_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_stretch_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_stretch_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_views_visibility_gone.xml b/external/flexbox/src/androidTest/res/layout/activity_views_visibility_gone.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_views_visibility_gone.xml
rename to external/flexbox/src/androidTest/res/layout/activity_views_visibility_gone.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_views_visibility_invisible.xml b/external/flexbox/src/androidTest/res/layout/activity_views_visibility_invisible.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_views_visibility_invisible.xml
rename to external/flexbox/src/androidTest/res/layout/activity_views_visibility_invisible.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_column.xml b/external/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_column.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_column.xml
rename to external/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_column.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_row.xml b/external/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_row.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_row.xml
rename to external/flexbox/src/androidTest/res/layout/activity_visibility_gone_first_item_in_flex_line_row.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_before_test.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_before_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_before_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_before_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_horizontal_test.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_horizontal_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_child_margin_horizontal_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_horizontal_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_vertical_test.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_vertical_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_child_margin_vertical_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_child_margin_vertical_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_grow.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_column_shrink.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_grow.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_grow.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_grow.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_grow.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_shrink.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_shrink.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_shrink.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_content_child_bottom_margin_row_shrink.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_horizontal_test.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_horizontal_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_horizontal_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_horizontal_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_vertical_test.xml b/external/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_vertical_test.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_vertical_test.xml
rename to external/flexbox/src/androidTest/res/layout/activity_wrap_parent_padding_vertical_test.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_zero_height_positive_flexgrow.xml b/external/flexbox/src/androidTest/res/layout/activity_zero_height_positive_flexgrow.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_zero_height_positive_flexgrow.xml
rename to external/flexbox/src/androidTest/res/layout/activity_zero_height_positive_flexgrow.xml
diff --git a/flexbox/src/androidTest/res/layout/activity_zero_width_positive_flexgrow.xml b/external/flexbox/src/androidTest/res/layout/activity_zero_width_positive_flexgrow.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/activity_zero_width_positive_flexgrow.xml
rename to external/flexbox/src/androidTest/res/layout/activity_zero_width_positive_flexgrow.xml
diff --git a/flexbox/src/androidTest/res/layout/recyclerview.xml b/external/flexbox/src/androidTest/res/layout/recyclerview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/recyclerview.xml
rename to external/flexbox/src/androidTest/res/layout/recyclerview.xml
diff --git a/flexbox/src/androidTest/res/layout/recyclerview_reverse.xml b/external/flexbox/src/androidTest/res/layout/recyclerview_reverse.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/recyclerview_reverse.xml
rename to external/flexbox/src/androidTest/res/layout/recyclerview_reverse.xml
diff --git a/flexbox/src/androidTest/res/layout/recyclerview_viewholder.xml b/external/flexbox/src/androidTest/res/layout/recyclerview_viewholder.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/recyclerview_viewholder.xml
rename to external/flexbox/src/androidTest/res/layout/recyclerview_viewholder.xml
diff --git a/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview.xml b/external/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview.xml
rename to external/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview.xml
diff --git a/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview_wrap_horizontally.xml b/external/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview_wrap_horizontally.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview_wrap_horizontally.xml
rename to external/flexbox/src/androidTest/res/layout/viewholder_inner_recyclerview_wrap_horizontally.xml
diff --git a/flexbox/src/androidTest/res/layout/viewholder_textview.xml b/external/flexbox/src/androidTest/res/layout/viewholder_textview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/viewholder_textview.xml
rename to external/flexbox/src/androidTest/res/layout/viewholder_textview.xml
diff --git a/flexbox/src/androidTest/res/layout/wrapped_recyclerview.xml b/external/flexbox/src/androidTest/res/layout/wrapped_recyclerview.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/wrapped_recyclerview.xml
rename to external/flexbox/src/androidTest/res/layout/wrapped_recyclerview.xml
diff --git a/flexbox/src/androidTest/res/layout/wrapped_recyclerview_scroll_vertical.xml b/external/flexbox/src/androidTest/res/layout/wrapped_recyclerview_scroll_vertical.xml
similarity index 100%
rename from flexbox/src/androidTest/res/layout/wrapped_recyclerview_scroll_vertical.xml
rename to external/flexbox/src/androidTest/res/layout/wrapped_recyclerview_scroll_vertical.xml
diff --git a/flexbox/src/androidTest/res/values/strings.xml b/external/flexbox/src/androidTest/res/values/strings.xml
similarity index 100%
rename from flexbox/src/androidTest/res/values/strings.xml
rename to external/flexbox/src/androidTest/res/values/strings.xml
diff --git a/flexbox/src/main/AndroidManifest.xml b/external/flexbox/src/main/AndroidManifest.xml
similarity index 100%
rename from flexbox/src/main/AndroidManifest.xml
rename to external/flexbox/src/main/AndroidManifest.xml
diff --git a/flexbox/src/main/java/com/google/android/flexbox/AlignContent.java b/external/flexbox/src/main/java/com/google/android/flexbox/AlignContent.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/AlignContent.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/AlignContent.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/AlignItems.java b/external/flexbox/src/main/java/com/google/android/flexbox/AlignItems.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/AlignItems.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/AlignItems.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/AlignSelf.java b/external/flexbox/src/main/java/com/google/android/flexbox/AlignSelf.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/AlignSelf.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/AlignSelf.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexContainer.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexContainer.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexContainer.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexContainer.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexDirection.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexDirection.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexDirection.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexDirection.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexItem.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexItem.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexItem.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexItem.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexLine.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexLine.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexLine.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexLine.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexWrap.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexWrap.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexWrap.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexWrap.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexboxHelper.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexboxItemDecoration.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexboxItemDecoration.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexboxItemDecoration.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexboxItemDecoration.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayout.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayout.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexboxLayout.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayout.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayoutManager.java b/external/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayoutManager.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/FlexboxLayoutManager.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/FlexboxLayoutManager.java
diff --git a/flexbox/src/main/java/com/google/android/flexbox/JustifyContent.java b/external/flexbox/src/main/java/com/google/android/flexbox/JustifyContent.java
similarity index 100%
rename from flexbox/src/main/java/com/google/android/flexbox/JustifyContent.java
rename to external/flexbox/src/main/java/com/google/android/flexbox/JustifyContent.java
diff --git a/flexbox/src/main/res/values/attrs.xml b/external/flexbox/src/main/res/values/attrs.xml
similarity index 100%
rename from flexbox/src/main/res/values/attrs.xml
rename to external/flexbox/src/main/res/values/attrs.xml
diff --git a/preferencex-colorpicker/.gitignore b/external/preferencex-colorpicker/.gitignore
similarity index 100%
rename from preferencex-colorpicker/.gitignore
rename to external/preferencex-colorpicker/.gitignore
diff --git a/preferencex-colorpicker/build.gradle b/external/preferencex-colorpicker/build.gradle
similarity index 71%
rename from preferencex-colorpicker/build.gradle
rename to external/preferencex-colorpicker/build.gradle
index 4151c829..2226170e 100644
--- a/preferencex-colorpicker/build.gradle
+++ b/external/preferencex-colorpicker/build.gradle
@@ -28,8 +28,7 @@ android {
}
dependencies {
- implementation project(':preferencex')
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
- implementation "androidx.appcompat:appcompat:1.2.0"
- api project(':colorpicker')
+ implementation project(':external:preferencex')
+ implementation "androidx.appcompat:appcompat:1.3.0"
+ api project(':external:colorpicker')
}
\ No newline at end of file
diff --git a/preferencex-colorpicker/src/main/AndroidManifest.xml b/external/preferencex-colorpicker/src/main/AndroidManifest.xml
similarity index 100%
rename from preferencex-colorpicker/src/main/AndroidManifest.xml
rename to external/preferencex-colorpicker/src/main/AndroidManifest.xml
diff --git a/preferencex-colorpicker/src/main/res/drawable/colorpickerpreference_pref_swatch.xml b/external/preferencex-colorpicker/src/main/res/drawable/colorpickerpreference_pref_swatch.xml
similarity index 100%
rename from preferencex-colorpicker/src/main/res/drawable/colorpickerpreference_pref_swatch.xml
rename to external/preferencex-colorpicker/src/main/res/drawable/colorpickerpreference_pref_swatch.xml
diff --git a/preferencex-colorpicker/src/main/res/layout/preference_widget_color_swatch.xml b/external/preferencex-colorpicker/src/main/res/layout/preference_widget_color_swatch.xml
similarity index 100%
rename from preferencex-colorpicker/src/main/res/layout/preference_widget_color_swatch.xml
rename to external/preferencex-colorpicker/src/main/res/layout/preference_widget_color_swatch.xml
diff --git a/preferencex-colorpicker/src/main/res/values/dimens.xml b/external/preferencex-colorpicker/src/main/res/values/dimens.xml
similarity index 100%
rename from preferencex-colorpicker/src/main/res/values/dimens.xml
rename to external/preferencex-colorpicker/src/main/res/values/dimens.xml
diff --git a/preferencex-ringtone/.gitignore b/external/preferencex-ringtone/.gitignore
similarity index 100%
rename from preferencex-ringtone/.gitignore
rename to external/preferencex-ringtone/.gitignore
diff --git a/preferencex-ringtone/build.gradle b/external/preferencex-ringtone/build.gradle
similarity index 80%
rename from preferencex-ringtone/build.gradle
rename to external/preferencex-ringtone/build.gradle
index 03a9fc42..12685717 100644
--- a/preferencex-ringtone/build.gradle
+++ b/external/preferencex-ringtone/build.gradle
@@ -21,6 +21,6 @@ android {
}
dependencies {
- implementation project(':preferencex')
- implementation "androidx.appcompat:appcompat:1.2.0"
+ implementation project(':external:preferencex')
+ implementation 'androidx.appcompat:appcompat:1.3.0'
}
\ No newline at end of file
diff --git a/preferencex-ringtone/proguard-rules.pro b/external/preferencex-ringtone/proguard-rules.pro
similarity index 100%
rename from preferencex-ringtone/proguard-rules.pro
rename to external/preferencex-ringtone/proguard-rules.pro
diff --git a/preferencex-ringtone/src/main/AndroidManifest.xml b/external/preferencex-ringtone/src/main/AndroidManifest.xml
similarity index 100%
rename from preferencex-ringtone/src/main/AndroidManifest.xml
rename to external/preferencex-ringtone/src/main/AndroidManifest.xml
diff --git a/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreference.java b/external/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreference.java
similarity index 100%
rename from preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreference.java
rename to external/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreference.java
diff --git a/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreferenceDialogFragmentCompat.java b/external/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreferenceDialogFragmentCompat.java
similarity index 100%
rename from preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreferenceDialogFragmentCompat.java
rename to external/preferencex-ringtone/src/main/java/com/takisoft/preferencex/RingtonePreferenceDialogFragmentCompat.java
diff --git a/preferencex-ringtone/src/main/res/drawable/ringtone_ic_add.xml b/external/preferencex-ringtone/src/main/res/drawable/ringtone_ic_add.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/drawable/ringtone_ic_add.xml
rename to external/preferencex-ringtone/src/main/res/drawable/ringtone_ic_add.xml
diff --git a/preferencex-ringtone/src/main/res/layout/add_ringtone_item.xml b/external/preferencex-ringtone/src/main/res/layout/add_ringtone_item.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/layout/add_ringtone_item.xml
rename to external/preferencex-ringtone/src/main/res/layout/add_ringtone_item.xml
diff --git a/preferencex-ringtone/src/main/res/values-af/strings.xml b/external/preferencex-ringtone/src/main/res/values-af/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-af/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-af/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-am/strings.xml b/external/preferencex-ringtone/src/main/res/values-am/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-am/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-am/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ar/strings.xml b/external/preferencex-ringtone/src/main/res/values-ar/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ar/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ar/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-az/strings.xml b/external/preferencex-ringtone/src/main/res/values-az/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-az/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-az/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-b+sr+Latn/strings.xml b/external/preferencex-ringtone/src/main/res/values-b+sr+Latn/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-b+sr+Latn/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-b+sr+Latn/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-be/strings.xml b/external/preferencex-ringtone/src/main/res/values-be/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-be/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-be/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-bg/strings.xml b/external/preferencex-ringtone/src/main/res/values-bg/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-bg/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-bg/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-bn/strings.xml b/external/preferencex-ringtone/src/main/res/values-bn/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-bn/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-bn/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-bs/strings.xml b/external/preferencex-ringtone/src/main/res/values-bs/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-bs/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-bs/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ca/strings.xml b/external/preferencex-ringtone/src/main/res/values-ca/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ca/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ca/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-cs/strings.xml b/external/preferencex-ringtone/src/main/res/values-cs/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-cs/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-cs/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-da/strings.xml b/external/preferencex-ringtone/src/main/res/values-da/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-da/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-da/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-de/strings.xml b/external/preferencex-ringtone/src/main/res/values-de/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-de/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-de/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-el/strings.xml b/external/preferencex-ringtone/src/main/res/values-el/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-el/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-el/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-en-rAU/strings.xml b/external/preferencex-ringtone/src/main/res/values-en-rAU/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-en-rAU/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-en-rAU/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-en-rGB/strings.xml b/external/preferencex-ringtone/src/main/res/values-en-rGB/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-en-rGB/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-en-rGB/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-en-rIN/strings.xml b/external/preferencex-ringtone/src/main/res/values-en-rIN/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-en-rIN/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-en-rIN/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-es-rUS/strings.xml b/external/preferencex-ringtone/src/main/res/values-es-rUS/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-es-rUS/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-es-rUS/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-es/strings.xml b/external/preferencex-ringtone/src/main/res/values-es/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-es/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-es/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-et/strings.xml b/external/preferencex-ringtone/src/main/res/values-et/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-et/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-et/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-eu/strings.xml b/external/preferencex-ringtone/src/main/res/values-eu/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-eu/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-eu/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-fa/strings.xml b/external/preferencex-ringtone/src/main/res/values-fa/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-fa/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-fa/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-fi/strings.xml b/external/preferencex-ringtone/src/main/res/values-fi/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-fi/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-fi/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-fr-rCA/strings.xml b/external/preferencex-ringtone/src/main/res/values-fr-rCA/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-fr-rCA/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-fr-rCA/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-fr/strings.xml b/external/preferencex-ringtone/src/main/res/values-fr/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-fr/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-fr/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-gl/strings.xml b/external/preferencex-ringtone/src/main/res/values-gl/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-gl/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-gl/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-gu/strings.xml b/external/preferencex-ringtone/src/main/res/values-gu/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-gu/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-gu/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-hi/strings.xml b/external/preferencex-ringtone/src/main/res/values-hi/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-hi/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-hi/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-hr/strings.xml b/external/preferencex-ringtone/src/main/res/values-hr/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-hr/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-hr/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-hu/strings.xml b/external/preferencex-ringtone/src/main/res/values-hu/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-hu/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-hu/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-hy/strings.xml b/external/preferencex-ringtone/src/main/res/values-hy/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-hy/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-hy/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-in/strings.xml b/external/preferencex-ringtone/src/main/res/values-in/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-in/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-in/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-is/strings.xml b/external/preferencex-ringtone/src/main/res/values-is/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-is/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-is/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-it/strings.xml b/external/preferencex-ringtone/src/main/res/values-it/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-it/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-it/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-iw/strings.xml b/external/preferencex-ringtone/src/main/res/values-iw/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-iw/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-iw/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ja/strings.xml b/external/preferencex-ringtone/src/main/res/values-ja/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ja/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ja/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ka/strings.xml b/external/preferencex-ringtone/src/main/res/values-ka/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ka/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ka/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-kk/strings.xml b/external/preferencex-ringtone/src/main/res/values-kk/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-kk/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-kk/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-km/strings.xml b/external/preferencex-ringtone/src/main/res/values-km/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-km/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-km/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-kn/strings.xml b/external/preferencex-ringtone/src/main/res/values-kn/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-kn/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-kn/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ko/strings.xml b/external/preferencex-ringtone/src/main/res/values-ko/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ko/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ko/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ky/strings.xml b/external/preferencex-ringtone/src/main/res/values-ky/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ky/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ky/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-lo/strings.xml b/external/preferencex-ringtone/src/main/res/values-lo/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-lo/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-lo/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-lt/strings.xml b/external/preferencex-ringtone/src/main/res/values-lt/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-lt/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-lt/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-lv/strings.xml b/external/preferencex-ringtone/src/main/res/values-lv/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-lv/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-lv/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-mk/strings.xml b/external/preferencex-ringtone/src/main/res/values-mk/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-mk/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-mk/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ml/strings.xml b/external/preferencex-ringtone/src/main/res/values-ml/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ml/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ml/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-mn/strings.xml b/external/preferencex-ringtone/src/main/res/values-mn/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-mn/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-mn/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-mr/strings.xml b/external/preferencex-ringtone/src/main/res/values-mr/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-mr/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-mr/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ms/strings.xml b/external/preferencex-ringtone/src/main/res/values-ms/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ms/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ms/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-my/strings.xml b/external/preferencex-ringtone/src/main/res/values-my/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-my/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-my/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-nb/strings.xml b/external/preferencex-ringtone/src/main/res/values-nb/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-nb/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-nb/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ne/strings.xml b/external/preferencex-ringtone/src/main/res/values-ne/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ne/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ne/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-nl/strings.xml b/external/preferencex-ringtone/src/main/res/values-nl/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-nl/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-nl/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-pa/strings.xml b/external/preferencex-ringtone/src/main/res/values-pa/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-pa/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-pa/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-pl/strings.xml b/external/preferencex-ringtone/src/main/res/values-pl/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-pl/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-pl/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-pt-rBR/strings.xml b/external/preferencex-ringtone/src/main/res/values-pt-rBR/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-pt-rBR/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-pt-rBR/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-pt-rPT/strings.xml b/external/preferencex-ringtone/src/main/res/values-pt-rPT/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-pt-rPT/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-pt-rPT/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-pt/strings.xml b/external/preferencex-ringtone/src/main/res/values-pt/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-pt/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-pt/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ro/strings.xml b/external/preferencex-ringtone/src/main/res/values-ro/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ro/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ro/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ru/strings.xml b/external/preferencex-ringtone/src/main/res/values-ru/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ru/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ru/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-si/strings.xml b/external/preferencex-ringtone/src/main/res/values-si/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-si/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-si/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sk/strings.xml b/external/preferencex-ringtone/src/main/res/values-sk/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sk/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sk/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sl/strings.xml b/external/preferencex-ringtone/src/main/res/values-sl/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sl/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sl/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sq/strings.xml b/external/preferencex-ringtone/src/main/res/values-sq/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sq/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sq/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sr/strings.xml b/external/preferencex-ringtone/src/main/res/values-sr/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sr/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sr/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sv/strings.xml b/external/preferencex-ringtone/src/main/res/values-sv/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sv/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sv/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-sw/strings.xml b/external/preferencex-ringtone/src/main/res/values-sw/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-sw/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-sw/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ta/strings.xml b/external/preferencex-ringtone/src/main/res/values-ta/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ta/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ta/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-te/strings.xml b/external/preferencex-ringtone/src/main/res/values-te/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-te/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-te/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-th/strings.xml b/external/preferencex-ringtone/src/main/res/values-th/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-th/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-th/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-tl/strings.xml b/external/preferencex-ringtone/src/main/res/values-tl/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-tl/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-tl/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-tr/strings.xml b/external/preferencex-ringtone/src/main/res/values-tr/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-tr/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-tr/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-uk/strings.xml b/external/preferencex-ringtone/src/main/res/values-uk/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-uk/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-uk/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-ur/strings.xml b/external/preferencex-ringtone/src/main/res/values-ur/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-ur/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-ur/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-uz/strings.xml b/external/preferencex-ringtone/src/main/res/values-uz/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-uz/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-uz/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-vi/strings.xml b/external/preferencex-ringtone/src/main/res/values-vi/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-vi/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-vi/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-zh-rCN/strings.xml b/external/preferencex-ringtone/src/main/res/values-zh-rCN/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-zh-rCN/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-zh-rCN/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-zh-rHK/strings.xml b/external/preferencex-ringtone/src/main/res/values-zh-rHK/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-zh-rHK/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-zh-rHK/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-zh-rTW/strings.xml b/external/preferencex-ringtone/src/main/res/values-zh-rTW/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-zh-rTW/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-zh-rTW/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values-zu/strings.xml b/external/preferencex-ringtone/src/main/res/values-zu/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values-zu/strings.xml
rename to external/preferencex-ringtone/src/main/res/values-zu/strings.xml
diff --git a/preferencex-ringtone/src/main/res/values/attrs.xml b/external/preferencex-ringtone/src/main/res/values/attrs.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values/attrs.xml
rename to external/preferencex-ringtone/src/main/res/values/attrs.xml
diff --git a/preferencex-ringtone/src/main/res/values/strings.xml b/external/preferencex-ringtone/src/main/res/values/strings.xml
similarity index 100%
rename from preferencex-ringtone/src/main/res/values/strings.xml
rename to external/preferencex-ringtone/src/main/res/values/strings.xml
diff --git a/preferencex-simplemenu/.gitignore b/external/preferencex-simplemenu/.gitignore
similarity index 100%
rename from preferencex-simplemenu/.gitignore
rename to external/preferencex-simplemenu/.gitignore
diff --git a/preferencex-simplemenu/build.gradle b/external/preferencex-simplemenu/build.gradle
similarity index 100%
rename from preferencex-simplemenu/build.gradle
rename to external/preferencex-simplemenu/build.gradle
diff --git a/preferencex-simplemenu/proguard-rules.pro b/external/preferencex-simplemenu/proguard-rules.pro
similarity index 100%
rename from preferencex-simplemenu/proguard-rules.pro
rename to external/preferencex-simplemenu/proguard-rules.pro
diff --git a/preferencex-simplemenu/src/main/AndroidManifest.xml b/external/preferencex-simplemenu/src/main/AndroidManifest.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/AndroidManifest.xml
rename to external/preferencex-simplemenu/src/main/AndroidManifest.xml
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/SimpleMenuPreference.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/SimpleMenuPreference.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/SimpleMenuPreference.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/SimpleMenuPreference.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/PropertyHolder.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/PropertyHolder.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/PropertyHolder.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/PropertyHolder.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/RectEvaluator.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/RectEvaluator.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/RectEvaluator.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/RectEvaluator.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuAnimation.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuAnimation.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuAnimation.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuAnimation.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuBoundsProperty.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuBoundsProperty.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuBoundsProperty.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/animation/SimpleMenuBoundsProperty.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/drawable/FixedBoundsDrawable.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/drawable/FixedBoundsDrawable.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/drawable/FixedBoundsDrawable.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/drawable/FixedBoundsDrawable.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListAdapter.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListAdapter.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListAdapter.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListAdapter.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListItemHolder.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListItemHolder.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListItemHolder.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuListItemHolder.java
diff --git a/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuPopupWindow.java b/external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuPopupWindow.java
similarity index 100%
rename from preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuPopupWindow.java
rename to external/preferencex-simplemenu/src/main/java/com/takisoft/preferencex/widget/SimpleMenuPopupWindow.java
diff --git a/preferencex-simplemenu/src/main/res/anim/abc_shrink_fade_out_center.xml b/external/preferencex-simplemenu/src/main/res/anim/abc_shrink_fade_out_center.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/anim/abc_shrink_fade_out_center.xml
rename to external/preferencex-simplemenu/src/main/res/anim/abc_shrink_fade_out_center.xml
diff --git a/preferencex-simplemenu/src/main/res/drawable/simple_menu_background.xml b/external/preferencex-simplemenu/src/main/res/drawable/simple_menu_background.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/drawable/simple_menu_background.xml
rename to external/preferencex-simplemenu/src/main/res/drawable/simple_menu_background.xml
diff --git a/preferencex-simplemenu/src/main/res/drawable/simple_menu_item_background.xml b/external/preferencex-simplemenu/src/main/res/drawable/simple_menu_item_background.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/drawable/simple_menu_item_background.xml
rename to external/preferencex-simplemenu/src/main/res/drawable/simple_menu_item_background.xml
diff --git a/preferencex-simplemenu/src/main/res/layout-v21/preference_simplemenu.xml b/external/preferencex-simplemenu/src/main/res/layout-v21/preference_simplemenu.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/layout-v21/preference_simplemenu.xml
rename to external/preferencex-simplemenu/src/main/res/layout-v21/preference_simplemenu.xml
diff --git a/preferencex-simplemenu/src/main/res/layout/preference_simplemenu.xml b/external/preferencex-simplemenu/src/main/res/layout/preference_simplemenu.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/layout/preference_simplemenu.xml
rename to external/preferencex-simplemenu/src/main/res/layout/preference_simplemenu.xml
diff --git a/preferencex-simplemenu/src/main/res/layout/simple_menu_item.xml b/external/preferencex-simplemenu/src/main/res/layout/simple_menu_item.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/layout/simple_menu_item.xml
rename to external/preferencex-simplemenu/src/main/res/layout/simple_menu_item.xml
diff --git a/preferencex-simplemenu/src/main/res/layout/simple_menu_list.xml b/external/preferencex-simplemenu/src/main/res/layout/simple_menu_list.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/layout/simple_menu_list.xml
rename to external/preferencex-simplemenu/src/main/res/layout/simple_menu_list.xml
diff --git a/preferencex-simplemenu/src/main/res/values-sw600dp/dimens.xml b/external/preferencex-simplemenu/src/main/res/values-sw600dp/dimens.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/values-sw600dp/dimens.xml
rename to external/preferencex-simplemenu/src/main/res/values-sw600dp/dimens.xml
diff --git a/preferencex-simplemenu/src/main/res/values/attrs.xml b/external/preferencex-simplemenu/src/main/res/values/attrs.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/values/attrs.xml
rename to external/preferencex-simplemenu/src/main/res/values/attrs.xml
diff --git a/preferencex-simplemenu/src/main/res/values/colors.xml b/external/preferencex-simplemenu/src/main/res/values/colors.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/values/colors.xml
rename to external/preferencex-simplemenu/src/main/res/values/colors.xml
diff --git a/preferencex-simplemenu/src/main/res/values/dimens.xml b/external/preferencex-simplemenu/src/main/res/values/dimens.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/values/dimens.xml
rename to external/preferencex-simplemenu/src/main/res/values/dimens.xml
diff --git a/preferencex-simplemenu/src/main/res/values/styles.xml b/external/preferencex-simplemenu/src/main/res/values/styles.xml
similarity index 100%
rename from preferencex-simplemenu/src/main/res/values/styles.xml
rename to external/preferencex-simplemenu/src/main/res/values/styles.xml
diff --git a/preferencex/.gitignore b/external/preferencex/.gitignore
similarity index 100%
rename from preferencex/.gitignore
rename to external/preferencex/.gitignore
diff --git a/preferencex/build.gradle b/external/preferencex/build.gradle
similarity index 100%
rename from preferencex/build.gradle
rename to external/preferencex/build.gradle
diff --git a/preferencex/proguard-rules.pro b/external/preferencex/proguard-rules.pro
similarity index 100%
rename from preferencex/proguard-rules.pro
rename to external/preferencex/proguard-rules.pro
diff --git a/preferencex/src/main/AndroidManifest.xml b/external/preferencex/src/main/AndroidManifest.xml
similarity index 100%
rename from preferencex/src/main/AndroidManifest.xml
rename to external/preferencex/src/main/AndroidManifest.xml
diff --git a/preferencex/src/main/java/androidx/preference/PreferenceManagerFix.java b/external/preferencex/src/main/java/androidx/preference/PreferenceManagerFix.java
similarity index 100%
rename from preferencex/src/main/java/androidx/preference/PreferenceManagerFix.java
rename to external/preferencex/src/main/java/androidx/preference/PreferenceManagerFix.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/AutoSummaryEditTextPreference.java b/external/preferencex/src/main/java/com/takisoft/preferencex/AutoSummaryEditTextPreference.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/AutoSummaryEditTextPreference.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/AutoSummaryEditTextPreference.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/EditTextPreference.java b/external/preferencex/src/main/java/com/takisoft/preferencex/EditTextPreference.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/EditTextPreference.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/EditTextPreference.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/PreferenceActivityResultListener.java b/external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceActivityResultListener.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/PreferenceActivityResultListener.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceActivityResultListener.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/PreferenceCategory.java b/external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceCategory.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/PreferenceCategory.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceCategory.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompat.java b/external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompat.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompat.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompat.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompatMasterSwitch.java b/external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompatMasterSwitch.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompatMasterSwitch.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/PreferenceFragmentCompatMasterSwitch.java
diff --git a/preferencex/src/main/java/com/takisoft/preferencex/SwitchPreferenceCompat.java b/external/preferencex/src/main/java/com/takisoft/preferencex/SwitchPreferenceCompat.java
similarity index 100%
rename from preferencex/src/main/java/com/takisoft/preferencex/SwitchPreferenceCompat.java
rename to external/preferencex/src/main/java/com/takisoft/preferencex/SwitchPreferenceCompat.java
diff --git a/preferencex/src/main/res/layout/preference_list_master_switch.xml b/external/preferencex/src/main/res/layout/preference_list_master_switch.xml
similarity index 100%
rename from preferencex/src/main/res/layout/preference_list_master_switch.xml
rename to external/preferencex/src/main/res/layout/preference_list_master_switch.xml
diff --git a/preferencex/src/main/res/layout/preference_material_ext.xml b/external/preferencex/src/main/res/layout/preference_material_ext.xml
similarity index 100%
rename from preferencex/src/main/res/layout/preference_material_ext.xml
rename to external/preferencex/src/main/res/layout/preference_material_ext.xml
diff --git a/preferencex/src/main/res/values/attrs.xml b/external/preferencex/src/main/res/values/attrs.xml
similarity index 100%
rename from preferencex/src/main/res/values/attrs.xml
rename to external/preferencex/src/main/res/values/attrs.xml
diff --git a/preferencex/src/main/res/values/ids.xml b/external/preferencex/src/main/res/values/ids.xml
similarity index 100%
rename from preferencex/src/main/res/values/ids.xml
rename to external/preferencex/src/main/res/values/ids.xml
diff --git a/preferencex/src/main/res/values/styles.xml b/external/preferencex/src/main/res/values/styles.xml
similarity index 100%
rename from preferencex/src/main/res/values/styles.xml
rename to external/preferencex/src/main/res/values/styles.xml
diff --git a/library/core/build.gradle.kts b/library/core/build.gradle.kts
new file mode 100644
index 00000000..faa4cd14
--- /dev/null
+++ b/library/core/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.library")
+}
+
+setupNdkLibrary()
\ No newline at end of file
diff --git a/core/src/main/AndroidManifest.xml b/library/core/src/main/AndroidManifest.xml
similarity index 100%
rename from core/src/main/AndroidManifest.xml
rename to library/core/src/main/AndroidManifest.xml
diff --git a/core/src/main/jni/Android.mk b/library/core/src/main/jni/Android.mk
similarity index 100%
rename from core/src/main/jni/Android.mk
rename to library/core/src/main/jni/Android.mk
diff --git a/core/src/main/jni/Application.mk b/library/core/src/main/jni/Application.mk
similarity index 100%
rename from core/src/main/jni/Application.mk
rename to library/core/src/main/jni/Application.mk
diff --git a/core/src/main/jni/badvpn b/library/core/src/main/jni/badvpn
similarity index 100%
rename from core/src/main/jni/badvpn
rename to library/core/src/main/jni/badvpn
diff --git a/core/src/main/jni/build-shared-executable.mk b/library/core/src/main/jni/build-shared-executable.mk
similarity index 100%
rename from core/src/main/jni/build-shared-executable.mk
rename to library/core/src/main/jni/build-shared-executable.mk
diff --git a/core/src/main/jni/include/proxychains/config.h b/library/core/src/main/jni/include/proxychains/config.h
similarity index 100%
rename from core/src/main/jni/include/proxychains/config.h
rename to library/core/src/main/jni/include/proxychains/config.h
diff --git a/core/src/main/jni/libancillary b/library/core/src/main/jni/libancillary
similarity index 100%
rename from core/src/main/jni/libancillary
rename to library/core/src/main/jni/libancillary
diff --git a/core/src/main/jni/proxychains b/library/core/src/main/jni/proxychains
similarity index 100%
rename from core/src/main/jni/proxychains
rename to library/core/src/main/jni/proxychains
diff --git a/shadowsocks/build.gradle.kts b/library/shadowsocks/build.gradle.kts
similarity index 88%
rename from shadowsocks/build.gradle.kts
rename to library/shadowsocks/build.gradle.kts
index 9922aeda..54522273 100644
--- a/shadowsocks/build.gradle.kts
+++ b/library/shadowsocks/build.gradle.kts
@@ -5,15 +5,8 @@ plugins {
id("org.mozilla.rust-android-gradle.rust-android")
}
-android {
- compileSdkVersion(30)
- defaultConfig {
- minSdkVersion(21)
- targetSdkVersion(30)
- }
- buildToolsVersion = "30.0.3"
-}
-
+setupCommon()
+setupNdk()
cargo {
module = "src/main/rust/shadowsocks-rust"
diff --git a/shadowsocks/src/main/AndroidManifest.xml b/library/shadowsocks/src/main/AndroidManifest.xml
similarity index 100%
rename from shadowsocks/src/main/AndroidManifest.xml
rename to library/shadowsocks/src/main/AndroidManifest.xml
diff --git a/shadowsocks/src/main/rust/linker-wrapper.py b/library/shadowsocks/src/main/rust/linker-wrapper.py
similarity index 100%
rename from shadowsocks/src/main/rust/linker-wrapper.py
rename to library/shadowsocks/src/main/rust/linker-wrapper.py
diff --git a/shadowsocks/src/main/rust/shadowsocks-rust b/library/shadowsocks/src/main/rust/shadowsocks-rust
similarity index 100%
rename from shadowsocks/src/main/rust/shadowsocks-rust
rename to library/shadowsocks/src/main/rust/shadowsocks-rust
diff --git a/shadowsocksr/.gitignore b/library/shadowsocksr/.gitignore
similarity index 100%
rename from shadowsocksr/.gitignore
rename to library/shadowsocksr/.gitignore
diff --git a/library/shadowsocksr/build.gradle.kts b/library/shadowsocksr/build.gradle.kts
new file mode 100644
index 00000000..faa4cd14
--- /dev/null
+++ b/library/shadowsocksr/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.library")
+}
+
+setupNdkLibrary()
\ No newline at end of file
diff --git a/shadowsocksr/src/main/AndroidManifest.xml b/library/shadowsocksr/src/main/AndroidManifest.xml
similarity index 100%
rename from shadowsocksr/src/main/AndroidManifest.xml
rename to library/shadowsocksr/src/main/AndroidManifest.xml
diff --git a/shadowsocksr/src/main/jni/Android.mk b/library/shadowsocksr/src/main/jni/Android.mk
similarity index 100%
rename from shadowsocksr/src/main/jni/Android.mk
rename to library/shadowsocksr/src/main/jni/Android.mk
diff --git a/shadowsocksr/src/main/jni/Application.mk b/library/shadowsocksr/src/main/jni/Application.mk
similarity index 100%
rename from shadowsocksr/src/main/jni/Application.mk
rename to library/shadowsocksr/src/main/jni/Application.mk
diff --git a/shadowsocksr/src/main/jni/build-shared-executable.mk b/library/shadowsocksr/src/main/jni/build-shared-executable.mk
similarity index 100%
rename from shadowsocksr/src/main/jni/build-shared-executable.mk
rename to library/shadowsocksr/src/main/jni/build-shared-executable.mk
diff --git a/shadowsocksr/src/main/jni/include/libev/config.h b/library/shadowsocksr/src/main/jni/include/libev/config.h
similarity index 100%
rename from shadowsocksr/src/main/jni/include/libev/config.h
rename to library/shadowsocksr/src/main/jni/include/libev/config.h
diff --git a/shadowsocksr/src/main/jni/include/shadowsocks-libev/config.h b/library/shadowsocksr/src/main/jni/include/shadowsocks-libev/config.h
similarity index 100%
rename from shadowsocksr/src/main/jni/include/shadowsocks-libev/config.h
rename to library/shadowsocksr/src/main/jni/include/shadowsocks-libev/config.h
diff --git a/shadowsocksr/src/main/jni/include/sodium/version.h b/library/shadowsocksr/src/main/jni/include/sodium/version.h
similarity index 100%
rename from shadowsocksr/src/main/jni/include/sodium/version.h
rename to library/shadowsocksr/src/main/jni/include/sodium/version.h
diff --git a/shadowsocksr/src/main/jni/libancillary b/library/shadowsocksr/src/main/jni/libancillary
similarity index 100%
rename from shadowsocksr/src/main/jni/libancillary
rename to library/shadowsocksr/src/main/jni/libancillary
diff --git a/shadowsocksr/src/main/jni/libsodium b/library/shadowsocksr/src/main/jni/libsodium
similarity index 100%
rename from shadowsocksr/src/main/jni/libsodium
rename to library/shadowsocksr/src/main/jni/libsodium
diff --git a/shadowsocksr/src/main/jni/mbedtls b/library/shadowsocksr/src/main/jni/mbedtls
similarity index 100%
rename from shadowsocksr/src/main/jni/mbedtls
rename to library/shadowsocksr/src/main/jni/mbedtls
diff --git a/shadowsocksr/src/main/jni/patch/pcre/pcre_chartables.c b/library/shadowsocksr/src/main/jni/patch/pcre/pcre_chartables.c
similarity index 100%
rename from shadowsocksr/src/main/jni/patch/pcre/pcre_chartables.c
rename to library/shadowsocksr/src/main/jni/patch/pcre/pcre_chartables.c
diff --git a/shadowsocksr/src/main/jni/pcre b/library/shadowsocksr/src/main/jni/pcre
similarity index 100%
rename from shadowsocksr/src/main/jni/pcre
rename to library/shadowsocksr/src/main/jni/pcre
diff --git a/shadowsocksr/src/main/jni/re2 b/library/shadowsocksr/src/main/jni/re2
similarity index 100%
rename from shadowsocksr/src/main/jni/re2
rename to library/shadowsocksr/src/main/jni/re2
diff --git a/shadowsocksr/src/main/jni/shadowsocks-libev b/library/shadowsocksr/src/main/jni/shadowsocks-libev
similarity index 100%
rename from shadowsocksr/src/main/jni/shadowsocks-libev
rename to library/shadowsocksr/src/main/jni/shadowsocks-libev
diff --git a/v2ray b/library/v2ray
similarity index 100%
rename from v2ray
rename to library/v2ray
diff --git a/naive-plugin/build.gradle b/naive-plugin/build.gradle
deleted file mode 100644
index 6d56be18..00000000
--- a/naive-plugin/build.gradle
+++ /dev/null
@@ -1,100 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId "io.nekohasekai.sagernet.plugin.naive"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 1
- versionName "90.0.4430.85-7"
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "../plugin/proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("plugin", "plugin-" + variant.versionName)
- .replace("-release", "")
- }
- }
-
-}
-
-dependencies {
- implementation project(":plugin")
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-}
\ No newline at end of file
diff --git a/naive-plugin/src/main/jni/naiveproxy b/naive-plugin/src/main/jni/naiveproxy
deleted file mode 160000
index 9e1a68f9..00000000
--- a/naive-plugin/src/main/jni/naiveproxy
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9e1a68f92fe59131aa166cce6e5659d6ae67dd6d
diff --git a/plugin/api/build.gradle.kts b/plugin/api/build.gradle.kts
new file mode 100644
index 00000000..81f3a1c9
--- /dev/null
+++ b/plugin/api/build.gradle.kts
@@ -0,0 +1,7 @@
+plugins {
+ id("com.android.library")
+ kotlin("android")
+ id("kotlin-parcelize")
+}
+
+setupKotlinCommon()
\ No newline at end of file
diff --git a/plugin/proguard-rules.pro b/plugin/api/proguard-rules.pro
similarity index 100%
rename from plugin/proguard-rules.pro
rename to plugin/api/proguard-rules.pro
diff --git a/plugin/src/main/AndroidManifest.xml b/plugin/api/src/main/AndroidManifest.xml
similarity index 100%
rename from plugin/src/main/AndroidManifest.xml
rename to plugin/api/src/main/AndroidManifest.xml
diff --git a/plugin/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt b/plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt
similarity index 71%
rename from plugin/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt
rename to plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt
index 82db8697..e87498d9 100644
--- a/plugin/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt
+++ b/plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt
@@ -1,22 +1,23 @@
-/*******************************************************************************
- * *
- * Copyright (C) 2017 by Max Lv *
- * Copyright (C) 2017 by Mygod Studio *
- * *
- * 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 . *
- * *
- *******************************************************************************/
+/******************************************************************************
+ * *
+ * Copyright (C) 2021 by nekohasekai *
+ * Copyright (C) 2021 by Max Lv *
+ * Copyright (C) 2021 by Mygod Studio *
+ * *
+ * 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 . *
+ * *
+ ******************************************************************************/
package io.nekohasekai.sagernet.plugin
@@ -27,7 +28,6 @@ import android.database.MatrixCursor
import android.net.Uri
import android.os.Bundle
import android.os.ParcelFileDescriptor
-import androidx.core.os.bundleOf
abstract class NativePluginProvider : ContentProvider() {
override fun getType(uri: Uri): String? = "application/x-elf"
@@ -75,8 +75,11 @@ abstract class NativePluginProvider : ContentProvider() {
}
override fun call(method: String, arg: String?, extras: Bundle?): Bundle? = when (method) {
- PluginContract.METHOD_GET_EXECUTABLE -> bundleOf(Pair(PluginContract.EXTRA_ENTRY,
- getExecutable()))
+ PluginContract.METHOD_GET_EXECUTABLE -> {
+ Bundle().apply {
+ putString(PluginContract.EXTRA_ENTRY, getExecutable())
+ }
+ }
else -> super.call(method, arg, extras)
}
diff --git a/plugin/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt b/plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt
similarity index 61%
rename from plugin/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt
rename to plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt
index b772bd8c..ba903da9 100644
--- a/plugin/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt
+++ b/plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt
@@ -1,22 +1,23 @@
-/*******************************************************************************
- * *
- * Copyright (C) 2017 by Max Lv *
- * Copyright (C) 2017 by Mygod Studio *
- * *
- * 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 . *
- * *
- *******************************************************************************/
+/******************************************************************************
+ * *
+ * Copyright (C) 2021 by nekohasekai *
+ * Copyright (C) 2021 by Max Lv *
+ * Copyright (C) 2021 by Mygod Studio *
+ * *
+ * 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 . *
+ * *
+ ******************************************************************************/
package io.nekohasekai.sagernet.plugin
diff --git a/plugin/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt b/plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt
similarity index 100%
rename from plugin/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt
rename to plugin/api/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt
diff --git a/plugin/build.gradle b/plugin/build.gradle
deleted file mode 100644
index 7130e319..00000000
--- a/plugin/build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-plugins {
- id "com.android.library"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- minSdkVersion 21
- targetSdkVersion 30
- }
-
-}
-
-dependencies {
- api "androidx.core:core-ktx:1.6.0-alpha03"
-}
\ No newline at end of file
diff --git a/plugin/naive/build.gradle.kts b/plugin/naive/build.gradle.kts
new file mode 100644
index 00000000..c30652aa
--- /dev/null
+++ b/plugin/naive/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.application")
+}
+
+setupPlugin("naive")
\ No newline at end of file
diff --git a/naive-plugin/src/main/AndroidManifest.xml b/plugin/naive/src/main/AndroidManifest.xml
similarity index 85%
rename from naive-plugin/src/main/AndroidManifest.xml
rename to plugin/naive/src/main/AndroidManifest.xml
index 1fdd9551..d27c159b 100644
--- a/naive-plugin/src/main/AndroidManifest.xml
+++ b/plugin/naive/src/main/AndroidManifest.xml
@@ -1,15 +1,17 @@
+ android:icon="@mipmap/ic_launcher"
+ android:label="Naïve Plugin"
+ android:roundIcon="@mipmap/ic_launcher_round">
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/naive/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher.png b/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..db576703
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher_round.png b/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..11b071c7
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher.png b/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..7d028abe
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher_round.png b/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..a6650975
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher.png b/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..3ce8151d
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..da5b85b0
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher.png b/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..5181adaa
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..4feac43c
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..b535a085
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..4a1edea6
Binary files /dev/null and b/plugin/naive/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/plugin/naive/src/main/res/values/ic_launcher_background.xml b/plugin/naive/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..c58f6bcb
--- /dev/null
+++ b/plugin/naive/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #E91E63
+
\ No newline at end of file
diff --git a/plugin/pingtunnel/build.gradle.kts b/plugin/pingtunnel/build.gradle.kts
new file mode 100644
index 00000000..b31e6523
--- /dev/null
+++ b/plugin/pingtunnel/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.application")
+}
+
+setupPlugin("pingtunnel")
\ No newline at end of file
diff --git a/pt-plugin/src/main/AndroidManifest.xml b/plugin/pingtunnel/src/main/AndroidManifest.xml
similarity index 91%
rename from pt-plugin/src/main/AndroidManifest.xml
rename to plugin/pingtunnel/src/main/AndroidManifest.xml
index a9b7b26d..db151dfe 100644
--- a/pt-plugin/src/main/AndroidManifest.xml
+++ b/plugin/pingtunnel/src/main/AndroidManifest.xml
@@ -7,7 +7,9 @@
+ android:icon="@mipmap/ic_launcher"
+ android:label="PingTunnel Plugin"
+ android:roundIcon="@mipmap/ic_launcher_round">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/pingtunnel/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher.png b/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..d7e1b76a
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher_round.png b/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..048a357a
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher.png b/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..9d08cafc
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher_round.png b/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b29da255
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher.png b/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..d3bc92af
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..4940a2b2
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher.png b/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..de936f58
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..0a73c013
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..5f16b95c
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..bd497ecc
Binary files /dev/null and b/plugin/pingtunnel/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/plugin/pingtunnel/src/main/res/values/ic_launcher_background.xml b/plugin/pingtunnel/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..c58f6bcb
--- /dev/null
+++ b/plugin/pingtunnel/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #E91E63
+
\ No newline at end of file
diff --git a/plugin/relaybaton/build.gradle.kts b/plugin/relaybaton/build.gradle.kts
new file mode 100644
index 00000000..64ef1bfb
--- /dev/null
+++ b/plugin/relaybaton/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.application")
+}
+
+setupPlugin("relaybaton")
\ No newline at end of file
diff --git a/rb-plugin/src/main/AndroidManifest.xml b/plugin/relaybaton/src/main/AndroidManifest.xml
similarity index 91%
rename from rb-plugin/src/main/AndroidManifest.xml
rename to plugin/relaybaton/src/main/AndroidManifest.xml
index 3316c303..e996405d 100644
--- a/rb-plugin/src/main/AndroidManifest.xml
+++ b/plugin/relaybaton/src/main/AndroidManifest.xml
@@ -7,7 +7,9 @@
+ android:icon="@mipmap/ic_launcher"
+ android:label="RelayBaton Plugin"
+ android:roundIcon="@mipmap/ic_launcher_round">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/relaybaton/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher.png b/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..17017c2c
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher_round.png b/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..31e8cd22
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher.png b/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..129deb47
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher_round.png b/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..7542327f
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher.png b/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..a83ec0e5
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..c1e83dba
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher.png b/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..b1bcd617
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..ddb784a4
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..c205e584
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e01c25bf
Binary files /dev/null and b/plugin/relaybaton/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/plugin/relaybaton/src/main/res/values/ic_launcher_background.xml b/plugin/relaybaton/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..c58f6bcb
--- /dev/null
+++ b/plugin/relaybaton/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #E91E63
+
\ No newline at end of file
diff --git a/plugin/trojan-go/build.gradle.kts b/plugin/trojan-go/build.gradle.kts
new file mode 100644
index 00000000..8da9cf6e
--- /dev/null
+++ b/plugin/trojan-go/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.application")
+}
+
+setupPlugin("trojan_go")
\ No newline at end of file
diff --git a/trojan-go-plugin/src/main/AndroidManifest.xml b/plugin/trojan-go/src/main/AndroidManifest.xml
similarity index 83%
rename from trojan-go-plugin/src/main/AndroidManifest.xml
rename to plugin/trojan-go/src/main/AndroidManifest.xml
index 09a23629..d49aa8a4 100644
--- a/trojan-go-plugin/src/main/AndroidManifest.xml
+++ b/plugin/trojan-go/src/main/AndroidManifest.xml
@@ -1,15 +1,17 @@
+ android:icon="@mipmap/ic_launcher"
+ android:label="Trojan-Go Plugin"
+ android:roundIcon="@mipmap/ic_launcher_round">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/trojan-go/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher.png b/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..e7439b90
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher_round.png b/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..c8bcb7fe
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher.png b/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..ccbc1391
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher_round.png b/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..2df8e195
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher.png b/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..75786f50
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..d2863c62
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher.png b/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..4b08c39f
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..f01efda4
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..a0a4a962
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..8048a28b
Binary files /dev/null and b/plugin/trojan-go/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/plugin/trojan-go/src/main/res/values/ic_launcher_background.xml b/plugin/trojan-go/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..c58f6bcb
--- /dev/null
+++ b/plugin/trojan-go/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #E91E63
+
\ No newline at end of file
diff --git a/plugin/xtls/build.gradle.kts b/plugin/xtls/build.gradle.kts
new file mode 100644
index 00000000..4c98660b
--- /dev/null
+++ b/plugin/xtls/build.gradle.kts
@@ -0,0 +1,5 @@
+plugins {
+ id("com.android.application")
+}
+
+setupPlugin("xtls")
\ No newline at end of file
diff --git a/xtls-plugin/src/main/AndroidManifest.xml b/plugin/xtls/src/main/AndroidManifest.xml
similarity index 93%
rename from xtls-plugin/src/main/AndroidManifest.xml
rename to plugin/xtls/src/main/AndroidManifest.xml
index 1d49f075..594cff57 100644
--- a/xtls-plugin/src/main/AndroidManifest.xml
+++ b/plugin/xtls/src/main/AndroidManifest.xml
@@ -7,6 +7,8 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..7353dbd1
--- /dev/null
+++ b/plugin/xtls/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher.png b/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..75485c3e
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher_round.png b/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..d23b4a99
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher.png b/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..ae6e8dbb
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher_round.png b/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..2c363bb9
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher.png b/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..ebae5eb6
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..44fb2929
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher.png b/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..fb1b7ffd
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..bc08db48
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..61f37751
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..649bcf33
Binary files /dev/null and b/plugin/xtls/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/plugin/xtls/src/main/res/values/ic_launcher_background.xml b/plugin/xtls/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..c58f6bcb
--- /dev/null
+++ b/plugin/xtls/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #E91E63
+
\ No newline at end of file
diff --git a/pt-plugin/build.gradle b/pt-plugin/build.gradle
deleted file mode 100644
index 07c4ab56..00000000
--- a/pt-plugin/build.gradle
+++ /dev/null
@@ -1,103 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId "io.nekohasekai.sagernet.plugin.pingtunnel"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 1
- versionName "2.5"
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "../plugin/proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("pt-", "pingtunnel-")
- .replace("plugin", "plugin-" + variant.versionName)
- .replace("-release", "")
- }
- }
-
-
-}
-
-dependencies {
- implementation project(":plugin")
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-}
\ No newline at end of file
diff --git a/rb-plugin/build.gradle b/rb-plugin/build.gradle
deleted file mode 100644
index e6288e75..00000000
--- a/rb-plugin/build.gradle
+++ /dev/null
@@ -1,103 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId "io.nekohasekai.sagernet.plugin.relaybaton"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 2
- versionName "0.6.0-ech-1"
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "../plugin/proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("rb-", "relaybaton-")
- .replace("plugin", "plugin-" + variant.versionName)
- .replace("-release", "")
- }
- }
-
-
-}
-
-dependencies {
- implementation project(":plugin")
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-}
\ No newline at end of file
diff --git a/repositories.gradle.kts b/repositories.gradle.kts
new file mode 100644
index 00000000..006ec04a
--- /dev/null
+++ b/repositories.gradle.kts
@@ -0,0 +1,11 @@
+rootProject.extra.apply {
+ set("androidPluginVersion", "4.2.0")
+ set("kotlinVersion", "1.5.0")
+ set("playPublisherVersion", "3.4.0-agp4.2")
+}
+
+repositories {
+ google()
+ mavenCentral()
+ maven(url = "https://jitpack.io")
+}
diff --git a/sager.properties b/sager.properties
index 0562172a..68de65c5 100644
--- a/sager.properties
+++ b/sager.properties
@@ -17,4 +17,19 @@
#
PACKAGE_NAME=io.nekohasekai.sagernet
VERSION_NAME=0.1-rc13
-VERSION_CODE=40
\ No newline at end of file
+VERSION_CODE=40
+
+NAIVE_VERSION_NAME=90.0.4430.85-10
+NAIVE_VERSION=1
+
+PINGTUNNEL_VERSION_NAME=2.5
+PINGTUNNEL_VERSION=1
+
+RELAYBATON_VERSION_NAME=0.6.0-ech-1
+RELAYBATON_VERSION=2
+
+TROJAN_GO_VERSION_NAME=0.10.0
+TROJAN_GO_VERSION=1
+
+XTLS_VERSION_NAME=1.4.2
+XTLS_VERSION=1
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 52cf43e0..00000000
--- a/settings.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-include ':app'
-rootProject.name = "SagerNet"
-
-include ':core'
-include ':shadowsocks'
-include ':shadowsocksr'
-
-include ':plugin'
-include ':xtls-plugin'
-include ':trojan-go-plugin'
-include ':naive-plugin'
-include ':pt-plugin'
-include ':rb-plugin'
-
-include ':preferencex'
-include ':preferencex-ringtone'
-include ':preferencex-simplemenu'
-include ':flexbox'
-include ':colorpicker'
-include ':preferencex-colorpicker'
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 00000000..cacb7b23
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,20 @@
+include(":library:core")
+include(":library:shadowsocks")
+include(":library:shadowsocksr")
+
+include(":plugin:api")
+include(":plugin:xtls")
+include(":plugin:trojan-go")
+include(":plugin:naive")
+include(":plugin:pingtunnel")
+include(":plugin:relaybaton")
+
+include(":external:preferencex")
+include(":external:preferencex-ringtone")
+include(":external:preferencex-simplemenu")
+include(":external:flexbox")
+include(":external:colorpicker")
+include(":external:preferencex-colorpicker")
+
+include(":app")
+rootProject.name = "SagerNet"
\ No newline at end of file
diff --git a/shadowsocksr/build.gradle b/shadowsocksr/build.gradle
deleted file mode 100644
index 6fe1930f..00000000
--- a/shadowsocksr/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-plugins {
- id 'com.android.library'
-}
-
-android {
- compileSdkVersion 30
- buildToolsVersion '30.0.3'
-
- defaultConfig {
- minSdkVersion 16
- targetSdkVersion 30
- versionCode 1
- versionName "1.0"
-
- externalNativeBuild {
- ndkBuild {
- abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
- arguments "NDK_APPLICATION_MK:=src/main/jni/Application.mk", "APP_PLATFORM:=android-21", "--jobs=${Runtime.getRuntime().availableProcessors()}"
- }
- }
- }
-
- externalNativeBuild {
- ndkBuild {
- path 'src/main/jni/Android.mk'
- }
- }
-
-}
\ No newline at end of file
diff --git a/trojan-go-plugin/build.gradle b/trojan-go-plugin/build.gradle
deleted file mode 100644
index b0ae03ed..00000000
--- a/trojan-go-plugin/build.gradle
+++ /dev/null
@@ -1,102 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId "io.nekohasekai.sagernet.plugin.trojan_go"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 1
- versionName "0.10.0"
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "../plugin/proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("plugin", "plugin-" + variant.versionName)
- .replace("-release", "")
- }
- }
-
-
-}
-
-dependencies {
- implementation project(":plugin")
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-}
\ No newline at end of file
diff --git a/xtls-plugin/build.gradle b/xtls-plugin/build.gradle
deleted file mode 100644
index ae3b6a98..00000000
--- a/xtls-plugin/build.gradle
+++ /dev/null
@@ -1,102 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "kotlin-parcelize"
-}
-
-
-def keystorePwd = null
-def alias = null
-def pwd = null
-
-Properties properties
-def base64 = System.getenv("LOCAL_PROPERTIES")
-if (base64 != null && !base64.isBlank()) {
- properties = new Properties()
- properties.load(new ByteArrayInputStream(Base64.decoder.decode(base64)))
-} else if (project.rootProject.file("local.properties").exists()) {
- properties = new Properties()
- properties.load(project.rootProject.file("local.properties").newDataInputStream())
-}
-
-if (properties != null) {
- keystorePwd = properties.getProperty("KEYSTORE_PASS")
- alias = properties.getProperty("ALIAS_NAME")
- pwd = properties.getProperty("ALIAS_PASS")
-}
-
-keystorePwd = keystorePwd ?: System.getenv("KEYSTORE_PASS")
-alias = alias ?: System.getenv("ALIAS_NAME")
-pwd = pwd ?: System.getenv("ALIAS_PASS")
-
-android {
- compileSdkVersion 30
- buildToolsVersion "30.0.3"
-
- defaultConfig {
- applicationId "io.nekohasekai.sagernet.plugin.xtls"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 1
- versionName "1.4.2"
- }
-
- signingConfigs {
- release {
- storeFile rootProject.file("release.keystore")
- storePassword keystorePwd
- keyAlias alias
- keyPassword pwd
- }
- }
-
- buildTypes {
- release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "../plugin/proguard-rules.pro"
- signingConfig keystorePwd == null ? signingConfigs.debug : signingConfigs.release
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- coreLibraryDesugaringEnabled true
- }
-
- kotlinOptions {
- jvmTarget = "1.8"
- }
-
- packagingOptions {
- exclude "/META-INF/*.version"
- exclude "/META-INF/*.kotlin_module"
- exclude "/META-INF/native-image/**"
- exclude "/META-INF/INDEX.LIST"
- exclude "DebugProbesKt.bin"
- exclude "/kotlin/**"
- }
-
- splits {
- abi {
- enable true
- universalApk false
- }
- }
-
- applicationVariants.all { variant ->
- variant.outputs.all { output ->
- outputFileName = outputFileName
- .replace("plugin", "plugin-" + variant.versionName)
- .replace("-release", "")
-
- }
- }
-
-}
-
-dependencies {
- implementation project(":plugin")
- coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
-}
\ No newline at end of file