Spec-Zone.ru › Electron

Руководство по подаче приложений в Mac App Store

В данном руководстве содержится информация по:

  • Подписи приложений Electron на macOS;
  • Подаче приложений Electron в Mac App Store (MAS);
  • Ограничения сборки MAS.

Требования​

Для подписи приложений Electron необходимо предварительно установить следующие инструменты:

  • Xcode 11 или выше.
  • Модуль npm electron-osx-sign.

Также необходимо зарегистрировать учетную запись Apple Developer и присоединиться к Программе Apple Developer.

Подпись приложений Electron​

Приложения Electron могут быть распространены через Mac App Store или вне его. Каждый способ требует разных подходов к подписи и тестированию. Это руководство сосредоточено на распространении через Mac App Store, но также упоминает и другие методы.

Следующие шаги описывают, как получить сертификаты от Apple, как подписать приложения Electron и как их протестировать.

Получение сертификатов​

Самый простой способ получить сертификаты подписи — использовать Xcode:

  1. Откройте Xcode и откройте настройки «Accounts»;
  2. Авторизуйтесь с помощью своей учетной записи Apple;
  3. Выберите команду и нажмите «Manage Certificates»;
  4. В левом нижнем углу листа сертификатов подписи нажмите кнопку «Add» (+), и добавьте следующие сертификаты:
    • «Apple Development»
    • «Apple Distribution»

Сертификат «Apple Development» используется для подписи приложений для разработки и тестирования на машинах, зарегистрированных на сайте Apple Developer. Способ регистрации будет описан в разделе Подготовка профиля provision.

Приложения, подписанные сертификатом «Apple Development», не могут быть отправлены в Mac App Store. Для этого приложения должны быть подписаны сертификатом «Apple Distribution». Однако учтите, что приложения, подписанные сертификатом «Apple Distribution», не могут быть запущены напрямую; они должны быть повторно подписаны Apple, чтобы быть запущенимы, что возможно только после скачивания из Mac App Store.

Другие сертификаты​

Вы можете заметить, что существуют и другие виды сертификатов.

Сертификат «Developer ID Application» используется для подписи приложений перед распространением вне Mac App Store.

Сертификаты «Developer ID Installer» и «Mac Installer Distribution» используются для подписи пакета установщика Mac вместо самого приложения. Большинство приложений Electron не используют пакет установщика Mac, поэтому они обычно не нужны.

Полный список типов сертификатов можно найти здесь.

Приложения, подписанные сертификатами «Apple Development» и «Apple Distribution», могут работать только в песочнице App, поэтому они должны использовать сборку Electron MAS. Однако сертификат «Developer ID Application» не имеет этих ограничений, поэтому приложения, подписанные им, могут использовать как обычную сборку, так и сборку MAS Electron.

Имена устаревших сертификатов​

Apple меняла имена сертификатов на протяжении последних лет. Вы можете столкнуться с ними при чтении старой документации, и некоторые утилиты по-прежнему используют одно из устаревших имён.

  • Сертификат «Apple Distribution» также назывался «3rd Party Mac Developer Application» и «Mac App Distribution».
  • Сертификат «Apple Development» также назывался «Mac Developer» и «Development».

Подготовка профиля provision​

Если вы хотите протестировать приложение на локальной машине перед отправкой в Mac App Store, необходимо подписать приложение сертификатом «Apple Development» с встроенным профилем provision в пакете приложения.

Чтобы создать профиль provision, выполните следующие действия:

  1. Откройте страницу «Сертификаты, идентификаторы и профили» на веб-сайте Apple Developer.
  2. Добавьте новый идентификатор приложения для вашего приложения на странице «Идентификаторы».
  3. Зарегистрируйте локальную машину на странице «Устройства». Идентификатор устройства вашей машины можно найти на странице «О hardware» приложения «Система».
  4. Зарегистрируйте новый профиль Provisioning на странице «Профили» и загрузите его в /path/to/yourapp.provisionprofile.

Включить песочницу Apple App Sandbox​

Приложения, отправляемые в Mac App Store, должны работать в песочнице Apple App, и только сборка MAS Electron может работать с песочницей. Стандартная сборка darwin Electron не будет запускаться при работе в песочнице.

При подписи приложения с electron-osx-sign, необходимые разрешения автоматически добавят в разрешения вашего приложения, но если вы используете пользовательские разрешения, необходимо убедиться, что включена поддержка песочницы:

<?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>

Дополнительные шаги без electron-osx-sign​

Если вы подписываете приложение без использования electron-osx-sign, необходимо убедиться, что разрешения пакета приложения содержат следующие ключи:

<?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.application-groups</key>
    <array>
      <string>TEAM_ID.your.bundle.id</string>
    </array>
  </dict>
</plist>

Значение TEAM_ID должно быть заменено на идентификатор команды вашей учетной записи Apple Developer, а your.bundle.id — на идентификатор приложения.

И следующие разрешения должны быть добавлены в исполняемые файлы и вспомогательные файлы в пакете приложения:

<?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>

И пакет приложения Info.plist должен включать ключ ElectronTeamID, значение которого — идентификатор вашей команды Apple Developer.

<plist version="1.0">
<dict>
  ...
  <key>ElectronTeamID</key>
  <string>TEAM_ID</string>
</dict>
</plist>

При использовании electron-osx-sign ключ ElectronTeamID будет добавлен автоматически, извлекая идентификатор команды из имени сертификата. Возможно, вам потребуется вручную добавить этот ключ, если electron-osx-sign не смог найти правильный идентификатор команды.

Подпись приложений для разработки​

Чтобы подписать приложение, которое может запускаться на вашей машине разработки, необходимо подписать его сертификатом «Apple Development» и передать профиль provision в electron-osx-sign.

electron-osx-sign YourApp.app --identity='Apple Development' --provisioning-profile=/path/to/yourapp.provisionprofile

Если вы подписываете без electron-osx-sign, поместите профиль provision в YourApp.app/Contents/embedded.provisionprofile.

Запущенное приложение может работать только на машинах, зарегистрированных в профиле provision, и это единственный способ проверить подписанное приложение перед отправкой в Mac App Store.

Подпись приложений для отправки в Mac App Store​

Для подписи приложения, которое будет отправлено в Mac App Store, необходимо подписать его сертификатом «Apple Distribution». Обратите внимание, что приложения, подписанные этим сертификатом, не будут запускаться нигде, кроме как после скачивания из Mac App Store.

electron-osx-sign YourApp.app --identity='Apple Distribution'

Подпись приложений для распространения вне Mac App Store​

Если вы не планируете отправлять приложение в Mac App Store, вы можете подписать его сертификатом «Developer ID Application». В этом случае нет требований к песочнице App Sandbox, и вы должны использовать обычную сборку darwin Electron, если не используете песочницу.

electron-osx-sign YourApp.app --identity='Developer ID Application' --no-gatekeeper-assess

Передавая --no-gatekeeper-assess, electron-osx-sign пропустит проверку GateKeeper macOS, так как ваше приложение обычно ещё не было подтверждено на данном этапе.

Это руководство не охватывает подтверждение приложений, но вам, возможно, потребуется сделать это, иначе Apple может запретить пользователям использовать ваше приложение за пределами Mac App Store.

Отправка приложений в Mac App Store​

После подписи приложения сертификатом «Apple Distribution» вы можете продолжить его отправку в Mac App Store.

Однако это руководство не гарантирует, что ваше приложение будет одобрено Apple; вам все равно необходимо ознакомиться с руководством Apple по подача приложений и требованиям к Mac App Store.

END_OF_DOCUMENT_MARKER

Загрузка​

Для загрузки подписанного приложения в iTunes Connect для обработки следует использовать Загрузчик приложений, убедившись, что вы создали запись перед загрузкой.

Если вы видите ошибки, такие как использование частных API, проверьте, использует ли приложение сборку MAS Electron.

Отправить на проверку​

После загрузки следует отправить приложение на проверку.

Ограничения сборки MAS​

Для соответствия всем требованиям к изоляции приложений следующие модули были отключены в сборке MAS:

  • crashReporter
  • autoUpdater

и были изменены следующие действия:

  • Запись видео может не работать на некоторых машинах.
  • Некоторые функции доступности могут не работать.
  • Приложения не будут знать о изменениях в DNS.

Кроме того, из-за использования изоляции приложений ресурсы, к которым может получить доступ приложение, строго ограничены; вы можете ознакомиться с Изоляция приложений для получения дополнительной информации.

Дополнительные разрешения​

В зависимости от используемых приложением Electron API, возможно, потребуется добавить дополнительные разрешения в файл разрешений приложения. В противном случае, App Sandbox может помешать их использованию.

Доступ к сети​

Включите исходящие сетевые подключения, чтобы разрешить приложению подключаться к серверу:

<key>com.apple.security.network.client</key>
<true/>

Включите входящие сетевые подключения, чтобы разрешить приложению открыть сокет прослушивания сети:

<key>com.apple.security.network.server</key>
<true/>

Для получения более подробной информации см. документацию по включению доступа к сети.

dialog.showOpenDialog​

<key>com.apple.security.files.user-selected.read-only</key>
<true/>

Для получения более подробной информации см. документацию по включению доступа к файлам, выбранным пользователем.

dialog.showSaveDialog​

<key>com.apple.security.files.user-selected.read-write</key>
<true/>

Для получения более подробной информации см. документацию по включению доступа к файлам, выбранным пользователем.

Криптографические алгоритмы, используемые Electron​

В зависимости от стран, в которых вы выпускаете ваше приложение, вам может потребоваться предоставить информацию о криптографических алгоритмах, используемых в вашем программном обеспечении. Для получения дополнительной информации см. документацию по соблюдению требований к экспорту шифрования.

Electron использует следующие криптографические алгоритмы:

  • AES - NIST SP 800-38A, NIST SP 800-38D, RFC 3394
  • HMAC - FIPS 198-1
  • ECDSA - ANS X9.62–2005
  • ECDH - ANS X9.63–2001
  • HKDF - NIST SP 800-56C
  • PBKDF2 - RFC 2898
  • RSA - RFC 3447
  • SHA - FIPS 180-4
  • Blowfish - https://www.schneier.com/cryptography/blowfish/
  • CAST - RFC 2144, RFC 2612
  • DES - FIPS 46-3
  • DH - RFC 2631
  • DSA - ANSI X9.30
  • EC - SEC 1
  • IDEA - Книга "On the Design and Security of Block Ciphers" X. Lai
  • MD2 - RFC 1319
  • MD4 - RFC 6150
  • MD5 - RFC 1321
  • MDC2 - ISO/IEC 10118-2
  • RC2 - RFC 2268
  • RC4 - RFC 4345
  • RC5 - https://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf
  • RIPEMD - ISO/IEC 10118-3

© GitHub Inc.
Licensed under the MIT license.
https://www.electronjs.org/docs/latest/tutorial/mac-app-store-submission-guide

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API