我已经用电子生成器做了一段时间我们的电子应用程序的英特尔构建,签署,并能够运行他们没有问题。
我现在正在尝试建立一个M1/arm构建,但是事实证明,这个构建的签名会导致渲染器崩溃。不对构建进行签名并不会导致崩溃。这不是情报部门的问题。(无论构建机器是英特尔还是arm,以及随后是否调用公证都是一致的)
在应用程序启动期间,我看到了以下内容(特别是顶部的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版本的应用程序。我不知道仅仅在一个体系结构上签名会如何影响渲染器的崩溃。
我该怎么解决这个问题?
发布于 2022-04-06 00:02:32
我不确定我们正在经历与您相同的问题,但是下面的步骤为我们的用户解决了这样的问题。
在我们的例子中,它是由本机依赖关系引起的。本机依赖项的.node
文件被视为单独的可执行文件,在正常情况下需要进行签名。当它们不存在的时候,沙箱似乎只发生在带有新的M1芯片的机器上。
我不确定所有这些更改是否必要,因为我们没有一台带有M1芯片的机器。我会更新这个答案,因为我削减它,但这可能需要一段时间,因为我们缺乏硬件。
,以下是我们根据我的研究实现的三个变化:
entitlements.plist
至少有以下内容。此外,如果使用默认plist
,请确保复制默认electron-notarize
的属性。 <dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
entitlements
和 entitlementsInherit
(见文档)指定应享权利文件asarUnpack
添加以下内容asarUnpack: ['**/*.node']
请务必让我知道这是否有帮助!
https://stackoverflow.com/questions/71699960
复制相似问题