跳转到内容

Android 开发

Android 开发建立在从源码构建的通用环境之上,还需要 Android SDK、NDK 与 Rust 交叉编译目标。Kabegame 最低支持 Android 8.0(API 26+),Gradle 配置为 minSdk = 26

前置要求

安装 Android Studio,并配置以下环境变量:

  • JAVA_HOME:指向 Android Studio 自带的 JBR。
  • ANDROID_HOME:指向 Android SDK 目录。
  • NDK_HOME:指向 Android NDK,必须配置,否则 Rust、V8 与 FFmpeg 的交叉编译都会失败。

然后安装 Rust Android 目标:

Terminal window
rustup target add \
aarch64-linux-android \
armv7-linux-androideabi \
i686-linux-android \
x86_64-linux-android

当前仓库自建的 V8 与 FFmpeg 产物以 aarch64 为主,因此常规开发和构建应优先使用 arm64 设备。

在真机或模拟器上运行

Android 开发必须显式指定 --mode android

Terminal window
deno task dev -c kabegame --mode android

省略该参数会启动桌面版。连接多台设备时,先从 adb devices 取得第一列设备 ID,再把它放在 -- 之后:

Terminal window
adb devices
deno task dev -c kabegame --mode android -- <设备ID>

远程调试 WebView

Debug 构建默认启用 Android WebView 调试。保持设备已连接且开启 USB 调试,然后在桌面 Chrome 访问:

chrome://inspect/#devices

勾选 “Discover USB devices”,找到 Kabegame 后点击 “inspect”。如果设备没有自动出现,可以先用 ADB 转发 DevTools 端口:

Terminal window
adb forward tcp:9222 localabstract:chrome_devtools_remote

仍无法发现设备时,检查 USB 调试和 ADB 驱动,并尝试:

Terminal window
adb kill-server
adb start-server

准备 V8 与 FFmpeg

Android 上的 V8 插件后端使用仓库自建的 aarch64 rusty_v8 静态库与 binding。官方包不提供所需的 Android 产物,因此需要在受支持的 Linux 环境运行:

Terminal window
deno task build:v8

产物写入 gitignore 的 bin/android/,Android 模式通过 RUSTY_V8_ARCHIVERUSTY_V8_SRC_BINDING_PATH 自动接入。完整构建原理和磁盘、clang 要求见 cocs/crawler/V8_RUNTIME.mdthird-patches/rusty_v8/README.md

Android 视频摄入还需要交叉编译 FFmpeg / x264:

Terminal window
deno task build:ffmpeg --target android

这些产物位于 third/FFmpeg-build/android/,不提交到 Git,由命令按需复现。

深入阅读