Tauri Android 开发踩坑实录:从 Gradle 版本冲突到离线构建成功
关键词:Tauri、Android、Gradle、跨平台、离线构建、Rust + Web
最近在尝试使用 Tauri 开发一款跨平台的量房工具,目标是同时支持桌面端(Windows/macOS/Linux)和移动端(Android)。在 Windows 上开发一切顺利,但在运行 pnpm tauri android dev
时,接连遇到两个典型问题:
Unsupported class file major version 66
Minimum supported Gradle version is 8.13. Current version is 8.7
- Gradle 下载超时(网络受限)
经过多次调试,最终成功在 Android 模拟器上运行应用。现将完整解决过程记录如下,希望能帮到同样踩坑的朋友。
🔧 问题一:Java 版本与 Gradle 不兼容
❌ 错误信息
Unsupported class file major version 66
💡 原因分析
major version 66
对应 Java 22 编译的 class 文件;- 但构建时实际使用的 JVM 版本较低(如 JDK 21),无法加载高版本 class;
- 虽然设置了
JAVA_HOME
,但 Tauri 调用 Gradle 时可能受PATH
中其他 Java 干扰。
✅ 解决方案
- 统一使用 JDK 21(Android 官方推荐版本);
- 设置
JAVA_HOME=D:\Android\Java\jdk-21.0.3
; - 清理缓存:删除
src-tauri/target
和gen/android/.gradle
; - 重启终端确保环境变量生效。
📌 建议:Tauri + Android 目前对 JDK 22 支持不完善,优先使用 JDK 17 或 21。
🔧 问题二:Gradle 版本过低
❌ 错误信息
Minimum supported Gradle version is 8.13. Current version is 8.7.
💡 原因分析
- Tauri 新版默认使用较新的 Android Gradle Plugin (AGP);
- AGP 8.5+ 要求 Gradle ≥ 8.13,但项目生成的 Wrapper 仍是 8.7。
✅ 解决方案
修改文件:
src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties
将:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
更新为:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
✅ Gradle 8.14.3 是当前与 AGP 兼容的最新稳定版。
🌐 问题三:Gradle 下载超时(网络问题)
❌ 错误信息
java.net.SocketTimeoutException: Connect timed out
✅ 解决方案:使用本地 ZIP 文件(离线构建)
- 从浏览器手动下载
gradle-8.14.3-bin.zip
; - 修改
gradle-wrapper.properties
中的distributionUrl
为本地路径:
distributionUrl=file:///D:/Android/Gradle/gradle-8.14.3-bin.zip
⚠️ 注意:
- 使用
file:///
前缀;- 路径用正斜杠
/
;- 文件必须是官方 ZIP 包(未解压)。
- 重新运行
pnpm tauri android dev
,构建成功!
🎉 最终成果
- 在 Windows 上开发 Tauri 应用;
- 成功在 Android 模拟器(x86_64)上运行;
- 前端通过局域网 IP(如
192.168.0.193:1420
)与 Rust 后端通信; - 无需编写任何 Java/Kotlin 代码,纯 Web + Rust 实现。
💡 经验总结
项目 | 建议 |
---|---|
JDK 版本 | 使用 JDK 21,避免 JDK 22 的兼容性问题 |
Gradle 版本 | 保持与 AGP 兼容(当前推荐 8.13–8.14) |
网络受限 | 用 file:// 指向本地 ZIP 实现离线构建 |
跨平台开发 | Tauri 真正实现“一套代码,多端运行”,极大降低开发成本 |