TRTC Electron SDK 从 10.6.403 版本开始,支持构建 X64 和 ARM64 双架构包
构建双架构包,需要用到 electron-builder 的 --universal 命令行参数。
注意:X64 的应用安装包可以在 Mac M1 芯片的机器上运行,是因为 Mac 系统做了兼容,实际运行的是 X64 指令,相比执行 ARM64 指令,性能较差。另外,TRTC Electron SDK 默认使用硬件完成音视频编解码,在硬件不支持或处理能力不足时,会在软件层进程音视频编解码,此时在 M1(ARM64架构)芯片上执行 X64 指令,性能会差很多。
以下代码并不完整,仅显示 Mac 双架构打包的关键配置。
代码文件:package.json
{
"build": {
"asar": true,
"asarUnpack": "**\\*.{node,dll}",
"files": [
"!node_modules/trtc-electron-sdk/build/mac-framework"
],
"mac": {
"extraFiles": [
{
"from": "node_modules/trtc-electron-sdk/build/Release/${arch}/trtc_electron_sdk.node",
"to": "./Resources"
},
{
"from": "node_modules/trtc-electron-sdk/build/mac-framework/${arch}/",
"to": "./Frameworks"
}
],
"target": [
"dmg"
]
},
"win": {
...
}
}
}
配置说明:
以下代码并不完整,仅显示 Mac 双架构打包的关键配置。
代码文件:./.erb/configs/webpack.config.base.js
注意 .node 文件加载路径相关的配置和代码,需要与 electron-builder 中的配置保持一致,否则会导致构建或者运行时失败。
// 此处的路径,需要与 package.json 中 electron-builder 配置中 .node 文件夹在路径一只
const getRewritePath = function() {
console.log('getRewritePath:', process.env.NODE_ENV);
let rewritePathString = '';
if (process.env.NODE_ENV === 'production') {
rewritePathString = targetPlatform === 'win32' ? './resources' : '../Resources';
} else if (process.env.NODE_ENV === 'development') {
rewritePathString = 'node_modules/trtc-electron-sdk/build/Release';
}
return rewritePathString;
};
export default {
externals: [...Object.keys(externals || {})],
module: {
rules: [
{ test: /\.node$/, loader: 'native-ext-loader', options: { rewritePath: getRewritePath() } },
{
test: /\.[jt]sx?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
cacheDirectory: true,
},
},
},
],
},
};
文件路径:package.json
{
"scripts": {
...
"package": "node -r @babel/register ./.erb/scripts/clean.js dist release && yarn build && electron-builder build --publish never",
"package:mac-universal": "node -r @babel/register ./.erb/scripts/clean.js dist release && yarn build && electron-builder build --mac --universal --publish never",
...
},
}
在 Mac 设备上,执行 npm run package 或 yarn package 可以构建单架构包,执行 npm run package:mac-universal 或者 yarm package:mac-universal 可够构建双架构包,具体使用 npm 还是 yarn 执行命令,依赖工程自身情况,我们开源的教育 demo 需要使用 yarn。
注意命令中的 “--universal” 参数。
https://github.com/tencentyun/TUIRoom/tree/main/Electron
以下代码并不完整,仅显示 Mac 双架构打包的关键配置。
代码文件:electron-builder.json5
{
"asar": true,
"asarUnpack": "**\\*.{node,dll}",
"directories": {
"output": "release/${version}"
},
"files": [
"dist",
"!node_modules/trtc-electron-sdk/build/mac-framework"
],
"mac": {
"extraFiles": [
{
"from": "node_modules/trtc-electron-sdk/build/Release/${arch}/trtc_electron_sdk.node",
"to": "./Resources/app.asar.unpacked/node_modules/trtc-electron-sdk/build/Release"
},
{
"from": "node_modules/trtc-electron-sdk/build/mac-framework/${arch}/",
"to": "./Frameworks"
}
],
"target": [
"dmg"
],
}
}
配置说明:
文件路径:package.json
...
"scripts": {
"prebuild": "node scripts/build.mjs",
"build": "electron-builder",
"build:mac-universal": "npm run prebuild && electron-builder build --mac --universal",
...
},
...
在 Mac 设备上,执行 npm run build 可以构建单架构包,执行 npm run build:mac-universal 可够构建双架构包。
注意命令中的 “--universal” 参数。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。