electron使用electron-builder macOS windows 打包 签名 更新 上架
0. 前言
0.1 项目工程
看清目录结构,以便您阅读后续内容


0.2 参考资料
(1)macOS开发 证书等配置/打包后导出及上架
https://www.jianshu.com/p/c9c71f2f6eac首先需要为Mac App创建App ID: 填写信息如下—Description为"ProjectNameForMac"、Bundle ID为"com.CompanyName...
https://www.jianshu.com/p/c9c71f2f6eac(2) electron应用提交到Mac App Store(MAS)全流程
https://www.jianshu.com/p/3f4765c319b6
https://www.jianshu.com/p/3f4765c319b6
1. 安装electron-builder
2. macOS
2.1 创建 Certificates, Identifiers & Profiles Devices
在mac上安装xcode,打开xcode,然后按以下步骤操作。
(1) xcode的菜单栏:xcode > settings。登录apple id。

(2) 登录后,点击“Download Manual Profiles”,再然后点击“Manage Certificates...”
再添加下面4个证书,创建后,该证书会自动在 网页上显示出来。
Sign In - Apple
https://developer.apple.com/account/resources/certificates/list

(3)打开以下网址,就会看到前一步创建的 证书
https://developer.apple.com/account/resources/certificates/list

(4) 创建 Identifiers


(5)创建 Devices(这个自行百度吧)
(6)创建Profiles


2.2 下载 Certificates Profiles 到本地 resource文件中

点击 Certificates 列表中的证书,然后点击“download”

在 Profiles 列表中点击“download”

2.3 检查macOS系统的证书配置情况
在 2.1 的步骤用xcode创建证书后,证书会显示在 钥匙串 中(自行百度打开这个程序)
(1) 登录>我的证书 中会看到以下两个证书(还有一个证书 Mac Developer ID Application的证书让我删除了,没在截图中)

(2) 登录>密钥 中会看到以下四个密钥

(3) 系统>我的证书 中会看到以下一个证书

(4) 系统>证书 中会看到以下两个证书

注意注意注意注意注意:
(1) 在每一张单个截图(不是所有截图,只指单个截图)中,证书不能重复,切记(血的教训,不要问为什么,我也不能给你解释清楚)。
如果重复了,就删除这些证书,然后把 2.2下载的cer后缀的证书 在macOS中双击,则就会安装到 “钥匙串访问”程序中
(2) 如果在 系统>证书 的列表中找到“Apple Worldwide Developer Relations Certification Authority”,则从官网下载,至于下载哪个,我也忘记了,你自己 研究一下,大概是 截图中任意一个即可,呵呵。
(3)以上截图中证书的位置大抵如此,反正我就是这么成功的,我也没空再去研究了。如果你没成功,那可以参考我的截图中证书的位置,至少能成功。
https://www.apple.com/certificateauthority/

2.4 安装 provisionprofile 文件
我也不知道要不要安装,反正我是安装了,干脆你也安装吧。

安装后,在此处 会显示这玩意,貌似“greader_distribution.provisionprofile”装上上

2.4 导出 p12文件,以备后用




导出以下四个文件,导出时要求输入密码,你自己输入吧(假设我设置的密码为 gege123)
四个文件的名字各种对应哪个证书,你自己猜猜看。

2.5 再次查看证书情况
打开shell,输入如下命令
xcrun security find-identity -v -p codesigning
注意:不要他奶奶的切换到 sudo su,就用你的正常 用户

看到没,有4个证书安装成功了,如果不成功,就根据2.3重新来一次。
2.6 创建plist文件,以备后用
我也不知道为啥要搞这些文件,你搞就对了。
(1) entitlements.mas.loginhelper.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/></dict>
</plist>
(2) entitlements.mas.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.application-groups</key><array><string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string></array><key>com.apple.application-identifier</key><string>GN5XP7HD2C.cn.rouhuasuan.greader (改成你自己的哈)</string><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.cs.allow-jit</key><true/><key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/><key>com.apple.security.cs.allow-dyld-environment-variables</key><true/><key>com.apple.security.files.user-selected.read-only</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.files.downloads.read-write</key><true/></dict>
</plist>
(3)entitlements.mas.inherit.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.inherit</key><true/></dict>
</plist>
2.7 package.json 配置
2.7.1 整体配置
(1)总体配置如下,但是根据不同的包格式,得做简单修改。
(2)在后文我也不解释有啥区别,你自己对比一下就知道了。
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["dmg", "pkg", "mas", "mas-dev"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
2.7.2 编译mas-dev
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["mas-dev"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdev.p12
export CSC_KEY_PASSWORD=gege123
export CSC_NAME="penghui deng (8MUK7LXZQ5)"
yarn mac注意:yarn mac 也可以用 npm run mac代替
2.7.3 编译mas
这个是要发布到 mac store的,不能直接运行
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["mas"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac
2.7.4 编译dmg、pkg包
(1)package配置
{"name": "greader","productName": "greader","version": "22.7.8","description": "A reader with transparent window background, arbitrary window size, and auto-hide","author": {"name": "youername","email": "youeremail","url": "youer office site"},"main": "src/bootstrap.js","scripts": {"pack": " electron-builder --dir ","win": " electron-builder --win --x64","mac": " electron-builder --mac","postinstall": "electron-builder install-app-deps"},"keywords": [],"license": "MIT","dependencies": {"bytenode": "^1.5.0","dayjs": "^1.11.8","electron-log": "^4.4.8","iconv-lite": "^0.6.3","jschardet": "^3.0.0","node-machine-id": "^1.1.12","yarn": "^1.22.21"},"devDependencies": {"electron": "25.3.0","electron-builder": "^24.6.4"},"build": {"appId": "GN5XP7HD2C.cn.rouhuasuan.greader","productName": "Greader","copyright": "Copyright © 2021 Alaso","directories": {"buildResources": "build","output": "dist"},"mac": {"category": "public.app-category.utilities","target":["dmg", "pkg"],"hardenedRuntime": true,"gatekeeperAssess": false,"icon":"resource/mac.icns","entitlements": "./resource/entitlements.mas.plist","entitlementsInherit": "./resource/entitlements.mas.inherit.plist","extendInfo": {"ElectronTeamID": "GN5XP7HD2C","com.apple.developer.team-identifier": "GN5XP7HD2C","com.apple.application-identifier": "GN5XP7HD2C.cn.rouhuasuan.greader","Bundle name": "Greader","LSHasLocalizedDisplayName": true,"ITSAppUsesNonExemptEncryption": "NO"}},"mas": {"type": "distribution","identity": "penghui deng (GN5XP7HD2C)","hardenedRuntime" : false, "provisioningProfile": "./resource/greader_distribution.provisionprofile"},"masDev": {"type": "development","identity": "penghui deng (8MUK7LXZQ5)","hardenedRuntime": false,"provisioningProfile": "./resource/greader_development.provisionprofile"},"dmg": {},"pkg": {"identity": "penghui deng (GN5XP7HD2C)"},"win":{"target": ["nsis", "msi", "zip"],"icon": "resource/win.ico"},"nsis": {"oneClick": false,"perMachine": false,"allowToChangeInstallationDirectory": true},"msi": {"menuCategory": "bestapp"}}
}
(2)执行命令
export CSC_IDENTITY_AUTO_DISCOVERY=false
export CSC_LINK=/Users/dhzy/Desktop/project2/cer/appdis.p12
export CSC_KEY_PASSWORD=greader123
export CSC_NAME="penghui deng (GN5XP7HD2C)"
yarn mac
2.7.5 相关异常问题
(1)如果出现什么 timestamp XXXX 的
没有联网,或者网络不好,多次尝试。也不要使用代理,代理可能导致失败。
(2)
相关文章:
electron使用electron-builder macOS windows 打包 签名 更新 上架
0. 前言 0.1 项目工程 看清目录结构,以便您阅读后续内容 0.2 参考资料 (1)macOS开发 证书等配置/打包后导出及上架 https://www.jianshu.com/p/c9c71f2f6eac首先需要为Mac App创建App ID: 填写信息如下—Description为"P…...
autojs项目搭建和入门实践
Auto.js 是一款无需root权限的javascript自动化软件,它可以帮助用户在手机上自动执行各种任务,比如自动填写表单、自动点击按钮、自动切换应用等,并且可以通过图形用户界面来管理和编辑脚本。 软件环境 操作系统:win10 VSCODE&…...
uni-app 跨端开发注意事项
文章目录 前言H5正常但App异常的可能性标题二H5正常但小程序异常的可能性小程序正常但App异常的可能性小程序或App正常,但H5异常的可能性App正常,小程序、H5异常的可能性使用 Vue.js 的注意区别于传统 web 开发的注意H5 开发注意微信小程序开发注意支付宝…...
在 vscode 中的json文件写注释,不报错的解决办法
打开 vscode 的「设置」,搜索:files: associations,然后添加 *.json jsonc最后...
基于uniapp的 电子书小程序——需求整理
前言 想开发一个很简单的 电子书阅读小程序,要怎么做的。下面从功能、数据库设计这一块来说一下。说不一定能从某个角度提供一些思路 开发语言 springcloud uniapp 小程序(vue2)mysql 说明 电子书的主题是电子书,我们在日常…...
Hutool HttpRequest 首次请求正常 第二次被系统拦截
Hutool HttpRequest 首次请求正常 第二次被系统拦截 功能描述异常现象错误代码 异常排查问题跟踪问题总结处理方案最终修改后的代码 功能描述 需要请求第三方某个接口,获取接口中的数据。 异常现象 使用main 方法 通过Hutool 工具类发出请求,获取数据…...
github国内访问小解(windows)
git 下载安装 使用 github 前必须确保电脑上已经安装了 Git,可以从 Git 官方网站去下载。 官方的网站在国内访问会比较慢,这里可以选择国内镜像:https://registry.npmmirror.com/binary.html?pathgit-for-windows/ github 之旅 确认电脑已…...
NX二次开发UF_CSYS_set_wcs_display 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CSYS_set_wcs_display Defined in: uf_csys.h int UF_CSYS_set_wcs_display(int display_status ) overview 概述 Set display of work coordinate system. 展示工作坐标系。 …...
DNS 区域传输 (AXFR)
漏洞描述 docker环境搭建 使用 AXFR 协议的 DNS 区域传输是跨 DNS 服务器复制 DNS 记录的最简单机制。为了避免在多个 DNS 服务器上编辑信息,可以在一台服务器上编辑信息,并使用 AXFR 将信息复制到其他服务器。但是,如果您不保护您的服务器&…...
Ubuntu 安装 JMeter:轻松上手
Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 要下载 Java,请遵…...
在工业生产环境下,服务器没有互联网,如何通过代理自己的电脑上互联网?
服务器主机是CentOS7操作系统.,服务器的局域网是10.0.6.x网段。我的笔记本的以太网口的局域网ip是也是10.0.6.x,由于这个10.0.6.x的整个局域网是没有拨号上网的所有无法访问互联网。 但是,如果笔记本脸上wifi,wifi的网段是192.168…...
【brpc学习实践六】backup request场景案例
应用场景 有时为了保证可用性,需要同时访问两路服务,哪个先返回就取哪个。在brpc中,这有多种做法,根据server是否挂在同一个命名服务内有所区别。 当后端server可以挂在一个命名服务内时 Channel开启backup request。这个Channel会先向其中一个server发送请求,如果在Ch…...
el-table导出为excel表格
目录 1.下载依赖 2.引入插件 3.定义函数 4.设置table的id 1.下载依赖 npm intall --save xlsx npm intall --save file-saver2.引入插件 import FileSaver from "file-saver"; import XLSX from "xlsx";3.定义函数 exportExcel() {let fix document…...
CVE-2022-0543(Redis 沙盒逃逸漏洞)
简介 CVE-2022-0543是一个与Redis相关的安全漏洞。在Redis中,用户连接后可以通过eval命令执行Lua脚本,但在沙箱环境中脚本无法执行命令或读取文件。然而,攻击者可以利用Lua沙箱中遗留的变量package的loadlib函数来加载动态链接库liblua5.1.s…...
查swap内存使用
查询linux的swap被什么使用了 查询centos的swap被什么进程使用了 swap内存被什么程序占用,什么程序使用了swap分区,占用swap内存的进程 查系统使用swap内存前10个进程: for i in $( cd /proc;ls |grep "^[0-9]"|awk $0 >10…...
Element UI的Tabs 标签页位置导航栏去除线条
在实际开发中,我们调整了相关样式,导致导航栏的相关样式跟随不上,如下图所示: 因为我跳转了前边文字的样式并以在导航栏添加了相关头像,导致右边的线条定位出现问题,我在想,要不我继续调整右边…...
【Python 训练营】N_1 验证密码
N_1 验证密码 题目 设计一个用户密码验证程序,要求密码输入只有3次机会,且密码中不能包含”*”字符。 分析 需要考虑3个问题:验证次数、特殊字符和正误密码判断;验证次数需要使用循环,3个问题需要用到分支结构&…...
Pinia 和 Vuex 的对比,storeToRefs 的原理
目录 1,Pinia 介绍2,和 Vuex 的对比3,storeToRefs 源码分析 1,Pinia 介绍 官网简介 Pinia 使用上的问题,官方文档很详细,这里不做赘述。 Pinia 是 Vue 的专属状态管理库,支持vue2和vue3&#x…...
Mycat分库分表的操作(配置)
Mycat是一个开源的分布式数据库中间件,它可以对数据库进行分库分表的操作,以下是Mycat分库分表的操作步骤: 配置数据源:将要操作的数据库和表通过Mycat的配置文件配置到数据源中。配置分片规则:根据分库分表的需求&am…...
android的canvas的clipRegion废弃替代代码
由于clipRegion的一些问题,导致他被废弃了,但又有时候会用到,所以写了一个工具类来替代它 代码如下 package com.example;import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.g…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

