移动端概述
Bevy 支持 Android 和 iOS,但移动端构建涉及平台特定的工具链和配置,比桌面端复杂不少。
Android
前置条件
- Android SDK(通过 Android Studio 或
sdkmanager安装) - Android NDK(推荐 r26+)
- Rust 目标:
rustup target add aarch64-linux-android
构建步骤
- 配置
ANDROID_HOME和ANDROID_NDK_HOME环境变量 - 使用
cargo-ndk或xbuild交叉编译 - 生成 APK 或 AAB(Android App Bundle)
console
cargo install cargo-ndk
cargo ndk -t arm64-v8a -o ./jniLibs build --releaseActivity 类型
Bevy 支持两种 Android Activity:
| 类型 | Feature | 特点 |
|---|---|---|
| GameActivity | android-game-activity(默认) | Google 推荐,支持更多功能 |
| NativeActivity | android-native-activity | 旧方案,兼容性好 |
新项目推荐使用默认的 GameActivity。
iOS
前置条件
- macOS + Xcode
- Rust 目标:
rustup target add aarch64-apple-ios - Apple Developer 证书(真机部署需要)
构建步骤
- 用
cargo build --release --target aarch64-apple-ios编译静态库 - 创建 Xcode 项目,链接 Rust 编译的
.a文件 - 配置 Info.plist、签名、图标
- 通过 Xcode 构建和部署
Bevy 官方仓库的 examples/mobile/ 提供了 iOS 和 Android 的项目模板。
移动端注意事项
- 触控输入:用
TouchInput事件代替鼠标事件(见第 17 章) - 屏幕尺寸:移动端分辨率差异大,用
Window::resize_constraints或自适应 UI - 性能:移动端 GPU 能力有限,减少阴影、降低纹理分辨率、简化后处理
- 包体:移动端对包体敏感,精简资产、启用 LTO 和 strip
- 权限:Android 需要在
AndroidManifest.xml中声明权限
交叉编译的坑
移动端构建最常见的问题是工具链配置。确保:
- NDK 版本与 Rust target 匹配
- 环境变量
CC、AR、CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER正确设置 - 链接的 C 库(如果有)也交叉编译到了目标平台
遇到链接错误时,优先检查 NDK 路径和目标架构是否一致。