为啥电子应用可以在 MAC App Store 上发布?

Posted

技术标签:

【中文标题】为啥电子应用可以在 MAC App Store 上发布?【英文标题】:Why can electron app be published on MAC App Store?为什么电子应用可以在 MAC App Store 上发布? 【发布时间】:2018-12-25 03:36:29 【问题描述】:

根据这个guideline,电子应用可以发布到MAC App Store。 Electron 本身基于 chromium 和 node.js,它们都基于支持 JIT 的 v8 js 引擎。但据我所知,MAC App Store 不允许 JIT 编译器。那么如何绕过这个限制呢?

【问题讨论】:

【参考方案1】:

只要二进制文件保持不变并且应用程序继续按照商店中宣传的方式运行,这并不违反 Apple 的开发者计划指南。

https://developer.apple.com/programs/information/Apple_Developer_Program_Information_8_12_15.pdf

3.3.2 除下一段所述外,应用程序不得下载或安装可执行代码。解释的代码只能是 如果所有脚本、代码和解释器都在应用程序中使用 打包在应用程序中,未下载。唯一的例外 以上是 Apple 下载并运行的脚本和代码 内置 WebKit 框架或 javascriptCore,前提是这样 脚本和代码不会改变应用程序的主要目的 通过提供与 提交给 应用商店。

对于提交给 Apple 进行分发的 OS X 应用程序 在 App Store 上,应用程序可以安装或运行解释或 结合使用的可执行代码(例如插件和扩展) 只要这样的代码:(a)不改变 应用程序提交的二进制文件,否则不会 被视为更新(由 Apple 自行决定);和 (b) 不会通过以下方式改变申请的主要目的 提供与 提交给 应用商店。

【讨论】:

不是针对苹果的沙盒吗?我一直认为 chrome for ios 无法嵌入 v8,因为 v8 的 JIT 违反了 Apple 的沙盒限制。 iOS 不允许第三方应用(如 V8)进行 JIT 编译。 MacOS 可以(并且 V8 在那里运行,作为 Electron 或 Chrome 的一部分,或者单独运行或在其他嵌入器中)。 如果我开发了一个嵌入 v8 作为 js 引擎的 Mac 应用程序,App Store 是否允许该应用程序下载 js 代码并在应用程序运行期间执行它,就像 react native 一样(参见@987654322 @)?如果 App 选择 javascriptcore 而不是 v8 怎么办?

以上是关于为啥电子应用可以在 MAC App Store 上发布?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我可以在没有任何配置文件的情况下从 App Store 运行应用程序?

在 Mac App Store 和外部分发

是否可以仅为 64 位架构构建 Mac App Store 应用程序?

iOS App Store 促销代码显示“必须使用 Mac 兑换”

带有 Safari 扩展的 Mac App Store 应用程序

在 Mac App Store 上提交 Qt 5.3 应用程序以供审核