name: Debug build on: push: branches: - dev paths-ignore: - '**.md' - '.github/**' - '!.github/workflows/debug.yml' pull_request: branches: - dev workflow_dispatch: inputs: artifacts: description: 'y, if need artifacts' required: false jobs: ffmpeg: name: Native Build (FFmpeg) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: git submodule status TMessagesProj/jni/ffmpeg > ffmpeg_status - name: FFmpeg Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/jni/ffmpeg/build key: ${{ hashFiles('ffmpeg_status', 'TMessagesProj/jni/*_ffmpeg.sh') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: | ./run init libs ffmpeg boringssl: name: Native Build (BoringSSL) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: git submodule status TMessagesProj/jni/boringssl > boringssl_status - name: BoringSSL Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/jni/boringssl/build key: ${{ hashFiles('boringssl_status') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: | ./run init action boringssl ./run init libs boringssl native: name: Native Build (Telegram) runs-on: ubuntu-latest needs: - ffmpeg - boringssl strategy: matrix: flavor: - armeabi-v7a - arm64-v8a - x86 - x86_64 steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: | git submodule status TMessagesProj/jni/ffmpeg > ffmpeg_status git submodule status TMessagesProj/jni/boringssl > boringssl_status - name: Native Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/src/main/libs key: ${{ hashFiles('TMessagesProj/jni/**', 'ffmpeg_status', 'boringssl_status') }}-${{ matrix.flavor }} - name: Checkout Library if: steps.cache.outputs.cache-hit != 'true' run: | git submodule update --init 'TMessagesProj/jni/*' - name: FFmpeg Cache uses: actions/cache@v2 if: steps.cache.outputs.cache-hit != 'true' with: path: | TMessagesProj/jni/ffmpeg/build key: ${{ hashFiles('ffmpeg_status', 'TMessagesProj/jni/*_ffmpeg.sh') }} - name: BoringSSL Cache uses: actions/cache@v2 if: steps.cache.outputs.cache-hit != 'true' with: path: | TMessagesProj/jni/boringssl/build key: ${{ hashFiles('boringssl_status') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Fix BoringSSL if: steps.cache.outputs.cache-hit != 'true' run: | cd TMessagesProj/jni ./patch_boringssl.sh - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: | export NATIVE_TARGET="${{ matrix.flavor }}" ./run libs native v2ray: name: Native Build (V2ray) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: git submodule status v2ray > v2ray_status - name: V2ray Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/libv2ray.aar key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Install Golang uses: actions/setup-go@v2 if: steps.cache.outputs.cache-hit != 'true' with: go-version: 1.16 - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: ./run libs v2ray shadowsocks: name: Native Build (Shadowsocks) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: git submodule status ss-rust/src/main/rust/shadowsocks-rust > shadowsocks_status - name: Shadowsocks Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/ss-rust-release.aar key: ${{ hashFiles('shadowsocks_status') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Install Rust if: steps.cache.outputs.cache-hit != 'true' run: ./run init action shadowsocks - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: ./run libs shadowsocks shadowsocksr: name: Native Build (ShadowsocksR) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Fetch Status run: git submodule status 'ssr-libev/*' > shadowsocksr_status - name: ShadowsocksR Cache id: cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/ssr-libev-release.aar key: ${{ hashFiles('shadowsocksr_status') }} - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 if: steps.cache.outputs.cache-hit != 'true' - name: Install NDK if: steps.cache.outputs.cache-hit != 'true' run: | echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "ndk;21.4.7075529" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/21.4.7075529" >> local.properties - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: ./run libs ssr build: name: Gradle Build runs-on: ubuntu-latest needs: - native - v2ray - shadowsocks - shadowsocksr strategy: matrix: flavor: - MiniRelease - MiniReleaseNoGcm - MiniAppleEmojiRelease - MiniAppleEmojiReleaseNoGcm - FullRelease - FullReleaseNoGcm - FullAppleEmojiRelease - FullAppleEmojiReleaseNoGcm steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Android SDK Tools uses: android-actions/setup-android@v2 - name: Fetch Status run: | git submodule status TMessagesProj/jni/ffmpeg > ffmpeg_status git submodule status TMessagesProj/jni/boringssl > boringssl_status git submodule status ss-rust/src/main/rust/shadowsocks-rust > shadowsocks_status git submodule status 'ssr-libev/*' > shadowsocksr_status git submodule status v2ray > v2ray_status - name: Native Cache (armeabi-v7a) uses: actions/cache@v2 with: path: | TMessagesProj/src/main/libs key: ${{ hashFiles('TMessagesProj/jni/**', 'ffmpeg_status', 'boringssl_status') }}-armeabi-v7a - name: Native Cache (arm64-v8a) uses: actions/cache@v2 with: path: | TMessagesProj/src/main/libs key: ${{ hashFiles('TMessagesProj/jni/**', 'ffmpeg_status', 'boringssl_status') }}-arm64-v8a - name: Native Cache (x86) uses: actions/cache@v2 with: path: | TMessagesProj/src/main/libs key: ${{ hashFiles('TMessagesProj/jni/**', 'ffmpeg_status', 'boringssl_status') }}-x86 - name: Native Cache (x86_64) uses: actions/cache@v2 with: path: | TMessagesProj/src/main/libs key: ${{ hashFiles('TMessagesProj/jni/**', 'ffmpeg_status', 'boringssl_status') }}-x86_64 - name: V2ray Cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/libv2ray.aar key: ${{ hashFiles('bin/libs/v2ray/*', 'v2ray_status') }} - name: Shadowsocks Cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/ss-rust-release.aar key: ${{ hashFiles('shadowsocks_status') }} - name: ShadowsocksR Cache uses: actions/cache@v2 with: path: | TMessagesProj/libs/ssr-libev-release.aar key: ${{ hashFiles('shadowsocksr_status') }} - name: Configure Gradle run: | sed -i -e "s/16384/6144/g" gradle.properties echo "sdk.dir=${ANDROID_HOME}" >> local.properties echo "ndk.dir=${ANDROID_HOME}/ndk-bundle" >> local.properties - name: Fix Compile SDK 31.0.0 run: ./run init env - name: Gradle cache uses: actions/cache@v2 with: path: ~/.gradle key: gradle-${{ hashFiles('**/*.gradle') }} - name: Debug Build run: | export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" export DEBUG_BUILD=true ./gradlew TMessagesProj:assemble${{ matrix.flavor }} echo "APK_FILE=$(find TMessagesProj/build/outputs/apk -name '*arm64-v8a*.apk')" >> $GITHUB_ENV echo "APK_FILE_ARMV7=$(find TMessagesProj/build/outputs/apk -name '*armeabi*.apk')" >> $GITHUB_ENV echo "APK_FILE_X86=$(find TMessagesProj/build/outputs/apk -name '*x86-*.apk')" >> $GITHUB_ENV echo "APK_FILE_X64=$(find TMessagesProj/build/outputs/apk -name '*x86_64*.apk')" >> $GITHUB_ENV - uses: actions/upload-artifact@v2 if: github.event.inputs.artifacts == 'y' name: Upload apk (arm64-v8a) with: name: NekoX-${{ matrix.flavor }}-arm64-v8a path: ${{ env.APK_FILE }} - uses: actions/upload-artifact@v2 if: github.event.inputs.artifacts == 'y' name: Upload apk (armeabi-v7a) with: name: NekoX-${{ matrix.flavor }}-armeabi-v7a path: ${{ env.APK_FILE_ARMV7 }} - uses: actions/upload-artifact@v2 if: github.event.inputs.artifacts == 'y' name: Upload apk (x86_64) with: name: NekoX-${{ matrix.flavor }}-x86_64 path: ${{ env.APK_FILE_X64 }} - uses: actions/upload-artifact@v2 if: github.event.inputs.artifacts == 'y' name: Upload apk (x86) with: name: NekoX-${{ matrix.flavor }}-x86 path: ${{ env.APK_FILE_X86 }}