@ electron/ 普遍
创建通用macOS电子应用程序
使用量
这个软件包需要一个x64的应用程序和一个arm64的应用程序,把它们粘在一起成一个 通用macOS 二进制。 。 。 .
注意参数必须是: 绝对 路径.
import { makeUniversalApp } from '@electron/universal';
await makeUniversalApp({
x64AppPath: 'path/to/App_x64.app',
arm64AppPath: 'path/to/App_arm64.app',
outAppPath: 'path/to/App_universal.app',
});
API 的全用法见 API 文档。 。 。 .
高级配置
基本使用模式将适用于大多数出盒的应用程序. 其他配置 高级用例的选项.
合并 ASAR 档案以减少应用大小
已添加 页:1
如果您正在使用 ASAR 档案存储您的 Electron app 的 JavaScript 代码, 您可以使用
mergeASARs 选项来合并您的 x64 和 arm64 ASAR 文件,以减少捆绑大小
输出通用应用程序.
如果一些文件只存在于x64应用中,而不存在于arm64版本(或反之),
您可以指定一个 minimatch 模式
内 singleArchFiles。 。 。 .
import { makeUniversalApp } from '@electron/universal';
await makeUniversalApp({
x64AppPath: 'path/to/App_x64.app',
arm64AppPath: 'path/to/App_arm64.app',
outAppPath: 'path/to/App_universal.app',
mergeASARs: true,
singleArchFiles: 'node_modules/some-native-module/lib/binding/Release/**', // if you have files in your asar that are unique to x64 or arm64 apps
});
若为 @electron/universal 检测未覆盖的架构独有文件
singleArchFiles 规则,错误将被丢出.
在您的通用应用程序中为某些二进制跳过唇形
已添加 1.3.0 (单位:千美元)
如果您的 Electron app 包含已合并的二进制资源
lipo 工具,提供 minimatch 模式以匹配 x64ArchFiles
参数将防止 @electron/universal 不再试图再次合并它们.
import { makeUniversalApp } from '@electron/universal';
await makeUniversalApp({
x64AppPath: 'path/to/App_x64.app',
arm64AppPath: 'path/to/App_arm64.app',
outAppPath: 'path/to/App_universal.app',
mergeASARs: true,
x64ArchFiles: '*/electron-helper', // `electron-helper` is a binary merged using `lipo`
});
若为 @electron/universal 检测到一个没有覆盖的唇形文件 x64ArchFiles 规则,
会出现错误.
包括已编码的应用程序捆绑到您的通用应用程序
已添加 页:1
默认情况下,合并进程将生成 ElectronAsarIntegrity 键
任意 Info.plist 在您的电子应用程序中的文件.
如果你的Electron应用 捆绑了另一个 .app 已经签名,您需要使用
页:1 infoPlistsToIgnore 选项来避免修改该应用程序的列表.
import { makeUniversalApp } from '@electron/universal';
await makeUniversalApp({
x64AppPath: 'path/to/App_x64.app',
arm64AppPath: 'path/to/App_arm64.app',
outAppPath: 'path/to/App_universal.app',
infoPlistsToIgnore: 'my-internal.app/Contents/Info.plist'
});
财务问题
为什么?
一个通用的应用程序只是x64的应用程序,而arm64的应用程序被粘合在一起,形成一个单一的应用程序. 因为它包含一个中的两个应用程序,所以其体积大了一倍.
合并您的 ASAR 捆绑可以显著缩小应用大小, 取决于大小
app.asar 档案是.
本地模块呢?
在盒子外,你不需要担心 建立通用版本你的 本地模块 。 只要您的x64和arm64应用在孤立状态下工作, 通用 应用也行.
请注意,如果您正在使用 mergeASARs,您可能需要添加特定架构
二进制资源到 singleArchFiles 模式.
见 合并辅助搜索和救援区的使用 举个例子.