tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录

这些error的坑,肯定是很多人不想看到的,我的开源软件PakePlus是使用tauri开发的,PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序,利用Tauri轻松构建轻量级多端桌面应用和多端手机应用,为了实现发布的时候支持mac的inter芯片和arm芯片,还有windows的inter芯片和arm芯片,需要编写github action的编译文件build.yml,tauri官网支持的并不是很完善,需要手动添加额外的平台,官方文档:GitHub | Tauri
这里记录一下编译的时候报错的解决办法,以及一个可以直接复制过去使用的文件。
常见报错
1.没有给x86_64-pc-windows-msvc配置target就会报下面的错
D:\a\PakePlus\PakePlus\src-tauri\target\release\bundle\nsis\PakePlus_0.3.2_x64-setup.exe
86Found release with tag main.
87Deleting existing PakePlus_0.3.2_x64_en-US.msi...
88Uploading PakePlus_0.3.2_x64_en-US.msi...
89Error: Not Found - REST API endpoints for release assets - GitHub Docs
解决办法:添加target

2.没有添加target属性还会报这个错
Run rustup target add
4error: error: the following required arguments were not provided:
5 <target>...
7Usage: rustup target add <target>...
9For more information, try '--help'.
因为Install rust target阶段需要安装声明好的依赖,没有就会报错:

3.没有安装aarch64-pc-windows-msvc依赖导致的
✓ built in 10.25s
53 Error failed to build app: Target aarch64-pc-windows-msvc is not installed (installed targets: i686-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-pc-windows-msvc). Please run `rustup target add aarch64-pc-windows-msvc`.
54 ELIFECYCLE Command failed with exit code 1.
55Error: Command failed with exit code 1: pnpm tauri build --target aarch64-pc-windows-msvc
要编译生成arm架构的windows安装包,就需要这个依赖支持,所以需要添加下面的步骤,然后配合matrix的平台一起使用:

4.在linux系统中安装依赖环境
Reading state information...
30E: Unable to locate package libwebkit2gtk-4.1-dev
31E: Couldn't find any package by glob 'libwebkit2gtk-4.1-dev'
32E: Couldn't find any package by regex 'libwebkit2gtk-4.1-dev'
33Error: Process completed with exit code 100.
Sync node version and setup cache
0s
install Rust stable
0s
Rust cache
0s
install frontend dependencies
0s
Run tauri-apps/tauri-action@v0
0s
Post Run pnpm/action-setup@v3
0s
Post Setup node
0s
Post Run actions/checkout@v4
0s
Complete job
0s
需要增加这一步:

分享一个直接可以使用的文件:
name: Release
on:push:tags:- 'v*'workflow_dispatch:inputs:branch:description: 'Branch to run the workflow on'required: truedefault: 'template'jobs:publish-tauri:permissions:contents: writestrategy:fail-fast: falsematrix:include:- platform: 'macos-latest' # for Arm based macs (M1 and above).target: 'aarch64-apple-darwin'args: '--target aarch64-apple-darwin'- platform: 'macos-latest' # for Intel based macs.target: 'x86_64-apple-darwin'args: '--target x86_64-apple-darwin'- platform: 'ubuntu-20.04'target: 'x86_64-unknown-linux-gnu'args: ''- platform: 'windows-latest'target: 'x86_64-pc-windows-msvc'- platform: 'windows-latest'target: 'i686-pc-windows-msvc'- platform: 'windows-latest'target: 'aarch64-pc-windows-msvc'args: '--target aarch64-pc-windows-msvc'runs-on: ${{ matrix.platform }}steps:- name: Checkout repositoryuses: actions/checkout@v3- name: Install rust targetrun: rustup target add ${{ matrix.target }}- name: Install dependencies (ubuntu only)if: matrix.platform == 'ubuntu-20.04'# You can remove libayatana-appindicator3-dev if you don't use the system tray feature.run: |sudo apt-get updatesudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev- name: Setup nodeuses: actions/setup-node@v4with:node-version: 20- uses: pnpm/action-setup@v3with:version: latest# 获取 pnpm 缓存- name: Sync node version and setup cacheuses: actions/setup-node@v4with:node-version: 20cache: pnpm- name: install Rust stableuses: dtolnay/rust-toolchain@stable # Set this to dtolnay/rust-toolchain@nightlywith:# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}- name: Rust cacheuses: swatinem/rust-cache@v2with:workspaces: './src-tauri -> target'- name: install frontend dependencies# If you don't have `beforeBuildCommand` configured you may want to build your frontend here too.run: pnpm install # change this to npm or pnpm depending on which one you use.- uses: tauri-apps/tauri-action@v0env:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}with:tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags.releaseName: 'PakePlus v__VERSION__' # tauri-action replaces \_\_VERSION\_\_ with the app version.releaseBody: 'This is a workflow to help you automate the publishing of your PakePlus project to GitHub Packages.'releaseDraft: falseprerelease: falsepublish: trueargs: ${{ matrix.args }}
相关文章:
tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录
这些error的坑,肯定是很多人不想看到的,我的开源软件PakePlus是使用tauri开发的,PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序,利用Tauri轻松构建轻量级多端桌面应用和多端手机应用,为了实现发布的时候…...
Python爬虫与窗口实现翻译小工具(仅限学习交流)
Python爬虫与窗口实现翻译小工具(仅限学习交流) 在工作中,遇到一个不懂的单词时,就会去网页找对应的翻译,我们可以用Python爬虫与窗口配合,制作一个简易的翻译小工具,不需要打开网页,自动把翻译结果显示出来。 整个过程比较简单。 # This is a sample Python script. …...
紫光展锐联合上汽海外发布量产车型,赋能汽车智能化
当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。 11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发…...
Maven 打包出现问题解决方案
我执行 mvn install 报如下错误 可是我在 web 模块中能正确引用到 common 的类,于是我把 web 引用到的 common 中的类先移动到 web 模块中,然后把 common 模块的类都删掉,然后再次执行 mvn install,结果报错如下: [ERROR] Faile…...
第四话:JS中的eval函数
theme: channing-cyan 1.不要使用eval! 如果你从来都没有用到过eval这个函数,甚至你都不知道这个函数的作用。那么我只能说:你做了一件正确的事情 o.O 虽然我这篇文章要说一下eval函数的一些能力和注意点,但是我希望࿰…...
歇一歇,写写段子
无聊的日子都在写段子1.0 中学的时候喜欢看意林之类的杂志, 里面的作者用乱七八糟的理由跑去旅游,然后说“阻碍你脚步的永远只有逃离的勇气和对生活的热爱”, 我觉得太对了,可惜 12306 付款方式里没有勇气和热爱,不…...
TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小
文章目录 一、认识TS1.1 JS 存在的问题1.2 TS的出现1.3 TS运行环境运行ts的三种方式 1.4 变量声明1.5 类型推断 二、数据类型2.1 JS数据类型(1) 数组Array(2) 对象Object(3) 其他类型 2.2 TS特有数据类型(1) any类型(2) unknown类型(3) void类型(4) never (了解)(5) tuple类型 …...
Linux Find 命令详情解释
文件查找 普通查询find /etc -maxdepth 1 -type f -name "pa*"命令 目录... 查找深度 类型 文件名称包含 # -type文件类型:f表示文件,不指定类型的话,文件和目录都会查找# -maxdepth查找深度:目录层级的意思࿰…...
2024年认证杯SPSSPRO杯数学建模A题(第一阶段)保暖纤维的保暖能力全过程文档及程序
2024年认证杯SPSSPRO杯数学建模 A题 保暖纤维的保暖能力 原题再现: 冬装最重要的作用是保暖,也就是阻挡温暖的人体与寒冷环境之间的热量传递。人们在不同款式的棉衣中会填充保暖材料,从古已有之的棉花、羽绒到近年来各种各样的人造纤维。不…...
Milvus python库 pymilvus 常用操作详解之Collection(下)
上篇博客 Milvus python库 pymilvus 常用操作详解之Collection(上) 主要介绍了 pymilvus 库中Collection集合的相关概念以及创建过程的代码实现,现在我们要在该基础上实现对于collection中插入数据的混合检索(基于dense vector 和…...
李飞飞:Agent AI 多模态交互的前沿探索
发布于:2024 年 11 月 27 日 星期三 北京 #RAG #李飞飞 #Agent #多模态 #大模型 Agent AI在多模态交互方面展现出巨大潜力,通过整合各类技术,在游戏、机器人、医疗等领域广泛应用。如游戏中优化NPC行为,机器人领域实现多模态操作等。然而,其面临数据隐私、偏见、可解释性…...
[October 2019]Twice SQL Injection
有一个登录框和一个注册页面,题目也说这个是二次注入,那么就用二次注入的payload就行 1 union select database()# //爆库 1 union select group_concat(table_name) from information_schema.tables where table_schemactftraining# //爆表 1 union …...
Python爬虫——城市数据分析与市场潜能计算(Pandas库)
使用Python进行城市市场潜能分析 简介 本教程将指导您如何使用Python和Pandas库来处理城市数据,包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能,这有助于了解各城市的经济影响力。 步骤 1: 准备环境 确保您的环境中安装了Python和以下库&…...
如何搭建JMeter分布式集群环境来进行性能测试
在性能测试中,当面对海量用户请求的压力测试时,单机模式的JMeter往往力不从心。如何通过分布式集群环境,充分发挥JMeter的性能测试能力?这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么,如何轻松搭建…...
【Halcon】 derivate_gauss
1、derivate_gauss Halcon中的derivate_gauss算子是一个功能强大的图像处理工具,它通过将图像与高斯函数的导数进行卷积,来计算各种图像特征。这些特征在图像分析、物体识别、图像增强等领域具有广泛的应用。 参数解释 Sigma:高斯函数的标准差,用于控制平滑的程度。Sigma…...
stm32中systick时钟pinlv和系统节拍频率有什么区别,二者有无影响?
在STM32中,SysTick时钟频率和系统节拍频率是两个不同的概念,它们之间存在区别,并且这种区别会对系统的运行产生一定的影响。以下是对这两个概念的详细解释以及它们之间关系的探讨: 一、SysTick时钟频率 定义:SysTick…...
柔性数组详解+代码展示
系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…...
前端入门指南:Webpack插件机制详解及应用实例
前言 在现代前端开发中,模块化和构建工具的使用变得越来越重要,而Webpack作为一款功能强大的模块打包工具,几乎成为了开发者的默认选择。Webpack不仅可以将各种资源(如JavaScript文件、CSS文件、图片等)打包成优化后的…...
C++备忘录模式
在读《大话设计模式》,在此记录有关C实现备忘录模式。 场景引入:游戏中的存档,比如打boss之前记录人物的血量等状态。 下面代码是自己根据理解实现的存档人物血量功能。 #include <iostream>using namespace std;//声明玩家类 class …...
【Electron学习笔记(四)】进程通信(IPC)
进程通信(IPC) 进程通信(IPC)前言正文1、渲染进程→主进程(单向)2、渲染进程⇌主进程(双向)3、主进程→渲染进程 进程通信(IPC) 前言 在Electron框架中&…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
