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.pswp.cn/diannao/81073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81073.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81073.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對js的Date二次封裝,繼承了原Date的所有方法,增加了自己擴展的方法,可以實現任意時間往前往后推算多少小時、多少天、多少周、多少月;

封裝js時間工具 概述 該方法繼承了 js 中 Date的所有方法;同時擴展了一部分自用方法: 1、任意時間 往前推多少小時,天,月,周;參數1、2必填,參數3可選beforeDate(num,formatter,dateVal); befo…

TimeDistill:通過跨架構蒸餾的MLP高效長期時間序列預測

原文地址:https://arxiv.org/abs/2502.15016 發表會議:暫定(但是Star很高) 代碼地址:無 作者:Juntong Ni (倪浚桐), Zewen Liu (劉澤文), Shiyu Wang&…

DeepSeek最新大模型發布-DeepSeek-Prover-V2-671B

2025 年 4 月 30 日,DeepSeek 開源了新模型 DeepSeek-Prover-V2-671B,該模型聚焦數學定理證明任務,基于混合專家架構,使用 Lean 4 框架進行形式化推理訓練,參數規模達 6710 億,結合強化學習與大規模合成數據…

如何用AI生成假期旅行照?

以下是2025年最新AI生成假期旅行照片的實用工具推薦及使用指南,結合工具特點、研發背景和適用場景進行綜合解析: 一、主流AI旅行照片生成工具推薦與對比 1. 搜狐簡單AI(國內工具) ? 特點: ? 一鍵優化與背景替換&…

ElaticSearch

ElaticSearch: 全文搜索 超級強,比如模糊查詢、關鍵詞高亮等 海量數據 高效查詢,比傳統關系數據庫快得多(尤其是搜索) 靈活的數據結構(Schema靈活,可以動態字段) 分布式高可用,天…

Android開發,實現一個簡約又好看的登錄頁

文章目錄 1. 編寫布局文件2.設計要點說明3. 效果圖4. 關于作者其它項目視頻教程介紹 1. 編寫布局文件 編寫activity.login.xml 布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android…

機器學習:【拋擲硬幣的貝葉斯后驗概率】

首先,拋硬幣的問題通常涉及先驗概率、似然函數和后驗概率。假設用戶可能想通過觀察一系列的正面(H)和反面(T)來更新硬幣的偏差概率。例如,先驗可能假設硬幣是均勻的,但隨著觀察到更多數據,用貝葉斯定理計算后驗分布。 通常,硬幣的偏差可以用Beta分布作為先驗,因為它…

Echarts 問題:自定義的 legend 點擊后消失,格式化 legend 的隱藏文本樣式

文章目錄 問題分析實現步驟代碼解釋問題 如下圖所示,在自定義的 legend 點擊后會消失 分析 我把隱藏的圖例字體顏色設為灰色,可以借助 legend.formatter 和 legend.textStyle 結合 option.series 的 show 屬性來達成。以下是具體的實現步驟和示例代碼: <!DOCTYPE ht…

光譜相機如何提升目標檢測與識別精度

光譜相機&#xff08;多光譜/高光譜&#xff09;通過捕捉目標在多個波段的光譜特征&#xff0c;能夠揭示傳統RGB相機無法感知的材質、化學成分及物理特性差異。以下是提升其目標檢測與識別精度的核心方法&#xff1a; ?1. 硬件優化&#xff1a;提升數據質量? ?(1) 光譜分辨…

springboot項目配置nacos,指定使用環境

遇到這樣一個問題&#xff0c;在開發、測試、生成環境之間切換的問題。 大多數的操作是通過修改spring.profiles.active來確定指向使用的環境配置文件&#xff0c;對應項目中需要增加對應的配置文件。 但是現在幾乎所有公司都會有代碼管理不管是SVN、git&#xff0c;這樣就會涉…

AI代碼審查的落地實施方案 - Java架構師面試實戰

AI代碼審查的落地實施方案 - Java架構師面試實戰 本文通過模擬一位擁有十年Java研發經驗的資深架構師馬架構與面試官之間的對話&#xff0c;深入探討了AI代碼審查的落地實施方案。 第一輪提問 面試官&#xff1a; 馬架構&#xff0c;請介紹一下您對AI代碼審查的理解。 馬架…

TDengine 訂閱不到數據問題排查

簡介 TDengine 在實際生產應用中&#xff0c;經常會遇到訂閱程序訂閱不到數據的問題&#xff0c;總結大部分都為使用不當或狀態不正確等問題&#xff0c;需手工解決。 查看服務端狀態 通過 sql 命令查看有問題的 topic 和consumer_group 組訂閱是否正常。 select * from inf…

二、UI自動化測試02--元素定位方法

目錄 一、定位?組元素?法二、XPath 定位?法1. 路徑策略1.1 路徑值獲取?法 2. 利?元素屬性策略利?元素屬性策略的注意事項 3. 屬性和邏輯結合4. 層級和屬性結合策略5. XPath 延伸?法 三、CSS 定位?法1. CSS 策略: id選擇器/class選擇器/元素選擇器/屬性選擇器2. 屬性選擇…

HotSpot的算法細節

可達性分析算法 以一系列“GC Roots”根對象作為起始節點集&#xff0c;從這些節點開始&#xff0c;根據引用關系向下搜索&#xff0c;搜索過程所走過的路徑稱為“引用鏈”&#xff08;Reference Chain&#xff09;&#xff0c;如果某個對象到GC Roots間沒有任何引用鏈相連&am…

Transformer數學推導——Q27 證明時序注意力(Temporal Attention)在視頻模型中的幀間依賴建模

該問題歸類到Transformer架構問題集——注意力機制——跨模態與多模態。請參考LLM數學推導——Transformer架構問題集。 在視頻理解任務中&#xff0c;捕捉幀與幀之間的時間依賴關系&#xff08;如動作的連貫性、物體的運動軌跡&#xff09;是核心挑戰。時序注意力&#xff08…

服務器和數據庫哪一個更重要

在當今數字化的時代&#xff0c;服務器和數據庫都是構建和運行各種應用系統的關鍵組成部分&#xff0c;要說哪一個更重要&#xff0c;其實很難簡單地給出定論。 服務器就像是一個強大的引擎&#xff0c;為應用程序提供了穩定的運行環境和高效的計算能力。它負責接收和處理來自…

【Android】四大組件之Service

目錄 一、什么是Service 二、啟停 Service 三、綁定 Service 四、前臺服務 五、遠程服務擴展 六、服務保活 七、服務啟動方法混用 你可以把Service想象成一個“后臺默默打工的工人”。它沒有UI界面&#xff0c;默默地在后臺干活&#xff0c;比如播放音樂、下載文件、處理…

pytest 技術總結

目錄 一 pytest的安裝&#xff1a; 二 pytest有三種啟動方式&#xff1a; 三 用例規則&#xff1a; 四 配置框架&#xff1a; 一 pytest的安裝&#xff1a; pip install pytest # 安裝 pip install pytest -U # 升級到最新版 二 pytest有三種啟動方式&#xff1a; 1…

redis 有序集合zrange和zrangebyscore的區別

起因是查詢數據&#xff0c;用了zrangebyscore 但是一直顯示沒數據 具體命令zrangebyscore key 0 -1 withscores, 原有印象中一直是這么用的&#xff0c;但是突然查不出來了&#xff0c; 于是搜了下問題所在。 通過分數查看 不能用0和-1表示最小和最大&#xff0c;只能用分數來…