You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust APK启动崩溃:无法定位符号_Unwind_Resume,求排查方案

解决Rust Android应用崩溃:无法定位_Unwind_Resume符号的问题

问题现象

部署Rust OpenXR应用(或官方示例项目)到Quest 2时,应用启动即崩溃,Logcat报错核心内容为:

dlopen failed: cannot locate symbol "_Unwind_Resume" referenced by "...libxxx.so"

问题原因

Android NDK 25及以上版本移除了对libunwind的默认静态链接,而Rust编译生成的二进制文件默认依赖_Unwind_Resume符号,导致动态加载时无法找到该符号。

解决方案

方案1:降级NDK版本

将NDK版本降级到24.x或更早版本(这些版本仍包含libunwind的必要符号):

  • 打开Android Studio的SDK Manager,下载NDK 24.x系列版本(如24.0.8215888)
  • 修改环境变量ANDROID_NDK_ROOT指向新的NDK路径:
    export ANDROID_NDK_ROOT=~/Android/Sdk/ndk/24.0.8215888/
    

方案2:配置Rust链接器参数

若不想降级NDK,可在项目的.cargo/config.toml中添加链接器选项,强制链接libunwind:

[target.aarch64-linux-android]
rustflags = [
    "-C", "link-arg=-lunwind",
]

如果需要适配所有Android架构,可改为:

[target.'cfg(target_os = "android")']
rustflags = [
    "-C", "link-arg=-lunwind",
]

方案3:更新cargo-apk工具

确保使用最新版本的cargo-apk,避免工具链兼容性问题:

cargo install cargo-apk --force

验证

修改完成后,重新执行cargo apk run部署应用,检查是否能正常启动。

内容的提问来源于stack exchange,提问作者Mutant Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:22:34