You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么打包后我的Tauri应用性能大幅下降?

问题分析与解决方案

针对你在Intel Mac上Tauri打包后视频播放卡顿的问题,结合开发模式正常、Windows版本无异常的情况,核心原因大概率集中在Mac平台特有的打包配置、沙箱限制或资源访问逻辑上,以下是具体排查方向和解决方法:

1. 静态资源路径解析问题

开发模式下,视频文件直接从本地/public目录读取,路径逻辑简单;但Mac打包后,静态资源会被打包到App包的Contents/Resources目录下,直接使用相对路径可能导致WebView通过低效的方式读取文件(比如通过网络协议而非本地文件协议)。

解决方法:
通过Tauri的资源路径API获取视频的绝对路径,替换相对路径:

  • 在Svelte组件中调用Tauri命令获取资源目录:
<script>
  import { invoke } from '@tauri-apps/api/tauri';
  let videoSrc = '';

  async function initVideo() {
    const resourceDir = await invoke('get_resource_directory');
    videoSrc = `file://${resourceDir}/your-video.mp4`;
  }

  initVideo();
</script>

<video controls preload="auto" src={videoSrc}></video>
  • 在src-tauri/src/main.rs中添加对应的命令:
#[tauri::command]
fn get_resource_directory() -> std::path::PathBuf {
    tauri::api::path::resource_dir().expect("Failed to get resource directory")
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![get_resource_directory])
        .run(tauri::generate_context!())
        .expect("Error running Tauri app");
}

2. Mac沙箱与权限限制

Tauri默认给Mac应用启用沙箱机制,可能限制了WebView对应用包内资源的读取效率,尤其是大文件的读取。

解决方法:
修改tauri.conf.json中的Mac权限配置:

{
  "tauri": {
    "macOS": {
      "entitlements": "entitlements.plist",
      "hardenedRuntime": true
    }
  }
}

然后在项目根目录创建entitlements.plist,添加允许读取应用包内资源的权限:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.security.app-sandbox</key>
  <true/>
  <key>com.apple.security.files.user-selected.read-only</key>
  <true/>
  <!-- 允许访问应用包内资源 -->
  <key>com.apple.security.files.bookmarks.app-scope</key>
  <true/>
</dict>
</plist>

3. WebView硬件加速未启用

Mac上的WebKit(Tauri默认WebView)在打包后的应用中可能默认关闭了硬件加速,导致视频解码全靠CPU,出现卡顿。

解决方法:
在tauri.conf.json中强制启用硬件加速:

{
  "tauri": {
    "windows": [
      {
        "webview": {
          "hardwareAcceleration": "on",
          "enableWebgl": true
        }
      }
    ]
  }
}

4. 打包时资源压缩问题

部分打包流程可能会对MP4文件进行不必要的压缩或转码,导致文件读取效率下降。

解决方法:
确保tauri.conf.json中不对视频文件进行压缩处理:

{
  "build": {
    "assets": {
      "exclude": ["**/*.mp4"]
    }
  }
}

同时确认Vite不对MP4文件进行额外处理,在vite.config.js中添加:

export default {
  build: {
    assetsInlineLimit: 0,
    rollupOptions: {
      output: {
        assetFileNames: (assetInfo) => {
          if (assetInfo.name.endsWith('.mp4')) {
            return 'assets/[name][extname]';
          }
          return 'assets/[name]-[hash][extname]';
        }
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者nicholas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:32:12