From 4e1b41458d6eb8c0e03d6ae31c364d5e085259b0 Mon Sep 17 00:00:00 2001 From: Zane Schepke Date: Fri, 23 Feb 2024 06:44:04 -0500 Subject: [PATCH] fix: ndk pipeline setup --- .github/workflows/pre-release.yml | 10 ++++++++-- .github/workflows/release.yml | 10 ++++++++-- fastlane/metadata/android/en-US/changelogs/3.txt | 4 ++++ vpn-client/build.gradle.kts | 11 ++++++++--- vpn-client/src/main/scripts/build-libs.sh | 5 +++-- 5 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/3.txt diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 91bb9cf..54f1b21 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -44,10 +44,14 @@ jobs: x86_64-linux-android \ i686-linux-android - name: Setup Android SDK - uses: android-actions/setup-android@v3 + uses: nttld/setup-ndk@v1 + with: + ndk-version: r25c - name: Add cargo-ndk run: | cargo install cargo-ndk + - name: Install Protoc + uses: arduino/setup-protoc@v3 # Here we need to decode keystore.jks from base64 string and place it # in the folder specified in the release signing configuration - name: Decode Keystore @@ -70,7 +74,9 @@ jobs: # Build and sign APK ("-x test" argument is used to skip tests) - name: Build Release APK - run: ./gradlew :app:assembleRelease -x test + run: ./gradlew :app:assembleRelease -x test --stacktrace + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} # get release apk path # can be fdroid or general, general for now diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cfc0d79..393e912 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,10 +45,14 @@ jobs: x86_64-linux-android \ i686-linux-android - name: Setup Android SDK - uses: android-actions/setup-android@v3 + uses: nttld/setup-ndk@v1 + with: + ndk-version: r25c - name: Add cargo-ndk run: | cargo install cargo-ndk + - name: Install Protoc + uses: arduino/setup-protoc@v3 # Here we need to decode keystore.jks from base64 string and place it # in the folder specified in the release signing configuration - name: Decode Keystore @@ -70,7 +74,9 @@ jobs: # Build and sign APK ("-x test" argument is used to skip tests) - name: Build Release APK - run: ./gradlew :app:assembleRelease -x test + run: ./gradlew :app:assembleRelease -x test --stacktrace + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} # get release apk path # can be fdroid or general, general for now diff --git a/fastlane/metadata/android/en-US/changelogs/3.txt b/fastlane/metadata/android/en-US/changelogs/3.txt new file mode 100644 index 0000000..b52fd9e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3.txt @@ -0,0 +1,4 @@ +What's new: +- Add vpn lib integration +- Splash screen +- Country list \ No newline at end of file diff --git a/vpn-client/build.gradle.kts b/vpn-client/build.gradle.kts index 5f61d42..86c83a4 100644 --- a/vpn-client/build.gradle.kts +++ b/vpn-client/build.gradle.kts @@ -1,5 +1,5 @@ import com.android.build.gradle.internal.tasks.factory.dependsOn -import java.util.Locale +import org.gradle.kotlin.dsl.support.listFilesOrdered plugins { alias(libs.plugins.android.library) @@ -10,6 +10,10 @@ plugins { android { + android { + ndkVersion = sdkDirectory.resolve("ndk").listFilesOrdered().last().name + } + project.tasks.preBuild.dependsOn(Constants.BUILD_LIB_TASK) namespace = "${Constants.NAMESPACE}.${Constants.VPN_LIB_NAME}" @@ -60,11 +64,12 @@ dependencies { tasks.register(Constants.BUILD_LIB_TASK) { - val ndkPath = android.ndkDirectory.path ?: error("No NDK install found") + val ndkPath = android.sdkDirectory.resolve("ndk").listFilesOrdered().last().path ?: System.getenv("ANDROID_NDK_HOME") + commandLine("echo", "NDK HOME: $ndkPath") val script = "${projectDir.path}/src/main/scripts/build-libs.sh" //TODO find a better way to limit builds if(file("${projectDir.path}/src/main/jniLibs/arm64-v8a/libnym_vpn_lib.so").exists() && file("${projectDir.path}/src/main/jniLibs/arm64-v8a/libwg.so").exists()) { commandLine("echo", "Libs already compiled") - } else commandLine("sh").args(script, ndkPath) + } else commandLine("bash").args(script, ndkPath) } \ No newline at end of file diff --git a/vpn-client/src/main/scripts/build-libs.sh b/vpn-client/src/main/scripts/build-libs.sh index ebaff7f..9c2c0f2 100644 --- a/vpn-client/src/main/scripts/build-libs.sh +++ b/vpn-client/src/main/scripts/build-libs.sh @@ -6,8 +6,9 @@ echo "NDK_HOME: $1" #fix to work with different OS archDir=$(basename $1/toolchains/llvm/prebuilt/*/) echo "archdir: ${archDir}" -export NDK_TOOLCHAIN_DIR="$1/toolchains/llvm/prebuilt/${archDir[0]}/bin" -sh $PWD/src/tools/nym-vpn-client/wireguard/libwg/build-android.sh +export ANDROID_NDK_HOME="$1" +export NDK_TOOLCHAIN_DIR="$1/toolchains/llvm/prebuilt/${archDir}/bin" +bash $PWD/src/tools/nym-vpn-client/wireguard/libwg/build-android.sh echo "Building nym-vpn-lib dep" (cd $PWD/src/tools/nym-vpn-client/nym-vpn-lib; cargo ndk -t armeabi-v7a -t arm64-v8a -t i686-linux-android -t x86_64-linux-android -o ../../../main/jniLibs build --release) #mv wireguard