From d8c3ddca167002a9e63db9ee42150a4432ece723 Mon Sep 17 00:00:00 2001 From: Nicola Busanello Date: Wed, 15 Jun 2022 10:43:57 +0200 Subject: [PATCH 1/2] add armv7 support --- .../generate-android-bindings.gradle.kts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-android-bindings.gradle.kts b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-android-bindings.gradle.kts index 202a5a2..e81c60a 100644 --- a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-android-bindings.gradle.kts +++ b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-android-bindings.gradle.kts @@ -68,6 +68,36 @@ val buildAndroidX86_64Binary by tasks.register("buildAndroidX86_64Binary") } } +// armeabi-v7a version of the library for older 32-bit Android hardware +val buildAndroidArmv7Binary by tasks.register("buildAndroidArmv7Binary") { + + workingDir("${project.projectDir}/../bdk-ffi") + val cargoArgs: MutableList = mutableListOf("build", "--release", "--target", "armv7-linux-androideabi") + + executable("cargo") + args(cargoArgs) + + // if ANDROID_NDK_ROOT is not set then set it to github actions default + if (System.getenv("ANDROID_NDK_ROOT") == null) { + environment( + Pair("ANDROID_NDK_ROOT", "${System.getenv("ANDROID_SDK_ROOT")}/ndk-bundle") + ) + } + + environment( + // add build toolchain to PATH + Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"), + + Pair("CFLAGS", "-D__ANDROID_API__=21"), + Pair("CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER", "armv7a-linux-androideabi21-clang"), + Pair("CC", "armv7a-linux-androideabi21-clang") + ) + + doLast { + println("Native library for bdk-android on armv7 built successfully") + } +} + // move the native libs build by cargo from bdk-ffi/target//release/ // to their place in the bdk-android library // the task only copies the available binaries built using the buildAndroidBinary tasks @@ -85,6 +115,10 @@ val moveNativeAndroidLibs by tasks.register("moveNativeAndroidLibs") { from("${project.projectDir}/../bdk-ffi/target/x86_64-linux-android/release/libbdkffi.so") } + into("armeabi-v7a") { + from("${project.projectDir}/../bdk-ffi/target/armv7-linux-androideabi/release/libbdkffi.so") + } + doLast { println("Native binaries for Android moved to ./android/src/main/jniLibs/") } @@ -112,6 +146,7 @@ tasks.register("buildAndroidLib") { dependsOn( buildAndroidAarch64Binary, buildAndroidX86_64Binary, + buildAndroidArmv7Binary, moveNativeAndroidLibs, generateAndroidBindings ) From 860130f08c8b75a01a86bdbea769e416f6b1e471 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Wed, 15 Jun 2022 16:37:20 -0300 Subject: [PATCH 2/2] Add armv7-linux-androideabi to CI Rust android targets --- .github/workflows/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 38b4e7a..089651f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -33,7 +33,7 @@ jobs: java-version: 11 - name: Install rust android targets - run: rustup target add x86_64-linux-android aarch64-linux-android + run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi - name: Install uniffi-bindgen run: cargo install uniffi_bindgen --version 0.16.0