当前位置: 首页 > news >正文

Tauri Android 开发踩坑实录:从 Gradle 版本冲突到离线构建成功

关键词:Tauri、Android、Gradle、跨平台、离线构建、Rust + Web

最近在尝试使用 Tauri 开发一款跨平台的量房工具,目标是同时支持桌面端(Windows/macOS/Linux)和移动端(Android)。在 Windows 上开发一切顺利,但在运行 pnpm tauri android dev 时,接连遇到两个典型问题:

  1. Unsupported class file major version 66
  2. Minimum supported Gradle version is 8.13. Current version is 8.7
  3. 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/targetgen/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 文件(离线构建)

  1. 从浏览器手动下载 gradle-8.14.3-bin.zip
  2. 修改 gradle-wrapper.properties 中的 distributionUrl 为本地路径:
distributionUrl=file:///D:/Android/Gradle/gradle-8.14.3-bin.zip

⚠️ 注意:

  • 使用 file:/// 前缀;
  • 路径用正斜杠 /
  • 文件必须是官方 ZIP 包(未解压)。
  1. 重新运行 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 真正实现“一套代码,多端运行”,极大降低开发成本

在这里插入图片描述

http://www.dtcms.com/a/473604.html

相关文章:

  • nuxt3中使用defineAsyncComponent懒加载组件,但其中的loadingComponent和errorComponent为什么不生效
  • GIS中最常用的编程语言
  • 用wordpress做的网站有哪些公司网站建设成本
  • 网站网页怎么设计无代码开发软件
  • 阿里发布「夸克 AI 眼镜」:融合阿里购物、地图、支付生态;苹果拟收购计算机视觉初创 Prompt AI丨日报
  • 【精品模板鉴赏】WORD版企业IT管理参考资料模板-数据安全|信息安全|网络安全|应急预案|灾备恢复..
  • Vue 核心特性详解:计算属性、监听属性与事件交互实战指南
  • 建设银行 嘉定 网站ai的优点和缺点
  • LeetCode 刷题【115. 不同的子序列】
  • 图像去雾之 Retinex 算法
  • 为什么 React 推荐 “不可变更新”:深入理解 React 的核心设计理念
  • 模型缝合的思想和步骤
  • 【基础算法】DFS中的剪枝与优化
  • 做暧昧视频网站做网页用什么软件写代码
  • Migo报错,可直接记账的提醒
  • 甘肃温室大棚建设网站佛山网页网站设计多少钱
  • js绑定事件的方法有几种?
  • P1003 [NOIP 2011 提高组] 铺地毯
  • 设置关闭宝塔面板依然运行java项目
  • Q:在 Vue.js 中,如何让【事件处理函数】同时接收【事件对象】和【自定义参数】?
  • 企业网站建设规划书pptwordpress改造mip
  • ASW层(应用层)设计与工作内容笔记
  • One Commander(文件管理器) 中文绿色版
  • 标签之超文本链接(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • 北京专业做网站怎么样灵璧做网站
  • 离线下载transformer
  • Wireshark过滤器语法详细指南及相关知识点
  • 把工艺内容做成向量数据库供llm调用
  • MIT 6.S081课程笔记0——关于课程
  • 前端梳理体系从常问问题去完善-网络篇