升级App到Tauri 2.0并配置Tauri Mobile
Tauri 2.0的新alpha.4 版本已经发布。此版本包括即将发布的Tauri 1.3版本的所有更改,此版本包含了对HTTP客户端的一些breaking change和TauriNative mobile插件的功能一些更改。
以下是从Tauri 1.3或1.4升级到Tauri 2.0.0-alpha.4的一些指引。
升级前环境说明:
OS:windows 11
NPM: 8.5.0
rust: rustc 1.68.0
cargo: 1.68.0
Angular CLI: 16.2.10
Node: 16.14.2
1. 升级rustc
由于Tauri 2.0.0-alpha.4需要rustc至少是1.70.0版本,而我当前的rustc仅为1.68.0版本, 所以需要首先升级rustc, 否则在后续升级tauri-cli时会报错。
1 | rustup update |
升级以后的rust版本为1.74.0
2. 安装Android SDK
Tauri2.0依赖的Android SDK的版本是Android 12(API级别 31)。这意味着 Tauri2.0应用程序只能在运行Android 12或更高版本的设备上运行。
安装Android SDK可以参考我的文章Android SDK安装与配置 | 鹏叔的技术博客
以下是Tauri2.0依赖的Android SDK的具体版本号:
Android SDK Platform-Tools:31.0.5
Android SDK Build-Tools:31.0.5
Android SDK Tools:31.0.5
Android SDK Documentation:31.0.5
如果您使用的是旧版本的Android SDK,则可能会遇到错误或不兼容性。
3. 安装NDK
NDK 是 Native Development Kit 的缩写,它是一个开发原生 Android 应用程序的工具包。Tauri 会依赖 NDK 的原因有两个:
Tauri 是一个跨平台框架,它可以运行在 Windows、macOS、Linux、Android 和 iOS 等平台上。为了访问原生平台的功能,为了在这些平台上提供一致的体验,Tauri 需要访问原生平台的功能,例如图形、音频、文件系统等。NDK 提供了访问这些功能的接口。
为了提高性能。Tauri 使用 WebAssembly 作为其运行时。WebAssembly 是一种高性能的二进制格式,可以编译成机器码。然而,WebAssembly 仍然比原生代码的性能要低一些。为了提高性能,Tauri 可以使用 NDK 来编译原生代码,然后将其嵌入到 WebAssembly 模块中。
4. 更新 NPM 依赖包
1 |
|
5. 更新 Cargo 依赖包
进入src-tauri目录,更新Cargo 依赖包。
1 |
|
6. 更新配置文件
升级到Tauri 2.0后有些配置不再兼容,需要修改。
编辑src-tauri/tauri.conf.json
将不符合配置规范的部分移除
1 |
|
修改src-tauri/Cargo.toml
1 |
|
7. 重新创建移动项目以使用新功能
首先,确保安装所需的rust android目标
1 | rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android |
1 |
|
1 | $npm run tauri android init |
初始化Android项目后,由于网络原因,使用默认配置会遇到网络延迟或阻塞的情况,所以需要将一些默认配置替换掉。
gradle镜像仓库
修改配置demo-project/src-tauri/gen/android/build.gradle.kts, 添加阿里云仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
buildscript {
repositories {
maven(url = "https://maven.aliyun.com/repository/central")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/releases")
maven(url = "https://maven.aliyun.com/repository/snapshots")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
google()
mavenCentral()
}
}
allprojects {
repositories {
maven(url = "https://maven.aliyun.com/repository/central")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/releases")
maven(url = "https://maven.aliyun.com/repository/snapshots")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
google()
mavenCentral()
}
}gradle wrapper配置
手动获取gradle-8.0-bin.zip,并放在本地某个目录下, 例如~/.gradle/wrapper/gradle-8.0-bin.zip
, 修改配置如下
webapp3/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties
1 |
|
如果Android SDK配置没有问题,并且项目能顺利通过。该命令会自动打开Android 模拟器,并将Android运行在模拟器中。
9. 编译apk和aab安装包
1 |
|
10. 生成签名
生成签名。参考链接:https://next--tauri.netlify.app/next/guides/distribution/sign-android/ 根据这个链接,我们需要先生成一个签名。对于windows,使用下面这个命令来生成(注意keystore里面的用户名改成你的,最好是全英语)。
对于windows,使用下面这个命令来生成(注意keystore里面的用户名改成你的,最好是全英语)。
1 |
|
对于Mac/Linux 使用下面这个命令来生成
1 |
|
修改 [project]/src-tauri/gen/android/app/build.gradle.kts file.
添加两个imports
1 | import java.util.Properties |
加载keyProperties
1 | val keyPropertiesFile = rootProject.file("key.properties") |
配置signingConfigs
1 | signingConfigs { |
打包时使用签名信息
1 | buildTypes { |
这样创建release build时会自动带上签名信息
11. troubleshooting
11.1. issue 1: 在做Android开发时经常出现android adb devices offline
重启adb服务
1 |
|
12. 参考文档
升级App到Tauri 2.0并配置Tauri Mobile