tauri使用github action实现跨平台编译并解决编译错误等问题

正常编译为跨平台结果就像上面的,有mac/windows/linux的安装程序,直接下载就可以安装使用,我的这个livebox桌面端仓库地址:GitHub - Sjj1024/LiveBox: livebox,里面有编译文件可以参考。今天主要讲一下遇到的问题。

官方文档的坑

按照tauri官方文档的说明:跨平台编译 | Tauri Apps,其实只要在项目的根目录创建一个 .github/workflows/build.yml 文件,然后添加内容就可以了:

但是这里需要注意:

这里cache: 'yarn' # Set this to npm, yarn or pnpm.是有问题的,不能直接使用

修改为pnpm后,就会报错:

Run actions/setup-node@v3

13Attempt to resolve LTS alias from manifest...

14Found in cache @ /Users/runner/hostedtoolcache/node/20.15.0/arm64

Environment details

19Error: Unable to locate executable file: pnpm. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.

Install frontend dependencies

Build the app

Post Sync node version and setup cache

Post Rust cache

Post Checkout repository

Complete job

add tag · Sjj1024/LiveBox@07414e2 

这里需要修改为下面的逻辑:完成可用的内容

name: Release
on:
    push:
        tags:
            - 'v*'
    workflow_dispatch:

jobs:
    release:
        permissions:
            contents: write
        strategy:
            fail-fast: false
            matrix:
                platform: [macos-latest, ubuntu-20.04, windows-latest]
        runs-on: ${{ matrix.platform }}

        steps:
            - name: Checkout repository
              uses: actions/checkout@v3

            - 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 update
                  sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev

            - name: Rust setup
              uses: dtolnay/rust-toolchain@stable

            - name: Rust cache
              uses: swatinem/rust-cache@v2
              with:
                  workspaces: './src-tauri -> target'

            - name: Sync node version and setup cache
              uses: actions/setup-node@v4
              with:
                  node-version: 20

            - name: Install PNPM
              run: npm i -g pnpm

            - 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, yarn or pnpm.

            - name: Build the app
              uses: tauri-apps/tauri-action@v0

              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags.
                  releaseName: 'App Name v__VERSION__' # tauri-action replaces \_\_VERSION\_\_ with the app version.
                  releaseBody: 'See the assets to download and install this version.'
                  releaseDraft: true
                  prerelease: false

如果你使用的是npm的话,应该没有问题,但是我使用的pnpm,以为修改为npm就可以正常用了,但是依然报错:

Run actions/setup-node@v3
Attempt to resolve LTS alias from manifest...
Found in cache @ /Users/runner/hostedtoolcache/node/20.14.0/arm64
Environment details
/Users/runner/hostedtoolcache/node/20.14.0/arm64/bin/npm config get cache
/Users/runner/.npm
Error: Dependencies lock file is not found in /Users/runner/work/LiveBox/LiveBox. Supported file patterns: package-lock.json,npm-shrinkwrap.json,yarn.lock

这里就是说没有得到lock file,因为我使用pnpm,只会有pnpm-lock.yaml文件,所以只能使用pnpm安装。

其中文件里面的 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 是每个仓库都会默认包含的一个action环境变量,不用单独添加,可以给这个环境变量添加不同的权限:GitHub 会自动为每个运行的工作流发布 GitHub 令牌,而不需要进一步配置,这意味着不存在秘密泄漏的风险。但是,该令牌默认只具有读权限,并且在运行工作流时可能会出现“资源无法通过集成访问”错误。如果发生这种情况,您可能需要向此标记添加写权限。要做到这一点,进入您的 GitHub 项目设置,然后选择操作,向下滚动到“工作流权限”,并检查“读取和写入权限”。

mac安装包打开遇到的问题

提示:已损坏,无法打开,你应该将它移到废纸篓

提示:无法打开 “应用程序”,因为无法验证开发者。macOS 无法验证此 App 不包含恶意软件 

解决办法:

打开 “系统偏好设置…” - “安全性与隐私”,“通用” 标签页,如图勾选:允许 “任何来源” 下载的 App 运行:

如果还是报错,就可以祭出大招了,给文件赋予安全性设置。在终端粘贴复制输入命令:

sudo xattr -r -d com.apple.quarantine

然后打开 Finder进入 “应用程序” 目录,找到该软件,将其图标拖到终端窗口,获取到文件路径,最终拼接为以下命令:

sudo xattr -r -d com.apple.quarantine /Applications/livebox.app

然后执行命令,输入系统密码即可。完成上述步骤即可完美运行应用。

输入一个直播间地址试试:完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/752629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标检测算法之RT-DETR

RT-DETR算法理解 BackgroundModel ArchitectureEfficient Hybrid EncoderUncertainty-minimal Query Selection 总结 Background Real-time Detection Transformer(RT-DETR)是一个基于tranformer的实时推理目标检测模型。RT-DETR是2023年百度发布的一个…

【MTK平台】如何学习Bluedroid A2DP Code

一 Bluedroid A2DP架构图 备注: vendor/mediatek/proprietary/packages/modules/Bluetooth/system/audio_a2dp_hw/src 目录下编译生成audio.a2dp.default.so,主要实现a2dp做为设备的功能 二 A2DP File Hierarchy ModuleFileDescriptionAudio HAL (hardware/libhardware/…

小程序发布必须进行软件测试吗?测试内容有哪些?

在如今移动互联网时代,小程序已成为许多企业广泛采用的一种营销手段,然而,发布小程序之前进行充分的软件测试是至关重要的,因为它不仅可以确保小程序的质量,还可以避免潜在的风险和损失。 在进行小程序发布前进行软件…

【大模型】大模型微调方法总结(四)

1. P-Tuning v1 1.背景 大模型的Prompt构造方式严重影响下游任务的效果。比如:GPT-3采用人工构造的模版来做上下文学习(in context learning),但人工设计的模版的变化特别敏感,加一个词或者少一个词,或者变…

DIY:在您的 PC 上本地使用 Stable Diffusion AI 模型生成图像

前言 随着DALL-E-2和Midjourney的发布,您可能听说过最近 AI 生成艺术的繁荣。这些人工智能模型如何在几秒钟内创造性地生成逼真的图像,这绝对是令人兴奋的。您可以在这里查看其中的一些:DALL-E-2 gallery和Midjourney gallery 但是这些模型…

DAY16-力扣刷题

1.不同的二叉搜索树2 95. 不同的二叉搜索树 II - 力扣(LeetCode) 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 方法一:回溯 class Solutio…

聚观早报 | iPhone 16核心硬件曝光;三星Galaxy全球新品发布会

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 6月28日消息 iPhone 16核心硬件曝光 三星Galaxy全球新品发布会 苹果正多方下注布局AI商店 黄仁勋2024年薪酬3400…

Kotlin设计模式:深入理解桥接模式

Kotlin设计模式:深入理解桥接模式 在软件开发中,随着系统需求的不断增长和变化,类的职责可能会变得越来越复杂,导致代码难以维护和扩展。桥接模式(Bridge Pattern)是一种结构型设计模式,它通过…

Nest 的 IoC 机制

后端系统中,会有很多对象: Controller 对象:接收 http 请求,调用 Service,返回响应 Service 对象:实现业务逻辑 Repository 对象:实现对数据库的增删改查 此外,还有数据库链接对…

【吊打面试官系列-MyBatis面试题】MyBatis 框架的缺点?

大家好,我是锋哥。今天分享关于 【MyBatis 框架的缺点?】面试题,希望对大家有帮助; MyBatis 框架的缺点? 1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底…

工作备忘录哪个好用 好用的工作备忘录

在繁忙的工作环境中,备忘录就像是我手中的一把利剑,助我斩断杂乱的思绪,让工作变得井井有条。每当任务堆积如山,或是灵感与琐事交织时,我总会依赖我的备忘录来帮我理清头绪。 想象一下,你正忙于一个大型项…

小区物业管理收费系统源码小程序

便捷、透明、智能化的新体验 一款基于FastAdminUniApp开发的一款物业收费管理小程序。包含房产管理、收费标准、家属管理、抄表管理、在线缴费、业主公告、统计报表、业主投票、可视化大屏等功能。为物业量身打造的小区收费管理系统,贴合物业工作场景,轻…

RabbitMQ实践——搭建单人聊天服务

大纲 创建Core交换器用户登录发起聊天邀请接受邀请聊天实验过程总结代码工程 经过之前的若干节的学习,我们基本掌握了Rabbitmq各个组件和功能。本文我们将使用之前的知识搭建一个简单的单人聊天服务。 基本结构如下。为了避免Server有太多连线导致杂乱,下…

【MySQL基础篇】概述及SQL指令:DDL及DML

数据库是一个按照数据结构来组织、存储和管理数据的仓库。以下是对数据库概念的详细解释:定义与基本概念: 数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库不仅仅是数据的简单堆积,而是遵循一定的规则…

可用的搜索引擎

presearchhttps://presearch.com/yandexhttps://yandex.com/ 以上,目前均不需科学上网。

GEOS学习笔记(一)

下载编译GEOS 从Download and Build | GEOS (libgeos.org)下载geos-3.10.6.tar.bz2 使用cmake-3.14.0版本配置VS2015编译 按默认配置生成VS工程文件 编译后生成geos.dll,geos_c.dll 后面学习使用C接口进行编程

PCB在工业领域的应用以及人工智能的影响。

什么是pcb呢? PCB,全称Printed Circuit Board,中文名称为印制电路板,也被称为印刷线路板或印制板1。这是一种重要的电子部件,主要由绝缘基板、连接导线和装配焊接电子元器件的焊盘组成。PCB的主要作用是作为电子元器件的支撑体和电气连接的载体,它能够简化电子产品的装配…

三分钟快速搭建基于FastAPI的AI Agent应用!

点击下方“JavaEdge”,选择“设为星标” 第一时间关注技术干货! 免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案…

【鸿蒙学习笔记】页面和自定义组件生命周期

官方文档:页面和自定义组件生命周期 目录标题 [Q&A] 都谁有生命周期? [Q&A] 什么是组件生命周期? [Q&A] 什么是组件?组件生命周期 [Q&A] 什么是页面生命周期? [Q&A] 什么是页面?页面生…

代码随想录算法训练营第五十二天| [KC]100. 岛屿的最大面积、101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题

[KamaCoder] 100. 岛屿的最大面积 [KamaCoder] 100. 岛屿的最大面积 文章解释 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直…