Electron 向Mac App Store 應(yīng)用提交向?qū)?/h1>

2018-03-16 10:16 更新

自從 v0.34.0, Electron 就允許提交應(yīng)用包到 Mac App Store(MAS) . 這個(gè)向?qū)峁┑男畔⒂?: 如何提交應(yīng)用和 MAS 構(gòu)建的限制.

注意: 從 v0.36.0,當(dāng)應(yīng)用成為沙箱之后,會(huì)有一個(gè) bug 阻止 GPU 進(jìn)程開(kāi)啟 , 所以在這個(gè) bug 修復(fù)之前,建議使用 v0.35.x .更多查看 issue #3871 .

注意: 提交應(yīng)用到 Mac App Store 需要參加 Apple DeveloperProgram , 這需要花錢.

如何提交

下面步驟介紹了一個(gè)簡(jiǎn)單的提交應(yīng)用到商店方法.然而,這些步驟不能保證你的應(yīng)用被 Apple 接受;你仍然需要閱讀 Apple 的 Submitting Your App 關(guān)于如何滿足 Mac App Store 要求的向?qū)?

獲得證書

為了提交應(yīng)用到商店,首先需要從 Apple 獲得一個(gè)證書.可以遵循 existing guides.

App 簽名

獲得證書之后,你可以使用 Application Distribution 打包你的應(yīng)用, 然后前往提交你的應(yīng)用.這個(gè)步驟基本上和其他程序一樣,但是這 key 一個(gè)個(gè)的標(biāo)識(shí) Electron 的每個(gè)依賴.

首先,你需要準(zhǔn)備2個(gè)授權(quán)文件 .

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>

然后使用下面的腳本標(biāo)識(shí)你的應(yīng)用 :

#!/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/Frameworks"

codesign --deep -fs "$APP_KEY" --entitlements child.plist "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A"
codesign --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/A"
fi
codesign -fs "$APP_KEY" --entitlements parent.plist "$APP_PATH"

productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"

如果你是 OS X 下的應(yīng)用沙箱使用新手,應(yīng)當(dāng)仔細(xì)閱讀 Apple 的 Enabling App Sandbox 來(lái)有一點(diǎn)基礎(chǔ),然后向授權(quán)文件添加你的應(yīng)用需要的許可 keys .

上傳你的應(yīng)用并檢查提交

在簽名應(yīng)用之后,可以使用應(yīng)用 Loader 來(lái)上傳到 iTunes 鏈接處理 , 確保在上傳之前你已經(jīng) created a record. 然后你能 submit your app for review.

MAS構(gòu)建限制

為了讓你的應(yīng)用沙箱滿足所有條件,在 MAS 構(gòu)建的時(shí)候,下面的模塊被禁用了 :

  • crashReporter
  • autoUpdater

并且下面的行為也改變了:

  • 一些機(jī)子的視頻采集功能無(wú)效.
  • 某些特征不可訪問(wèn).
  • Apps 不可識(shí)別 DNS 改變.

也由于應(yīng)用沙箱的使用方法,應(yīng)用可以訪問(wèn)的資源被嚴(yán)格限制了 ; 閱讀更多信息 App Sandboxing .

Electron 使用的加密算法

取決于你所在地方的國(guó)家和地區(qū) , Mac App Store 或許需要記錄你應(yīng)用的加密算法 , 甚至要求你提交一個(gè) U.S 加密注冊(cè)(ERN) 許可的復(fù)印件.

Electron 使用下列加密算法:

如何獲取 ERN 許可, 可看這篇文章: How to legallysubmit an app to Apple’s App Store when it uses encryption (or how to obtain anERN).
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)