【发布时间】:2022-07-12 05:45:21
【问题描述】:
一段时间以来,我一直在使用 Electron-Builder 构建我们的 Electron 应用程序,对其进行签名,并且能够毫无问题地运行它们。
我现在正在尝试进行 M1/arm 构建,但事实证明,签署该构建会导致渲染器崩溃。不签署构建不会导致崩溃。这不是英特尔构建的问题。 (构建机器是intel还是arm,后续是否调用notarize一致)
我在应用程序启动期间看到以下内容(特别注意顶部的 v8 致命错误,这是这里的主要问题):
[...]
<--- 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
【问题讨论】:
-
我担心没有人能够帮助您理解这些错误,除非这是 Electron 本身的实际错误。你最好的办法可能是打开
main.prod.js文件,看看你是否能弄清楚抛出错误的行发生了什么,也许这可以给你一个线索。 -
关键错误:[22739:0331/171516.826773:FATAL:v8_initializer.cc(820)] render-process-gone { reason: 'crashed', exitCode: 5 } 发生在 webFrameMain 错误之前,当您尝试向不存在的 webContent 发送消息时会发生这种情况。我想弄清楚的是为什么渲染器进程仅在 m1 上签名时才会在 v8 级别崩溃(未在 intel/M1 版本上签名时不会崩溃,在已签名的 intel 版本上不会崩溃)。据我所知,这将是一个特定于电子的错误,而不是 JS。
-
考虑将此报告为
electron-builder问题跟踪器上的错误。这可能不是一个错误,但我认为 Stack Overflow 上的任何人都不会得到答案。 -
我也已经在那里举报了。我想我也会在这里问,以防有人知道,而不是在问这里之前浪费时间等待问题跟踪器是否接受它。
-
无论我在哪里签名。所以 M1 构建在 intel = crash 上签名。在 M1 上签名的 M1 构建 = 崩溃。英特尔在任何地方构建签名/未签名 = 很好。 M1 构建无符号 = 很好。当签署为 m1 版本时,我还有一个样板版本的电子可以正常运行。所以我怀疑本机依赖可能是原因。 (我怀疑基于 JS 的依赖会导致问题)。
标签: electron apple-m1 electron-builder electron-packager code-signing-certificate