Skip to content

Commit 78c06ee

Browse files
Fix Android build in CI
1 parent b8b60dd commit 78c06ee

File tree

3 files changed

+32
-14
lines changed

3 files changed

+32
-14
lines changed

.github/workflows/test-android.yaml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ env:
1818

1919
jobs:
2020
build:
21-
runs-on: ubuntu-22.04
21+
# The build cannot be done on the ubuntu-22.04 image, see issue #346
22+
runs-on: ubuntu-20.04
2223
steps:
2324
- name: "Install Android NDK 21.4.7075529"
2425
run: |
@@ -45,9 +46,17 @@ jobs:
4546
distribution: temurin
4647
java-version: 11
4748

49+
- name: "Set default Rust version to 1.67.0"
50+
run: rustup default 1.67.0
51+
4852
- name: "Install Rust Android targets"
4953
run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi
5054

55+
- name: "Build Android library"
56+
run: |
57+
cd bdk-android
58+
./gradlew buildAndroidLib
59+
5160
# There are currently no unit tests for bdk-android and the integration tests require the macOS image
5261
# which is not working with the older NDK version we are using, so for now we just make sure that the library builds.
5362
# - name: "Run Android unit tests"

bdk-android/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,5 @@ For some older versions of macOS, Android Studio will recommend users install th
114114

115115
[`bdk`]: https://github.com/bitcoindevkit/bdk
116116
[`bdk-ffi`]: https://github.com/bitcoindevkit/bdk-ffi
117+
118+
Temporary line: needed to run CI

bdk-android/plugins/src/main/kotlin/org/bitcoindevkit/plugins/UniFfiAndroidPlugin.kt

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
2121
val buildAndroidAarch64Binary by tasks.register<Exec>("buildAndroidAarch64Binary") {
2222

2323
workingDir("${projectDir}/../../bdk-ffi")
24-
val cargoArgs: List<String> = listOf("build", "--profile", "release-smaller", "--target", "aarch64-linux-android")
24+
val cargoArgs: MutableList<String> =
25+
mutableListOf("build", "--profile", "release-smaller", "--target", "aarch64-linux-android")
2526

2627
executable("cargo")
2728
args(cargoArgs)
@@ -35,9 +36,10 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
3536

3637
environment(
3738
// add build toolchain to PATH
38-
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
39-
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
40-
Pair("AR", "llvm-ar"),
39+
Pair("PATH",
40+
"${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
41+
42+
Pair("CFLAGS", "-D__ANDROID_API__=21"),
4143
Pair("CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER", "aarch64-linux-android21-clang"),
4244
Pair("CC", "aarch64-linux-android21-clang")
4345
)
@@ -51,7 +53,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
5153
val buildAndroidX86_64Binary by tasks.register<Exec>("buildAndroidX86_64Binary") {
5254

5355
workingDir("${project.projectDir}/../../bdk-ffi")
54-
val cargoArgs: List<String> = listOf("build", "--profile", "release-smaller", "--target", "x86_64-linux-android")
56+
val cargoArgs: MutableList<String> =
57+
mutableListOf("build", "--profile", "release-smaller", "--target", "x86_64-linux-android")
5558

5659
executable("cargo")
5760
args(cargoArgs)
@@ -65,9 +68,10 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
6568

6669
environment(
6770
// add build toolchain to PATH
68-
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
69-
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
70-
Pair("AR", "llvm-ar"),
71+
Pair("PATH",
72+
"${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
73+
74+
Pair("CFLAGS", "-D__ANDROID_API__=21"),
7175
Pair("CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER", "x86_64-linux-android21-clang"),
7276
Pair("CC", "x86_64-linux-android21-clang")
7377
)
@@ -81,7 +85,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
8185
val buildAndroidArmv7Binary by tasks.register<Exec>("buildAndroidArmv7Binary") {
8286

8387
workingDir("${project.projectDir}/../../bdk-ffi")
84-
val cargoArgs: List<String> = listOf("build", "--profile", "release-smaller", "--target", "armv7-linux-androideabi")
88+
val cargoArgs: MutableList<String> =
89+
mutableListOf("build", "--profile", "release-smaller", "--target", "armv7-linux-androideabi")
8590

8691
executable("cargo")
8792
args(cargoArgs)
@@ -95,10 +100,12 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
95100

96101
environment(
97102
// add build toolchain to PATH
98-
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
99-
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
100-
Pair("AR", "llvm-ar"),
101-
Pair("CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER", "armv7a-linux-androideabi21-clang"),
103+
Pair("PATH",
104+
"${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
105+
106+
Pair("CFLAGS", "-D__ANDROID_API__=21"),
107+
Pair("CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER",
108+
"armv7a-linux-androideabi21-clang"),
102109
Pair("CC", "armv7a-linux-androideabi21-clang")
103110
)
104111

0 commit comments

Comments
 (0)