diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index da44b543..876d554f 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -138,9 +138,12 @@ jobs: echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties ./run libs trojan_go ./gradlew trojan-go-plugin:assembleDebug - naive: - name: Native Build (NaïveProxy) + naive_libs: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arch: [ armeabi-v7a, arm64-v8a, x86, x86_64 ] steps: - name: Checkout uses: actions/checkout@v2 @@ -151,8 +154,8 @@ jobs: uses: actions/cache@v2 with: path: | - naive-plugin/src/main/jniLibs - key: ${{ hashFiles('bin/libs/naive.sh', 'naive_status') }} + naive-plugin/src/main/jniLibs/${{ matrix.arch }} + key: naive-${{ matrix.arch }}-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} - name: Gradle cache uses: actions/cache@v2 if: steps.cache.outputs.cache-hit != 'true' @@ -165,7 +168,58 @@ 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 + ./run libs naive ${{ matrix.arch }} + naive: + needs: naive_libs + name: Native Build (NaïveProxy) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Fetch Status + run: git submodule status 'naive-plugin/*' > naive_status + - name: Naive Cache (armeabi-v7a) + id: cache + uses: actions/cache@v2 + with: + path: | + naive-plugin/src/main/jniLibs/armeabi-v7a + key: naive-armeabi-v7a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + - name: Naive Cache (arm64-v8a) + id: cache1 + if: steps.cache.outputs.cache-hit != 'true' + uses: actions/cache@v2 + with: + path: | + naive-plugin/src/main/jniLibs/arm64-v8a + key: naive-arm64-v8a-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + - name: Naive Cache (x86) + id: cache2 + if: steps.cache1.outputs.cache-hit != 'true' + uses: actions/cache@v2 + with: + path: | + naive-plugin/src/main/jniLibs/x86 + key: naive-x86-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + - name: Naive Cache (x86_64) + id: cache3 + if: steps.cache2.outputs.cache-hit != 'true' + uses: actions/cache@v2 + with: + path: | + naive-plugin/src/main/jniLibs/x86_64 + key: naive-x86_64-${{ hashFiles('bin/libs/naive/*', 'naive_status') }} + - name: Gradle cache + uses: actions/cache@v2 + if: steps.cache3.outputs.cache-hit != 'true' + with: + path: ~/.gradle + key: native-${{ hashFiles('**/*.gradle') }} + - name: Native Build + if: steps.cache3.outputs.cache-hit != 'true' + run: | + echo "sdk.dir=${ANDROID_HOME}" > local.properties + echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties ./gradlew naive-plugin:assembleDebug shadowsocks: name: Native Build (Shadowsocks) diff --git a/bin/init/action/naive.sh b/bin/init/action/naive.sh index 49da9567..375bca40 100755 --- a/bin/init/action/naive.sh +++ b/bin/init/action/naive.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash sudo apt install ninja-build pkg-config qemu-user ccache -sudo apt remove libc6-i386 --autoremove \ No newline at end of file +sudo apt remove libc6-i386 --autoremove diff --git a/bin/libs/naive/arm64-v8a.sh b/bin/libs/naive/arm64-v8a.sh new file mode 100755 index 00000000..4bf8a7d3 --- /dev/null +++ b/bin/libs/naive/arm64-v8a.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source "bin/init/env.sh" + +ROOT="$PROJECT/naive-plugin/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 + +export EXTRA_FLAGS='target_os="android" target_cpu="arm64"' +./get-clang.sh +./build.sh +DIR="$ROOT/arm64-v8a" +rm -rf $DIR +mkdir -p $DIR +cp out/Release/naive $DIR/$LIB_OUTPUT diff --git a/bin/libs/naive/armeabi-v7a.sh b/bin/libs/naive/armeabi-v7a.sh new file mode 100755 index 00000000..f938e593 --- /dev/null +++ b/bin/libs/naive/armeabi-v7a.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source "bin/init/env.sh" + +ROOT="$PROJECT/naive-plugin/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 + +export EXTRA_FLAGS='target_os="android" target_cpu="arm"' +./get-clang.sh +./build.sh +DIR="$ROOT/armeabi-v7a" +rm -rf $DIR +mkdir -p $DIR +cp out/Release/naive $DIR/$LIB_OUTPUT diff --git a/bin/libs/naive/x86.sh b/bin/libs/naive/x86.sh new file mode 100755 index 00000000..242268ab --- /dev/null +++ b/bin/libs/naive/x86.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source "bin/init/env.sh" + +ROOT="$PROJECT/naive-plugin/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 + +export EXTRA_FLAGS='target_os="android" target_cpu="x86"' +./get-clang.sh +./build.sh +DIR="$ROOT/x86" +rm -rf $DIR +mkdir -p $DIR +cp out/Release/naive $DIR/$LIB_OUTPUT diff --git a/bin/libs/naive/x86_64.sh b/bin/libs/naive/x86_64.sh new file mode 100755 index 00000000..e553bf62 --- /dev/null +++ b/bin/libs/naive/x86_64.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source "bin/init/env.sh" + +ROOT="$PROJECT/naive-plugin/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 + +export EXTRA_FLAGS='target_os="android" target_cpu="x64"' +./get-clang.sh +./build.sh +DIR="$ROOT/x86_64" +rm -rf $DIR +mkdir -p $DIR +cp out/Release/naive $DIR/$LIB_OUTPUT