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

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 }}

http://www.lryc.cn/news/496443.html

相关文章:

  • Python爬虫与窗口实现翻译小工具(仅限学习交流)
  • 紫光展锐联合上汽海外发布量产车型,赋能汽车智能化
  • Maven 打包出现问题解决方案
  • 第四话:JS中的eval函数
  • 歇一歇,写写段子
  • TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小
  • Linux Find 命令详情解释
  • 2024年认证杯SPSSPRO杯数学建模A题(第一阶段)保暖纤维的保暖能力全过程文档及程序
  • Milvus python库 pymilvus 常用操作详解之Collection(下)
  • 李飞飞:Agent AI 多模态交互的前沿探索
  • [October 2019]Twice SQL Injection
  • Python爬虫——城市数据分析与市场潜能计算(Pandas库)
  • 如何搭建JMeter分布式集群环境来进行性能测试
  • 【Halcon】 derivate_gauss
  • stm32中systick时钟pinlv和系统节拍频率有什么区别,二者有无影响?
  • 柔性数组详解+代码展示
  • 前端入门指南:Webpack插件机制详解及应用实例
  • C++备忘录模式
  • 【Electron学习笔记(四)】进程通信(IPC)
  • Java 中的 remove 方法深度解析
  • 企业品牌曝光的新策略:短视频矩阵系统
  • 【初阶数据结构与算法】二叉树顺序结构---堆的应用之堆排、Top-K问题
  • vue3 + ts 使用 el-tree
  • Create Stunning Word Clouds with Ease!
  • html+css网页设计 旅游 马林旅行社5个页面
  • python selenium(4+)+chromedriver最新版 定位爬取嵌套shadow-root(open)中内容
  • React基础教程(11):useCallback记忆函数的使用
  • arp-scan 移植到嵌入式 Linux 系统是一个涉及多个步骤的过程
  • 【Linux】常用命令一
  • 在鲲鹏麒麟服务器上部署MySQL主从集群