Skip to content

移动端概述

Bevy 支持 Android 和 iOS,但移动端构建涉及平台特定的工具链和配置,比桌面端复杂不少。

Android

前置条件

  • Android SDK(通过 Android Studio 或 sdkmanager 安装)
  • Android NDK(推荐 r26+)
  • Rust 目标:rustup target add aarch64-linux-android

构建步骤

  1. 配置 ANDROID_HOMEANDROID_NDK_HOME 环境变量
  2. 使用 cargo-ndkxbuild 交叉编译
  3. 生成 APK 或 AAB(Android App Bundle)
console
cargo install cargo-ndk
cargo ndk -t arm64-v8a -o ./jniLibs build --release

Activity 类型

Bevy 支持两种 Android Activity:

类型Feature特点
GameActivityandroid-game-activity(默认)Google 推荐,支持更多功能
NativeActivityandroid-native-activity旧方案,兼容性好

新项目推荐使用默认的 GameActivity。

iOS

前置条件

  • macOS + Xcode
  • Rust 目标:rustup target add aarch64-apple-ios
  • Apple Developer 证书(真机部署需要)

构建步骤

  1. cargo build --release --target aarch64-apple-ios 编译静态库
  2. 创建 Xcode 项目,链接 Rust 编译的 .a 文件
  3. 配置 Info.plist、签名、图标
  4. 通过 Xcode 构建和部署

Bevy 官方仓库的 examples/mobile/ 提供了 iOS 和 Android 的项目模板。

移动端注意事项

  • 触控输入:用 TouchInput 事件代替鼠标事件(见第 17 章)
  • 屏幕尺寸:移动端分辨率差异大,用 Window::resize_constraints 或自适应 UI
  • 性能:移动端 GPU 能力有限,减少阴影、降低纹理分辨率、简化后处理
  • 包体:移动端对包体敏感,精简资产、启用 LTO 和 strip
  • 权限:Android 需要在 AndroidManifest.xml 中声明权限

交叉编译的坑

移动端构建最常见的问题是工具链配置。确保:

  • NDK 版本与 Rust target 匹配
  • 环境变量 CCARCARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER 正确设置
  • 链接的 C 库(如果有)也交叉编译到了目标平台

遇到链接错误时,优先检查 NDK 路径和目标架构是否一致。