Electron 向Mac App Store 应用提交向导的方法

自从 v0.34.0, Electron 就允许提交应用包到 Mac App Store(MAS) . 这个向导提供的信息有 : 如何提交应用和 MAS 构建的限制.

注意: 从 v0.36.0,当应用成为沙箱之后,会有一个 bug 阻止 GPU 进程开启 , 所以在这个 bug 修复之前,建议使用 v0.35.x .更多查看 issue #3871 .

注意: 提交应用到 Mac App Store 需要参加 Apple DeveloperProgram , 这需要花钱.

如何提交

下面步骤介绍了一个简单的提交应用到商店方法.然而,这些步骤不能保证你的应用被 Apple 接受;你仍然需要阅读 Apple 的 Submitting Your App 关于如何满足 Mac App Store 要求的向导.

获得证书

为了提交应用到商店,首先需要从 Apple 获得一个证书.可以遵循 existing guides.

App 签名

获得证书之后,你可以使用 Application distribution 打包你的应用, 然后前往提交你的应用.这个步骤基本上和其他程序一样,但是这 key 一个个的标识 Electron 的每个依赖.

首先,你需要准备2个授权文件 .

child.plist:

<?xml version=1.0 encoding=UTF-8?><!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd><plist version=1.0>
  <dict>
    <key>com.apple.security.app-sandBox</key>
    <true/>
    <key>com.apple.security.inherit</key>
    <true/>
  </dict></plist>

parent.plist:

<?xml version=1.0 encoding=UTF-8?><!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd><plist version=1.0>
  <dict>
    <key>com.apple.security.app-sandBox</key>
    <true/>
  </dict></plist>

然后使用下面的脚本标识你的应用 :

#!/bin/bash# Name of your app.APP=YourApp# The path of you app to sign.APP_PATH=/path/to/YouApp.app# The path to the location you want to put the signed package.RESULT_PATH=~/Desktop/$APP.pkg# The name of certificates you requested.APP_KEY=3rd Party Mac Developer Application: Company Name (APPIDENTITY)INSTALLER_KEY=3rd Party Mac Developer Installer: Company Name (APPIDENTITY)FRAMEWORKS_PATH=$APP_PATH/Contents/Frameworkscodesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/Electron Framework.framework/Versions/Acodesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/$APP Helper.app/codesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/$APP Helper EH.app/codesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/$APP Helper NP.app/if [ -d $FRAMEWORKS_PATH/Squirrel.framework/Versions/A ]; then
  # Signing a non-MAS build.
  codesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/Mantle.framework/Versions/A
  codesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/ReactiveCocoa.framework/Versions/A
  codesign --deep -fs $APP_KEY --entitlements child.plist $FRAMEWORKS_PATH/Squirrel.framework/Versions/Aficodesign -fs $APP_KEY --entitlements parent.plist $APP_PATHproductbuild --component $APP_PATH /Applications --sign $INSTALLER_KEY $RESULT_PATH

如果你是 OS X 下的应用沙箱使用新手,应当仔细阅读 Apple 的 Enabling App Sandbox 来有一点基础,然后向授权文件添加你的应用需要的许可 keys .

上传你的应用并检查提交

在签名应用之后,可以使用应用 Loader 来上传到 iTunes 链接处理 , 确保在上传之前你已经 created a record. 然后你能 @L_404_6@.

MAS构建限制

为了让你的应用沙箱满足所有条件,在 MAS 构建的时候,下面的模块被禁用了 :

  • crashReporter

  • autoUpdater

并且下面的行为也改变了:

  • 一些机子的视频采集功能无效.

  • 某些特征不可访问.

  • Apps 不可识别 DNS 改变.

也由于应用沙箱的使用方法,应用可以访问的资源被严格限制了 ; 阅读更多信息 App Sandboxing .

Electron 使用的加密算法

取决于你所在地方的国家和地区 , Mac App Store 或许需要记录你应用的加密算法 , 甚至要求你提交一个 U.S 加密注册(ERN) 许可的复印件.

Electron 使用下列加密算法:

如何获取 ERN 许可, 可看这篇文章How to legallysubmit an app to Apple’s App Store when it uses encryption (or how to obtain anERN).

相关文章

这篇文章主要讲解了“electron打包中的坑如何解决”,文中的...
这篇文章主要介绍“electron打包的坑如何解决”的相关知识,...
这篇文章主要为大家分析了VSCode中如何调试Electron应用的主...
这篇“如何在VSCode上调试Electron应用的主进程代码”文章的...
vue-cli+electron一种新的脚手架(vue-electron)vue-electron...
1、首先成功安装Node.js。2、配置好环境变量path,参加上一篇...