slint-ui / slint

Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.

Home Page:https://slint.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Weather Demo doesn't build for Android

hut opened this issue · comments

commented

I tried building an apk with xbuild and slint 1.7.1 for the weather demo example, but it gives me this error:

~/.../examples/weather-demo$ x build --platform android --arch arm64
[1/3] Fetch precompiled artifacts
info: component 'rust-std' for target 'aarch64-linux-android' is up to date
[1/3] Fetch precompiled artifacts [74ms]
[2/3] Build rust `rusty-weather`
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.40s
[2/3] Build rust `rusty-weather` [493ms]
[3/3] Create apk
Error: failed to locate bin /path/to/slint/target/x/debug/android/arm64/cargo/aarch64-linux-android/debug/librusty_weather.so

Turns out it created a librusty_weather_lib.so in that destination instead of a librusty_weather.so. I could resolve this by renaming librusty_weather_lib.so to librusty_weather.so. But this should not be happening, right? Perhaps there is something misconfigured in the Cargo.toml?

My system is ArchLinux with slint 1.7.1, rustc 1.80.0, xbuild 0.2.0, android-sdk 26.1.1-2, android-ndk r26.d-1, android-platform 32_r01-1.

I believe this was fixed recently. Could you try again from the master branch?

(edit: i believe this could have fixed it: #5715)

commented

Oh, embarrassing, I should have seen that PR!

Unfortunately, same problem with a fresh build on master (b1dab29).

It creates a libweather_demo_lib.so but in the "Create apk" step it looks for a libweather_demo.so.

Full build log on master:

~/.../examples/weather-demo$ x build --platform android --arch arm64
[1/3] Fetch precompiled artifacts
info: component 'rust-std' for target 'aarch64-linux-android' is up to date
[1/3] Fetch precompiled artifacts [107ms]
[2/3] Build rust `weather-demo`
   Compiling proc-macro2 v1.0.86
   Compiling unicode-ident v1.0.12
   Compiling autocfg v1.3.0
   Compiling version_check v0.9.5
   Compiling cfg-if v1.0.0
   Compiling libc v0.2.155
   Compiling libm v0.2.8
   Compiling crossbeam-utils v0.8.20
   Compiling log v0.4.22
   Compiling once_cell v1.19.0
   Compiling zerocopy v0.7.35
   Compiling serde v1.0.204
   Compiling allocator-api2 v0.2.18
   Compiling simd-adler32 v0.3.7
   Compiling value-bag v1.9.0
   Compiling equivalent v1.0.1
   Compiling adler v1.0.2
   Compiling either v1.13.0
   Compiling miniz_oxide v0.7.4
   Compiling thiserror v1.0.63
   Compiling bitflags v2.6.0
   Compiling crc32fast v1.4.2
   Compiling libloading v0.8.5
   Compiling heck v0.5.0
   Compiling tinyvec_macros v0.1.1
   Compiling rustversion v1.0.17
   Compiling tinyvec v1.8.0
   Compiling convert_case v0.4.0
   Compiling ahash v0.8.11
   Compiling slotmap v1.0.7
   Compiling num-traits v0.2.19
   Compiling memoffset v0.9.1
   Compiling pin-project-lite v0.2.14
   Compiling ttf-parser v0.21.1
   Compiling arrayvec v0.7.4
   Compiling flate2 v1.0.30
   Compiling memchr v2.7.4
   Compiling bytemuck v1.16.3
   Compiling hashbrown v0.14.5
   Compiling quote v1.0.36
   Compiling syn v2.0.72
   Compiling rustc-hash v1.1.0
   Compiling winnow v0.5.40
   Compiling semver v1.0.23
   Compiling roxmltree v0.20.0
   Compiling crossbeam-epoch v0.9.18
   Compiling memmap2 v0.9.4
   Compiling slab v0.4.9
   Compiling indexmap v2.3.0
   Compiling rayon-core v1.12.1
   Compiling rustix v0.38.34
   Compiling smallvec v1.13.2
   Compiling portable-atomic v1.7.0
   Compiling bitflags v1.3.2
   Compiling fontconfig-parser v0.5.7
   Compiling crossbeam-deque v0.8.5
   Compiling lock_api v0.4.12
   Compiling linux-raw-sys v0.4.14
   Compiling parking v2.2.0
   Compiling critical-section v1.1.2
   Compiling glob v0.3.1
   Compiling winnow v0.6.18
   Compiling rustc_version v0.4.0
   Compiling concurrent-queue v2.5.0
   Compiling clang-sys v1.8.1
   Compiling jobserver v0.1.32
   Compiling scopeguard v1.2.0
   Compiling float-cmp v0.9.0
   Compiling serde_json v1.0.121
   Compiling fontdb v0.18.0
   Compiling prettyplease v0.2.20
   Compiling strict-num v0.1.1
   Compiling cc v1.1.7
   Compiling field-offset v0.3.6
   Compiling euclid v0.22.10
   Compiling toml_datetime v0.6.8
   Compiling serde_spanned v0.6.7
   Compiling aho-corasick v1.1.3
   Compiling fdeflate v0.3.4
   Compiling toml_edit v0.21.1
   Compiling unicode-bidi v0.3.15
   Compiling futures-core v0.3.30
   Compiling minimal-lexical v0.2.1
   Compiling arrayref v0.3.8
   Compiling regex-syntax v0.8.4
   Compiling khronos_api v3.1.0
   Compiling png v0.17.13
   Compiling nom v7.1.3
   Compiling lyon_geom v1.0.5
   Compiling toml_edit v0.22.20
   Compiling tiny-skia-path v0.11.4
   Compiling spin v0.9.8
   Compiling kurbo v0.11.0
   Compiling rayon v1.10.0
   Compiling unicode-script v0.5.6
   Compiling proc-macro-crate v3.1.0
   Compiling siphasher v1.0.1
   Compiling weezl v0.1.8
   Compiling unicode-bidi-mirroring v0.2.0
   Compiling bindgen v0.69.4
   Compiling regex-automata v0.4.7
   Compiling home v0.5.9
   Compiling unicode-ccc v0.2.0
   Compiling unicode-properties v0.1.1
   Compiling futures-io v0.3.30
   Compiling svgtypes v0.15.1
   Compiling which v4.4.2
   Compiling cexpr v0.6.0
   Compiling rustybuzz v0.14.1
   Compiling flume v0.11.0
   Compiling lyon_path v1.0.5
   Compiling xattr v1.3.1
   Compiling android_system_properties v0.1.5
   Compiling unicode-normalization v0.1.23
   Compiling jpeg-decoder v0.3.1
   Compiling filetime v0.2.23
   Compiling simplecss v0.2.1
   Compiling itertools v0.12.1
   Compiling zune-inflate v0.2.54
   Compiling half v2.4.1
   Compiling lebe v0.5.2
   Compiling imagesize v0.12.0
   Compiling xmlwriter v0.1.0
   Compiling pico-args v0.5.0
   Compiling cfg_aliases v0.2.1
   Compiling unicode-vo v0.1.0
   Compiling base64 v0.22.1
   Compiling xml-rs v0.8.20
   Compiling lazy_static v1.5.0
   Compiling itoa v1.0.11
   Compiling regex v1.10.5
   Compiling bit_field v0.10.2
   Compiling shlex v1.3.0
   Compiling data-url v0.3.1
   Compiling color_quant v1.1.0
   Compiling lazycell v1.3.0
   Compiling percent-encoding v2.3.1
   Compiling ryu v1.0.18
   Compiling form_urlencoded v1.2.1
   Compiling usvg v0.42.0
   Compiling gl_generator v0.14.0
   Compiling gif v0.13.1
   Compiling exr v1.72.0
   Compiling tiff v0.9.1
   Compiling idna v0.5.0
   Compiling tar v0.4.41
   Compiling thiserror-impl v1.0.63
   Compiling derive_more v0.99.18
   Compiling bytemuck_derive v1.7.0
   Compiling strum_macros v0.26.4
   Compiling num_enum_derive v0.7.3
   Compiling const-field-offset-macro v0.1.5 (/path/to/slint/helper_crates/const-field-offset/macro)
   Compiling pin-project-internal v1.1.5
   Compiling vtable-macro v0.2.0 (/path/to/slint/helper_crates/vtable/macro)
   Compiling iana-time-zone v0.1.60
   Compiling toml v0.8.19
   Compiling tiny-skia v0.11.4
   Compiling const-field-offset v0.1.5 (/path/to/slint/helper_crates/const-field-offset)
   Compiling derive_utils v0.14.1
   Compiling event-listener v5.3.1
   Compiling errno v0.3.9
   Compiling rgb v0.8.45
   Compiling qoi v0.4.1
   Compiling stable_deref_trait v1.2.0
   Compiling android-tzdata v0.1.1
   Compiling text-size v1.1.1
   Compiling codemap v0.1.3
   Compiling termcolor v1.4.1
   Compiling byteorder v1.5.0
   Compiling countme v3.0.1
   Compiling i-slint-compiler v1.7.1 (/path/to/slint/internal/compiler)
   Compiling linked-hash-map v0.5.6
   Compiling fastrand v2.1.0
   Compiling image v0.24.9
   Compiling linked_hash_set v0.1.4
   Compiling resvg v0.42.0
   Compiling num_enum v0.7.3
   Compiling rowan v0.15.15
   Compiling vtable v0.2.0 (/path/to/slint/helper_crates/vtable)
   Compiling pin-project v1.1.5
   Compiling codemap-diagnostic v0.1.2
   Compiling lyon_extra v1.0.2
   Compiling chrono v0.4.38
   Compiling auto_enums v0.8.5
   Compiling strum v0.26.3
   Compiling event-listener-strategy v0.5.2
   Compiling glutin_egl_sys v0.7.0
   Compiling url v2.5.2
   Compiling i-slint-core-macros v1.7.1 (/path/to/slint/internal/core-macros)
   Compiling lyon_algorithms v1.0.4
   Compiling fontdue v0.9.2
   Compiling integer-sqrt v0.1.5
   Compiling itertools v0.13.0
   Compiling clru v0.6.2
   Compiling pin-weak v1.1.0
   Compiling by_address v1.2.1
   Compiling unicode-linebreak v0.1.5
   Compiling pin-utils v0.1.0
   Compiling unicode-segmentation v1.11.0
   Compiling jni-sys v0.3.0
   Compiling scoped-tls-hkt v0.1.4
   Compiling raw-window-handle v0.6.2
   Compiling smol_str v0.2.2
   Compiling static_assertions v1.1.0
   Compiling spin_on v0.1.1
   Compiling futures-lite v2.3.0
   Compiling glutin v0.32.0
   Compiling io-lifetimes v1.0.11
   Compiling i-slint-common v1.7.1 (/path/to/slint/internal/common)
   Compiling tracing-core v0.1.32
   Compiling i-slint-backend-qt v1.7.1 (/path/to/slint/internal/backends/qt)
   Compiling bytes v1.7.0
   Compiling java-locator v0.1.7
   Compiling tracing v0.1.40
   Compiling ndk-sys v0.6.0+11769913
   Compiling i-slint-renderer-skia v1.7.1 (/path/to/slint/internal/renderers/skia)
   Compiling android-activity v0.6.0
   Compiling polling v2.8.0
   Compiling combine v4.6.7
   Compiling libloading v0.7.4
   Compiling async-task v4.7.1
   Compiling event-listener v2.5.3
   Compiling atomic-waker v1.1.2
   Compiling cesu8 v1.1.0
   Compiling rustix v0.37.27
   Compiling piper v0.2.3
   Compiling i-slint-core v1.7.1 (/path/to/slint/internal/core)
   Compiling i-slint-backend-selector v1.7.1 (/path/to/slint/internal/backends/selector)
   Compiling ndk v0.9.0
   Compiling async-channel v2.3.1
   Compiling async-lock v3.4.0
   Compiling async-io v1.13.0
   Compiling fastrand v1.9.0
   Compiling linux-raw-sys v0.3.8
   Compiling waker-fn v1.2.0
   Compiling glow v0.13.1
   Compiling android-properties v0.2.2
   Compiling ndk-context v0.1.1
   Compiling i-slint-backend-android-activity v1.7.1 (/path/to/slint/internal/backends/android-activity)
   Compiling futures-lite v1.13.0
   Compiling blocking v1.6.1
   Compiling async-lock v2.8.0
   Compiling async-executor v1.13.0
   Compiling serde_derive v1.0.204
   Compiling socket2 v0.4.10
   Compiling option-ext v0.2.0
   Compiling dirs-sys v0.4.1
   Compiling async-channel v1.9.0
   Compiling kv-log-macro v1.0.7
   Compiling android_log-sys v0.3.1
   Compiling directories v5.0.1
   Compiling polling v3.7.2
   Compiling tokio v1.39.2
   Compiling skia-bindings v0.75.0
   Compiling async-io v2.3.3
   Compiling env_filter v0.1.2
   Compiling android_logger v0.14.1
   Compiling async-global-executor v2.4.1
   Compiling async-std v1.12.0
   Compiling jni v0.21.1
   Compiling slint-build v1.7.1 (/path/to/slint/api/rs/build)
   Compiling slint-macros v1.7.1 (/path/to/slint/api/rs/macros)
   Compiling weather-demo v1.7.1 (/path/to/slint/examples/weather-demo)
   Compiling skia-safe v0.75.0
   Compiling slint v1.7.1 (/path/to/slint/api/rs/slint)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.32s
[2/3] Build rust `weather-demo` [40402ms]
[3/3] Create apk
Error: failed to locate bin /path/to/slint/target/x/debug/android/arm64/cargo/aarch64-linux-android/debug/libweather_demo.so

Perhaps this is some difference between cargo-apk and xbuild? Our CI uses the former to build an apk and that works. Maybe there’s a config key?

Right, xbuild has some issues when we rename things in Cargo.toml:
rust-mobile/xbuild#161
So maybe related.
(We need to rename the lib in our example because of support of both a binary and a lib. Although since there is a - in the name, this might not be necessary.)

(We need to rename the lib in our example because of support of both a binary and a lib. Although since there is a - in the name, this might not be necessary.)

Solved the problem for me, just weather_demo_lib to weather_demo in the Cargo.toml and the build doesn't fail.