Build silent failure when using "dx build" on android with oboe
Opened this issue · 1 comments
Problem
When building a barebone dioxus project for android with the dx build
command, the build process silently fails. If an apk file has already been built before that, no error is returned and the apk is unchanged. If no apk is present - e.g. after removing target
, the bundling step here fails as the copy step does not have a source file.
Below is a repro for the issue together with the process output. This only happens when the oboe dependency is used.
Steps To Reproduce
I've put a repro in this repo dioxus-test.
$ sh build.sh
...
0.747s INFO Compiling [317/532]: dioxus_mobile
0.747s INFO Compiling [318/532]: dioxus
1.36s INFO Bundling app...
1.36s ERROR err=Other(Failed to write main executable
Caused by:
0: I/O Error: No such file or directory (os error 2)
1: No such file or directory (os error 2))
1.38s ERROR err=Other(Failed to write main executable
Caused by:
0: I/O Error: No such file or directory (os error 2)
1: No such file or directory (os error 2))
Expected behavior
I would expect the compiling step to fail and provide some compilation error if any.
Environment:
- Dioxus version: dioxus 0.6.0, dx cli 0.6.1.
- Rust version: rustc 1.82.0 (f6e511eec 2024-10-15)
- OS info: linux 6.11.5-arch1-1
- App platform: mobile - android
Questionnaire
I found a fix here: fzyzcjy/flutter_rust_bridge#2209 (comment)
Turning on the feature shared-stdcxx
for oboe, and copying $ANDROID_NDK/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/libc++_shared.so
into \target\dx<crate>\debug\android\app\app\src\main\jniLibs makes oboe functional. Although I still am confused why there's no error when it fails to create the executable.