首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为M1 macs签名电子构建会导致渲染器崩溃

为M1 macs签名电子构建会导致渲染器崩溃
EN

Stack Overflow用户
提问于 2022-03-31 22:51:56
回答 1查看 1.1K关注 0票数 3

我已经用电子生成器做了一段时间我们的电子应用程序的英特尔构建,签署,并能够运行他们没有问题。

我现在正在尝试建立一个M1/arm构建,但是事实证明,这个构建的签名会导致渲染器崩溃。不对构建进行签名并不会导致崩溃。这不是情报部门的问题。(无论构建机器是英特尔还是arm,以及随后是否调用公证都是一致的)

在应用程序启动期间,我看到了以下内容(特别是顶部的v8致命错误,这是这里关注的主要问题):

代码语言:javascript
运行
复制
[...]
<--- Last few GCs --->


<--- JS stacktrace --->

[22739:0331/171516.826773:FATAL:v8_initializer.cc(820)] 
render-process-gone { reason: 'crashed', exitCode: 5 }
[...]
Error sending from webFrameMain:  Error: Render frame was disposed before WebFrameMain could be accessed
    at EventEmitter.n.send (node:electron/js2c/browser_init:169:417)
    at EventEmitter.b.send (node:electron/js2c/browser_init:165:2494)
    at c.<anonymous> (/Users/armelchesnais/Documents/Rave/desktop/dist/mac-arm64/Rave-blue.app/Contents/Resources/app/main.prod.js:2:587569)
    at c.emit (node:events:390:28)
    at c.emit (node:domain:475:12)
    at c.doCheckForUpdates (/Users/armelchesnais/Documents/Rave/desktop/dist/mac-arm64/Rave-blue.app/Contents/Resources/app/main.prod.js:2:993643)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at w.retries (/Users/armelchesnais/Documents/Rave/desktop/dist/mac-arm64/Rave-blue.app/Contents/Resources/app/main.prod.js:2:588005)
Error sending from webFrameMain:  Error: Render frame was disposed before WebFrameMain could be accessed
    at EventEmitter.n.send (node:electron/js2c/browser_init:169:417)
    at EventEmitter.b.send (node:electron/js2c/browser_init:165:2494)
    at BrowserWindow.<anonymous> (/Users/armelchesnais/Documents/Rave/desktop/dist/mac-arm64/Rave-blue.app/Contents/Resources/app/main.prod.js:2:632050)
    at BrowserWindow.emit (node:events:390:28)
    at BrowserWindow.emit (node:domain:475:12)

因此,我无法分发arm/M1版本的应用程序。我不知道仅仅在一个体系结构上签名会如何影响渲染器的崩溃。

我该怎么解决这个问题?

  • 电子v17.1.2
  • 电子生成器23.0.2
EN

Stack Overflow用户

发布于 2022-04-06 00:02:32

我不确定我们正在经历与您相同的问题,但是下面的步骤为我们的用户解决了这样的问题。

在我们的例子中,它是由本机依赖关系引起的。本机依赖项的.node文件被视为单独的可执行文件,在正常情况下需要进行签名。当它们不存在的时候,沙箱似乎只发生在带有新的M1芯片的机器上。

我不确定所有这些更改是否必要,因为我们没有一台带有M1芯片的机器。我会更新这个答案,因为我削减它,但这可能需要一段时间,因为我们缺乏硬件。

,以下是我们根据我的研究实现的三个变化:

  1. 确保您的entitlements.plist至少有以下内容。此外,如果使用默认plist,请确保复制默认electron-notarize的属性。
代码语言:javascript
运行
复制
  <dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
  </dict>

来源

  1. entitlements entitlementsInherit (见文档)指定应享权利文件
  2. asarUnpack添加以下内容
代码语言:javascript
运行
复制
asarUnpack: ['**/*.node']

请务必让我知道这是否有帮助!

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71699960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档