DioxusLabs/dioxus

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.