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

Tauri v1 与 v2 配置对比

本文档对比 Tauri v1 和 v2 版本的配置结构和内容差异,帮助开发者了解版本变更并进行迁移。

配置结构变化

v1 配置结构

{"package": { ... },"tauri": { "allowlist": { ... },"bundle": { ... },"security": { ... },"updater": { ... },"windows": [ ... ]},"build": { ... },"plugins": { ... }
}

v2 配置结构

{"identifier": "...","productName": "...", "version": "...","app": {"security": { ... },"windows": [ ... ]},"build": { ... },"bundle": { ... }, "plugins": { ... }
}

主要变化

根级配置

v1v2说明
package.productNameproductName移至根级
package.versionversion移至根级
-identifier新增,必填项,应用唯一标识符
-mainBinaryName新增,可选,主二进制文件名

根级配置示例

v1 配置:

{"package": {"productName": "我的Tauri应用","version": "0.1.0"},"tauri": { ... }
}

v2 配置:

{"identifier": "com.example.myapp","productName": "我的Tauri应用","version": "0.1.0","app": { ... }
}

核心配置项

v1v2说明
tauriapp重命名
tauri.allowlistapp.security.capabilities权限系统重构
tauri.bundlebundle移至根级
tauri.securityapp.security移动位置
tauri.updaterbundle.createUpdaterArtifacts简化为布尔值
tauri.windowsapp.windows移动位置

开发构建配置

v1v2说明
build.devPathbuild.devUrl重命名
build.distDirbuild.frontendDist重命名
build.withGlobalTauriapp.withGlobalTauri移至app配置
-build.removeUnusedCommands新增

构建配置示例

v1 配置:

{"build": {"devPath": "http://localhost:3000","distDir": "../dist","withGlobalTauri": true}
}

v2 配置:

{"build": {"devUrl": "http://localhost:3000","frontendDist": "../dist","removeUnusedCommands": true},"app": {"withGlobalTauri": true}
}

安全配置

v1v2说明
tauri.security.cspapp.security.csp位置变更
tauri.security.freezePrototypeapp.security.freezePrototype位置变更
tauri.security.dangerousDisableAssetCspModificationapp.security.dangerousDisableAssetCspModification位置变更
tauri.security.dangerousRemoteDomainIpcAccess-已移除
tauri.security.dangerousUseHttpScheme-已移除
-app.security.pattern新增安全模式配置
-app.security.assetProtocol新增资源协议安全配置

安全配置示例

v1 配置:

{"tauri": {"security": {"csp": "default-src 'self'","freezePrototype": true,"dangerousDisableAssetCspModification": false}}
}

v2 配置:

{"app": {"security": {"csp": "default-src 'self'","freezePrototype": true,"dangerousDisableAssetCspModification": false,"pattern": {"use": "brownfield"},"assetProtocol": {"enable": true,"scope": ["**/*.html", "**/*.js", "**/*.css", "**/*.png"]}}}
}

权限系统(Capabilities)

v2 引入了全新的权限系统,替代了 v1 的 allowlist。新系统更灵活、更安全,使用 capabilities 配置。

v1 权限配置 (allowlist):

{"tauri": {"allowlist": {"fs": {"all": true,"readFile": true,"writeFile": true,"scope": ["$APPDATA/**", "$APPCONFIG/**"]},"dialog": {"all": true},"shell": {"execute": true,"scope": [{ "name": "node", "cmd": "node", "args": true }]}}}
}

v2 权限配置 (capabilities):

{"app": {"security": {"capabilities": [{"identifier": "fs:default","allow": [{ "path": "$APPDATA/**" },{ "path": "$APPCONFIG/**" }]},{"identifier": "dialog:default"},{"identifier": "shell:allow-execute","permissions": ["allow-execute-command"],"commands": [{ "name": "node", "args": true }]}]}}
}

打包配置

v1v2说明
tauri.bundle.activebundle.active位置变更
tauri.bundle.targetsbundle.targets位置变更
tauri.bundle.iconbundle.icon位置变更
-bundle.createUpdaterArtifacts新增,替代v1的updater配置
-bundle.useLocalToolsDir新增

平台特定配置

v1v2说明
tauri.bundle.windowsbundle.windows位置变更
tauri.bundle.macOSbundle.macOS位置变更
tauri.bundle.linuxbundle.linux位置变更
-bundle.android新增,支持Android平台
-bundle.iOS新增,支持iOS平台

移动平台配置

v2新增了对移动平台的支持,下面是移动平台特有的配置示例:

Android 配置:

{"bundle": {"android": {"versionCode": 1,"minSdkVersion": 24,"targetSdkVersion": 33,"icon": "icons/android-icon.png","packageName": "com.example.myapp","useCustomStatusBarColor": true,"statusBarColor": "#FFFFFF","keystore": {"path": "keystore.jks","keyAlias": "key0","password": "${ENV_PASSWORD}"}}}
}

iOS 配置:

{"bundle": {"iOS": {"developmentTeam": "ABCDE12345","minimumOsVersion": "13.0","deviceFamily": ["iphone", "ipad"],"infoPlist": {"NSCameraUsageDescription": "此应用需要访问您的相机","NSPhotoLibraryUsageDescription": "此应用需要访问您的照片库","CFBundleURLTypes": [{"CFBundleURLName": "com.example.myapp","CFBundleURLSchemes": ["myapp"]}]}}}
}

窗口配置

v1和v2的窗口配置选项基本相同,但在v2中有以下新增属性:

新增属性说明
shadow窗口是否有阴影
theme窗口主题(light/dark)
incognito是否使用隐身模式
fileDropEnabled是否允许文件拖放
label窗口标签,用于API引用

窗口配置示例

v1 配置:

{"tauri": {"windows": [{"title": "我的应用","width": 800,"height": 600,"resizable": true,"fullscreen": false}]}
}

v2 配置:

{"app": {"windows": [{"title": "我的应用","width": 800,"height": 600,"resizable": true,"fullscreen": false,"shadow": true,"theme": "light","incognito": false,"fileDropEnabled": true,"label": "main"}]}
}

插件系统变更

Tauri v2 的插件系统相比 v1 有重大更新,支持更灵活的插件配置:

v1 插件配置:

{"plugins": {"fs": {"scope": ["$APPDATA/**"]},"sql": {}}
}

v2 插件配置:

{"plugins": {"local-fs": {"scope": ["$APPDATA/**"]},"sql": {"allowedPaths": ["$APPDATA/database.sqlite"]}}
}

文件格式与平台特定配置

文件格式

两个版本都支持:

  • JSON: tauri.conf.json(默认)
  • JSON5: tauri.conf.jsontauri.conf.json5
  • TOML: Tauri.toml

平台特定配置

v1v2说明
tauri.linux.conf.jsontauri.linux.conf.json无变化
tauri.windows.conf.jsontauri.windows.conf.json无变化
tauri.macos.conf.jsontauri.macos.conf.json无变化
-tauri.android.conf.json新增,Android平台配置
-tauri.ios.conf.json新增,iOS平台配置

迁移指南

从 Tauri v1 迁移到 v2 时,建议按照以下步骤操作:

  1. 必填字段添加

    • 添加必需的identifier字段,使用反向域名表示法(如com.company.app
  2. 基本结构调整

    • package配置移至根级
    • tauri更改为app
    • bundle移至根级
  3. 构建配置更新

    • devPath更新为devUrl
    • distDir更新为frontendDist
    • withGlobalTauri移至app配置
  4. 权限系统迁移

    • allowlist迁移到新的capabilities权限系统
    • 对每个权限定义identifier和具体的权限范围
  5. 安全配置更新

    • 将所有安全相关配置移至app.security
    • 添加新的patternassetProtocol配置
  6. 窗口配置更新

    • 调整窗口配置路径为app.windows
    • 考虑使用新增的窗口属性增强功能
  7. 更新器配置

    • 将复杂的updater配置替换为简单的bundle.createUpdaterArtifacts布尔值
  8. 移动平台支持(如需):

    • 添加bundle.androidbundle.iOS配置

迁移示例

以下是一个完整的迁移示例,展示从 v1 到 v2 的具体配置变化:

v1 配置文件:

{"package": {"productName": "我的Tauri应用","version": "0.1.0"},"tauri": {"allowlist": {"fs": {"all": true,"scope": ["$APPDATA/**"]},"dialog": {"all": true}},"bundle": {"active": true,"icon": "icons/icon.png","targets": ["deb", "msi", "dmg"]},"security": {"csp": "default-src 'self'"},"updater": {"active": true,"endpoints": ["https://example.com/update-feed.json"]},"windows": [{"title": "我的应用","width": 800,"height": 600}]},"build": {"devPath": "http://localhost:3000","distDir": "../dist"}
}

v2 配置文件:

{"identifier": "com.example.myapp","productName": "我的Tauri应用","version": "0.1.0","app": {"security": {"csp": "default-src 'self'","capabilities": [{"identifier": "fs:default","allow": [{ "path": "$APPDATA/**" }]},{"identifier": "dialog:default"}]},"windows": [{"title": "我的应用","width": 800,"height": 600,"label": "main"}]},"build": {"devUrl": "http://localhost:3000","frontendDist": "../dist"},"bundle": {"active": true,"icon": "icons/icon.png","targets": ["deb", "msi", "dmg"],"createUpdaterArtifacts": true}
}

参考资料

  • Tauri v1配置文档
  • Tauri v2配置文档
  • Tauri v1配置Schema
  • Tauri v2配置Schema
http://www.xdnf.cn/news/3214.html

相关文章:

  • 全面解析SimHash算法:原理、对比与Spring Boot实践指南
  • transformer-实现解码器Decoder
  • DIT(Diffusion In Transformer)学习笔记
  • Java继承中super的使用方法
  • SI5338-EVB Usage Guide(LVPECL、LVDS、HCSL、CMOS、SSTL、HSTL)
  • 电子病历高质量语料库构建方法与架构项目(智能数据目录篇)
  • SD - WAN 跨境网络专线部署方式介绍
  • 大数据在远程医疗中的创新应用:如何重塑医疗行业的未来
  • python + segno 生成个人二维码
  • 全球气象站点年平均降水数据(1929-2024)
  • 大连理工大学选修课——机器学习笔记(4):NBM的原理及应用
  • 大连理工大学选修课——机器学习笔记(9):线性判别式与逻辑回归
  • 使用 ossutil 上传文件到阿里云 OSS
  • 基于连接感知的实时困倦分类图神经网络
  • 【数学】角谷猜想
  • 服务器热备份,服务器热备份的方法有哪些?
  • 猿人学web端爬虫攻防大赛赛题第13题——入门级cookie
  • 完美解决react-native文件直传阿里云oss问题一
  • Android学习总结之自定义view设计模式理解
  • Redis热key大key详解
  • ESP32开发-通过ENC28J60模块实现以太网设备
  • 从实列中学习linux shell6: 写一个 shell 脚本 过滤 恶意ip 攻击
  • css 数字从0开始增加的动画效果
  • 【数学建模国奖速成系列】优秀论文绘图复现代码(二)
  • DeepSeek V1:初代模型的架构与性能
  • 艺术与科技的双向奔赴——高一鑫荣获加州联合表彰
  • Java ResourceBundle 资源绑定详解
  • 腾讯元宝桌面客户端:基于Tauri的开源技术解析
  • Python GIL 与 pybind11 GIL管理机制
  • 模拟flexible.js 前端开发中的大屏布局方案