Skip to content

Note

在为 Android 开发 Slint 应用程序时,你只能使用 Rust 作为编程语言。

另请参阅我们 Rust API 文档中 android 模块的文档

项目设置

Slint 使用 android-activity crate 作为与 操作系统的接口,它被重新导出为 slint::android::android_activity。要开始使用,请按照以下步骤操作:

首先,你的项目需要是一个 library crate。将以下内容添加到你的 Cargo.toml 中:

toml
[lib]crate_type = ["cdylib"]

你还需要选择要使用的 android-activity 版本:

toml
[dependencies]slint = { version = "1.15.0", features = ["backend-android-activity-06"] }

此特性可与任何 target_os 一起编译,并可以安全地在任何位置启用。

其次,在你的 lib.rs 中,添加以下函数:

#[cfg(target_os = "android")]#[unsafe(no_mangle)]fn android_main(app: slint::android::AndroidApp) {    slint::android::init(app).unwrap();    let main_window = ...; // window generated by the Slint macros    main_window.run().unwrap();}

rs

你还可以通过将 slint::android::init 的调用替换为 slint::android::init_with_event_listener 来添加一个 Android 事件 (android_activity::PollEvent) 监听器。

所有必要的代码更改到此为止。在下一节中,我们将设置用于 构建项目的环境。

Android 设置

Android 开发工作流程围绕 adb 命令行工具展开。使用它来连接 Android 设备和模拟器以上传和运行应用程序(以及执行此处不相关的其他操作)。

安装 Android 开发环境的最简单方法是下载并安装 Android Studio。在设置面板中,导航到 Android SDK 页面并安装你需要的所有 SDK 版本。我们建议使用可用的最新版本, 因为它可以配置为向后兼容旧版本的 Android。此管理器 可在 "Languages & Frameworks" > "Android SDK" 中的设置中找到。

Screenshot Android SDK Manager

另请注意顶部的 SDK 位置,如果构建工具无法自动检测到该路径, 则可能需要将其用作 ANDROID_HOME 环境变量。

platform-tools 目录添加到你的 PATH 中,以便 adb 工具在命令行中可用。

要获取当前连接到你的机器的 Android 设备、模拟器和仿真器的列表,请运行

Terminal window

bash
adb devices

你可以通过以下方式连接到网络上的物理设备

Terminal window

bash
adb connect <host>

host 是设备的 IP 地址。请注意,此操作要求设备已启用开发模式。

虚拟设备设置

我们建议首先使用虚拟设备进行开发,因为它可以加快开发周期。 但是,最终你仍必须在设备上进行测试,以确保界面在触摸屏上可用,并检查所有文本是否足够大等。

要创建并运行虚拟设备,请使用 Android Studio 中提供的 Virtual Device Manager。你可以从主屏幕的 "More Actions" 中打开它:

Screenshot Virtual Device Manager Menu Item

你可以使用不同的配置创建任意数量的设备:

Screenshot Virtual Device Manager

一种好的做法是拥有一台支持你的应用程序最低 API 级别的设备 以及另一台运行最新版本的设备,以确保它可以在两者上运行。

运行虚拟设备会自动连接到 adb

虚拟键盘

请注意,根据你选择的设备模板,此处创建的虚拟设备默认可能使用 硬件键盘,这对于测试你的应用程序没有帮助。不幸的是, 我们无法找到在 Virtual Device Manager 中直接禁用它的方法。

要解决此问题,请在管理器中单击设备旁边的三个竖点以打开菜单 并选择 "Show on disk"。在打开的目录中,在你喜欢的文本编辑器中打开 config.ini 文件。导航到 hw.keyboard=yes 这一行并将其更改为 hw.keyboard=no,然后保存文件。

接下来的挑战是仍然没有键盘:

Screenshot Stylus Support

在键盘设置中禁用触笔输入:

Screenshot Keyboard Settings

在列表中选择 "Write in textfields",然后禁用该功能。这将启用 常规虚拟键盘。

运行应用程序

有多种方法可以构建、上传和运行用 Rust 编写的 Android 应用。本页介绍的是 一种使用 xbuild 的方法。该方法完全不使用 Android Studio。

在撰写本文时,xbuild 的当前版本(0.2.0)严重过时,并且 包含已在 master 分支中修复的相关 bug。因此,不要使用 cargo install xbuild 来 安装它,而要使用 git 版本:

Terminal window

bash
cargo install --git https://github.com/rust-mobile/xbuild.git

xbuild 的命令行工具简称为 x。例如,要获取已连接设备的列表,请使用

Terminal window

bash
x devices

请注意,与上面的 adb 不同,此工具还支持 iOS 设备和模拟器。但是,对于 Android 设备,它只是与 adb 通信,因此如果你使用该工具连接设备,它也将出现在此处。

要构建你的项目,请导航到包含 Cargo.toml 的目录并运行

Terminal window

bash
x run --device <id>

其中 <id> 显示在 x devices 中作为最左边的列,对于虚拟 Android 设备,类似于 adb:emulator-1234

这应该会构建你的项目,将其上传到设备并运行。目标平台是自动检测的。

要重新编译并测试更改,请按 ctrl-c 并再次运行相同的命令。设备上正在运行的版本将被自动替换。

故障排除

如果 x run 无法工作,请运行 x doctor 来检查你是否已安装所有必需的工具, 并且它们能被 xbuild 找到。

构建

分发 Android 应用程序的方法有很多,xbuild 通过 x build 支持所有这些方法。 要获取有关配置的信息,请使用 x build --help

例如,要构建一个 .apk 文件,请使用类似以下命令

Terminal window

bash
x build --platform android --arch arm64 --format apk --release

然后该 apk 位于 target/x/release/android/<name>.apk

基于 MIT 协议发布