Skip to content

Commit 3243870

Browse files
Use emulator to run connected tests for bdk-android in CI
1 parent d48bacd commit 3243870

File tree

3 files changed

+37
-14
lines changed

3 files changed

+37
-14
lines changed

.github/workflows/test-android.yaml

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,25 @@ on:
1010
- "bdk-android/**"
1111

1212
env:
13-
ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/21.4.7075529
13+
ANDROID_NDK_ROOT: /Users/runner/Library/Android/sdk/ndk/25.2.9519653
14+
# ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/21.4.7075529
1415
# By default, the new ubuntu-20.04 images use the following ANDROID_NDK_ROOT
1516
# ANDROID_NDK_ROOT: /usr/local/lib/android/sdk/ndk/25.0.8775105
1617

1718
jobs:
1819
build:
19-
runs-on: ubuntu-20.04
20+
runs-on: macos-12
21+
# runs-on: ubuntu-20.04
2022
steps:
21-
- name: "Install Android NDK 21.4.7075529"
22-
run: |
23-
ANDROID_ROOT=/usr/local/lib/android
24-
ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
25-
SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
26-
echo "y" | $SDKMANAGER "ndk;21.4.7075529"
23+
# - name: Install Android NDK 21.4.7075529
24+
# run: |
25+
# ANDROID_HOME=$HOME/Library/Android/sdk
26+
# SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager
27+
# echo y | $SDKMANAGER "ndk;21.4.7075529"
28+
# ANDROID_ROOT=/usr/local/lib/android
29+
# ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
30+
# SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
31+
# echo "y" | $SDKMANAGER "ndk;21.4.7075529"
2732

2833
- name: "Check out PR branch"
2934
uses: actions/checkout@v2
@@ -46,6 +51,19 @@ jobs:
4651
- name: "Install Rust Android targets"
4752
run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi
4853

54+
- name: "Build bdk-android library"
55+
run: |
56+
cd bdk-android
57+
./gradlew buildAndroidLib
58+
59+
- name: "Run connected tests"
60+
uses: ReactiveCircus/android-emulator-runner@v2
61+
with:
62+
api-level: 31
63+
target: google_apis
64+
arch: x86_64
65+
script: ./gradlew connectedAndroidTest
66+
4967
- name: "Run Android tests"
5068
run: |
5169
cd bdk-android

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 change to run the tests

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ 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", "--features", "uniffi/cli", "--profile", "release-smaller", "--target", "aarch64-linux-android")
24+
val cargoArgs: MutableList<String> = mutableListOf("build", "--profile", "release-smaller", "--target", "aarch64-linux-android")
2525

2626
executable("cargo")
2727
args(cargoArgs)
@@ -36,7 +36,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
3636
environment(
3737
// add build toolchain to PATH
3838
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
39-
Pair("CFLAGS", "-D__ANDROID_API__=21"),
39+
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
40+
Pair("AR", "llvm-ar"),
4041
Pair("CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER", "aarch64-linux-android21-clang"),
4142
Pair("CC", "aarch64-linux-android21-clang")
4243
)
@@ -50,7 +51,7 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
5051
val buildAndroidX86_64Binary by tasks.register<Exec>("buildAndroidX86_64Binary") {
5152

5253
workingDir("${project.projectDir}/../../bdk-ffi")
53-
val cargoArgs: List<String> = listOf("build", "--features", "uniffi/cli", "--profile", "release-smaller", "--target", "x86_64-linux-android")
54+
val cargoArgs: MutableList<String> = mutableListOf("build", "--profile", "release-smaller", "--target", "x86_64-linux-android")
5455

5556
executable("cargo")
5657
args(cargoArgs)
@@ -65,7 +66,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
6566
environment(
6667
// add build toolchain to PATH
6768
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
68-
Pair("CFLAGS", "-D__ANDROID_API__=21"),
69+
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
70+
Pair("AR", "llvm-ar"),
6971
Pair("CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER", "x86_64-linux-android21-clang"),
7072
Pair("CC", "x86_64-linux-android21-clang")
7173
)
@@ -79,7 +81,7 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
7981
val buildAndroidArmv7Binary by tasks.register<Exec>("buildAndroidArmv7Binary") {
8082

8183
workingDir("${project.projectDir}/../../bdk-ffi")
82-
val cargoArgs: List<String> = listOf("build", "--features", "uniffi/cli", "--profile", "release-smaller", "--target", "armv7-linux-androideabi")
84+
val cargoArgs: MutableList<String> = mutableListOf("build", "--profile", "release-smaller", "--target", "armv7-linux-androideabi")
8385

8486
executable("cargo")
8587
args(cargoArgs)
@@ -94,7 +96,8 @@ internal class UniFfiAndroidPlugin : Plugin<Project> {
9496
environment(
9597
// add build toolchain to PATH
9698
Pair("PATH", "${System.getenv("PATH")}:${System.getenv("ANDROID_NDK_ROOT")}/toolchains/llvm/prebuilt/$llvmArchPath/bin"),
97-
Pair("CFLAGS", "-D__ANDROID_API__=21"),
99+
Pair("CFLAGS", "-D__ANDROID_MIN_SDK_VERSION__=21"),
100+
Pair("AR", "llvm-ar"),
98101
Pair("CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER", "armv7a-linux-androideabi21-clang"),
99102
Pair("CC", "armv7a-linux-androideabi21-clang")
100103
)

0 commit comments

Comments
 (0)