Как нотариально заверить комплект приложений, содержащий встроенные в него помощники? - PullRequest
0 голосов
/ 01 ноября 2018

Кто-нибудь знает, как отправить пакет приложений Mac, содержащий встроенные пакеты вспомогательных приложений, на нотариальное заверение Apple? Когда я пытаюсь заархивировать простое приложение, все идет гладко. Приложение должным образом заархивировано, и я могу загрузить архив, и мое приложение будет заверено нотариально в течение нескольких минут.

Однако, когда я пытаюсь заархивировать комплект приложений, содержащий комплекты вспомогательных приложений, используя фазы сценариев, и пытаюсь автоматически подписывать и нотариально заверять комплект моего приложения с помощью обычного автоматического рабочего процесса создания архива, я не могу загрузить комплект приложений для нотариального заверения. Итак, что мне делать?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Благодаря новой документации Apple, выпущенной во время WWDC 2019, я наконец смог решить эту проблему, которая была невозможна раньше, даже после использования билета DTS. По сути, , если у вас есть сложный пакет, и вам нужно создать его автоматически с помощью сценариев, вы НЕ МОЖЕТЕ использовать автоматический рабочий процесс через архив, а затем загрузить пакет приложений через органайзер в Xcode .

Итак, для тех, кто испытывает эту проблему сейчас и в будущем, вот что решило мою проблему:

1) Перейдите на панель навигации проекта и щелкните свой проект

.

2) Перейдите к каждой из ваших целей, нажав на параметры сборки, и внесите следующие изменения (введите слово «подпись» в поле поиска, так как это сужает отображаемые параметры сборки):

  • Перейдите на Идентификатор подписи кода и на Выпуск изменение сборки Mac Developer (значение по умолчанию) в Application ID приложения на вашей связке ключей.
  • Перейдите к Базовые права доступа для подписи кода и для Release изменение сборки Да (значение по умолчанию) в Нет . Если вы этого не сделаете, ваш пакет приложений будет отклонен сервером нотариального заверения, поскольку вы разрешаете внедрение кода в ваше приложение, которое необходимо для отладки, но представляет угрозу безопасности.
  • Перейдите на Стиль подписи кода и на Выпуск Изменение сборки Автоматически на Ручной . Если вы этого не сделаете, правильная подпись не удастся.
  • Перейдите к Другие флаги подписи кода и к Release build add - отметка времени . Это пометит Xcode, что вы хотите добавить безопасную метку времени в свое приложение. Если вы этого не сделаете, ваш пакет приложений будет отклонен сервером нотаризации.

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

  • Создайте новую Схему, которая включает все цели, используя настройки сборки Release
  • Нажмите Build или Command + B в качестве сочетания клавиш, и вы получите правильную подпись всего своего пакета, если вы будете следовать правилу наизнанку (то есть код в каталогах более глубокого уровня должен быть подписан первый!)

4) Чтобы заверить нотариально заверенный пакет приложений, который вы только что создали и подписали, и с правильной безопасной отметкой времени, у вас есть несколько вариантов:

  • Создайте образ диска .dmg и следуйте инструкциям в этом ответе . Однако пропустите инструкции по подписанию кода, поскольку то, что я объясняю здесь, охватывает все проблемы и предостережения, объясненные там. Кроме того, вы можете заархивировать и загрузить zip-файл, как я объясню ниже:
  • Сжатие пакета приложения в zip-файл, используя это в Терминале: /usr/bin/ditto -ck --keepParent "*APP_PATH*" "*ZIP_PATH*"

5) Загрузите образ диска или zip-файл, используя это в Терминале: xcrun altool --notarize-app --primary-bundle-id "your-primary-bundle-id-here" --username "*your-username*" --password "*your-app-specific-password-here*" --file *your-path-here*. Вам необходимо зайти в свою appleid.apple.com учетную запись, чтобы сгенерировать пароль приложения для приложения altool. Это мера безопасности, поэтому вы не должны отправлять свой пароль Apple ID в открытом виде. Вы можете сделать это на панели «Безопасность» своей учетной записи управления Apple ID. Ничего не предпринимайте, пока не получите подтверждение об успешной загрузке .

6) Чтобы запросить статус истории нотариального заверения, запустите его в Терминале: xcrun altool --notarization-history 0 -u "*your-account*" -p "*your-app-specific-password-here*". Вы должны увидеть список загрузок, соответствующие даты и RequestUUID. Последняя загрузка обычно является первой в списке.

7) Чтобы запросить статус нотариуса, включите доступ к файлу журнала нотариуса, запустите его в Терминале: xcrun altool --notarization-info RequestUUID -u "*your-account*"

8) Если вы получаете статус, что ваш пакет приложений был утвержден, то вы можете закрепить это утверждение, запустив его в Терминале: xcrun stapler staple *path-to-your-app-bundle*.

0 голосов
/ 25 февраля 2019

Вы можете найти полезную информацию здесь

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

Другая проблема, с которой я столкнулся, заключается в том, что java-приложения не могут запускаться, когда вы кодируете его с помощью опции «runtime», что может быть той же проблемой, что и у вас (исчезнуть). Чтобы увидеть ошибки, вы можете запустить свое приложение из терминала, и вы увидите ошибки. В этом случае вы можете попробовать использовать --entitlements для добавления некоторых исключений.

Вот права, которые я использовал для запуска моего приложения

<?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.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.disable-executable-page-protection</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
</dict>
</plist>

команда для подписи приложения:

codesign --force  --verbose=9 -s "Developer ID Application: XXXXXXX" --options runtime --deep --entitlements ./entitlements Myapp.app
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...