Подписать приложение ios: Как подписывать приложения для macOS Catalina 10.15 / Хабр

Содержание

Как подписывать приложения для macOS Catalina 10.15 / Хабр

[Прим. пер.: переведя вызвавший широкое обсуждение на Хабре пост, я заинтересовался новыми правилами для разработчиков ПО, введёнными компанией Apple. В этой статье рассказывается о личном опыте освоения правил одним из разработчиков игр.]

Введение


В новой версии macOS Apple сделала обязательными некоторые требования к приложениям, которые раньше были рекомендациями: 64-битные исполняемые файлы, подписывание и нотаризация. Не удовлетворяющие этим требованиям приложения больше запускаться не будут.

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

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

Я только что закончил разбираться с тем, как реализовать соответствие этим требованиям для моей игры Airships: Conquer the Skies. Airships работают на Java, а потому требуют ещё и JVM, но в целом всё остальное будет применимо для большинства разработчиков.

Вот что я узнал о подписывании и нотаризации приложения для Mac, которое не было скомпилировано непосредственно Xcode. Учтите, что информация получена из моих собственных исследований и может быть точной не на 100%. Вопросы и поправки приветствуются.

История вопроса


В этой статье рассматривается подписывание и нотаризация. Получение 64-битного исполняемого файла программы — это уже задача вашего компилятора или среды разработки.

В macOS приложения обычно упаковываются в bundle — папки, содержащие исполняемый файл, а также дополнительные ресурсы и метаданные. Подписывание бандла означает создание криптографичекой контрольной суммы содержимого бандла с последующим созданием криптографической подписи с сертификатом, которые Apple выпускает для разработчика. Подпись — это заявление о том, что вы лично гарантируете правильное поведение приложения. Если содержимое бандла меняется, то меняется контрольная сумма, и подпись перестаёт им соответствовать, предупреждая операционную систему, что в бандл внесены несанкционированные изменения.

Подписывание приложений существовало много лет. Чуть позже приложения также стало необходимо нотаризировать. Нотаризация (notarization) означает, что вы отправляете подписанное приложение Apple, а компания выполняет дополнительные проверки и регистрирует приложение. Если нотаризация завершается успешно, вы «прилепляете» нотаризацию к своему приложению, чтобы офлайн-машины без доступа к Интернету тоже могли убедиться, что приложение прошло нотаризацию.

Это своего рода метафора работы с бумажными документами. Разработчик собирает в бандл все части, из которых состоит приложение. Затем он создаёт список всех элементов бандла (контрольную сумму) и подписывает этот список (цифровой подписью), которую приклеивает к бандлу. Затем он передаёт подписанный бандл нотариусу господину Яблокову, который проверяет, всё ли в порядке с бандлом, а затем регистрирует его. Он даёт разработчику квитанцию, которую тот степлером прикрепляет к бандлу. То есть если разработчик сказал, что приложение безопасно, и господин Яблоков тоже говорит, что оно безопасно, то так скорее всего и есть. А если нехороший человек попробует изменить его содержимое, то список элементов бандла перестанет ему соответствовать, и пользователь будет знать, что использовать его не нужно.

Требования


Что необходимо для подписывания и нотаризации приложения:

  • Компьютер Mac, достаточно новый, чтобы на нём можно было запустить Xcode 11, то есть достаточно новый, чтобы запустить macOS 10. 14.3. Если вы ещё не установили Xcode, то потребуется 25 ГБ свободного места для установки.
  • Если вы пока не являетесь официальным разработчиком Apple, то для членства необходим логин Apple ID и примерно 110 долларов США.

Двухфакторная аутентификация


Если у вас её ещё нет, включите двухфакторную аутентификацию для Apple ID. Это можно сделать с любого i-устройства или с Mac. На Mac перейдите в iCloud control panel настроек System Preferences. В верхней части должна быть панель, предлагающая включить 2FA.

Покупка членства


Выполните вход в https://developer.apple.com/ при помощи своего Apple ID и перейдите во вкладку «Membership». При необходимости купите или обновите Apple Developer Program membership. Учтите, что обработка покупки занимает какое-то время во внутренних системах Apple, поэтому если у вас не получается генерировать сертификаты (см. ниже), выпейте пока чашку чая и успокойтесь.

Идентификатор приложения


Возможно, вам понадобится зарегистрировать ID бандла приложения в бэкенде разработчика. ID бандла можно найти в YourApp.app/Contents/Info.plist. (Открывать бандлы приложений можно, нажав на них правой клавишей мыши и выбрав «Show Package Contents».) Идентификатор должен иметь вид com.yourcompanyname.applicationname, например, у моей игры Airships это com.zarkonnen.airships.

Для регистрации ID выполните вход в https://developer.apple.com/, выберите в левой панели «Certificates, IDs & Profiles», а затем выберите на следующей странице «Identifiers». Затем можно нажать кнопку «+», чтобы добавить идентификатор приложения.

Пароль приложения


Для подписывания из командной строки вам понадобится пароль приложения, поэтому перейдите в https://appleid.apple.com/account/manage и сгенерируйте его.

Xcode и инструменты


Установите Xcode через App Store компьютера Mac. Затем установите также инструменты командной строки Xcode с https://developer.apple.com/download/more. Вам нужны «Command Line Tools for Xcode 11» или той версии Xcode, которую вы используете.

Сертификат


Запустите Xcode, перейдите в Preferences, откройте вкладку Accounts. При необходимости добавьте свой Apple ID к списку аккаунтов. Затем нажмите на кнопку «Manage Certificates…» в нижнем правом углу. Отобразятся имеющиеся у вас сертификаты для подписывания приложений. Вам нужен сертификат «Developer ID Application»; если в списке его нет, то создайте его. Нажмите «Done», а затем «Download» в окне Preferences:Accounts, чтобы скачать сертификаты локально.

Подготовка приложения


Чтобы приложение правильно работало в новой системе, исполняемый файл и библиотеки должны быть 64-битными.

Кроме того, Mac OS выполняет операцию под названием «translocation»: из соображений безопасности перемещает запущенный бандл приложения в случайное место. В случае моего приложения это проявилось тем, что оно не смогло найти файлы данных, расположенные рядом с бандлом приложения. Можно получать исходное расположение бандла приложения, но я решил проблему, просто поместив всё в бандл.

Разрешения (Entitlements)


Это особые разрешения, добавляемые разработчиком вместе с подписью кода, позволяющие подписанным приложениям выполнять определённые действия. Если вы компилируете приложение при помощи Xcode, то он сделает всё самостоятельно; в противном случае вам потребуется создать файл plist, содержащий все нужные вам entitlements. Файлы plist можно создавать при помощи Xcode, а по адресу https://developer.apple.com/documentation/bundleresources/entitlements находится список entitlements.

Для создания нового файла plist с помощью Xcode выберите «New File», а затем в появившемся списке нажмите на «Property List». Добавьте в корневой словарь элементы с названиями entitlements, которые вам нужны; они имеют значения boolean:YES.


В случае моей игры, поскольку она написана на Java, мне понадобились следующие разрешения, чтобы работала JVM: com.apple.security.cs.allow-jit, com.apple.security.cs.allow-unsigned-executable-memory, com.apple.security.cs.disable-executable-page-protection, com.apple.security.cs.disable-library-validation, com.apple.security.cs.allow-dyld-environment-variables. Для пользователя они выглядят пугающе, поэтому если вам они не нужны, то не добавляйте их.

Далее в статье мы будем считать, что вы поместили свои entitlements в файл под названием entitlements.plist.

Подписывание


Это процесс создания цифровой подписи, сообщающей: тот, кто имеет доступ к сертификату подписи, обещает, что данный конкретный бандл приложения надёжен и не зловреден. Любые изменения в бандле приложения (кроме прикрепления подтверждения нотаризации, см. выше) после его подписывания делают подпись недействительной и требуют повторного подписания бандла.

Также это означает, что ваше приложение при работе не должно менять ничего в содержимом бандла приложения, например, не помещать туда кэш.

Каждый исполняемый файл и динамическая библиотека в бандле приложения подписываются отдельно. В некоторых случаях библиотеки уже могут быть подписанными. То есть вежливее и спокойнее всего подписывать бандл, подписав каждый элемент по очереди, а затем подписать весь бандл. Если у какого-то элемента уже есть подпись, то она останется на своём месте.

Грубым, но эффективным способом будет принудительное глубокое подписание, то есть ваша подпись будет применена ко всем элементам бандла приложения, заменив все предыдущие подписи. Именно так мы и поступим, потому что это проще и потому, что предыдущие подписи могут быть недействительными или недостаточно сильными.

Вам понадобится следующая пугающая команда:

codesign -s "Developer ID Application: <YourName>" --timestamp --options runtime -f --entitlements entitlements. plist --deep YourApp.app

Опция --timestamp означает, что вместе с подписью встраивается действительная метка времени, которая необходима для успешной нотаризации.

Опция --options runtime означает, что подпись включает «hardened runtime», что также необходимо для успешной нотаризации.

Изучить подпись можно командой

codesign -d -vvvv YourApp.app

Также следует запустить приложение, чтобы убедиться, что оно продолжает работать после подписывания.

Если вы хотите подписывать элементы более вежливым образом, то уберите из команды -f и --deep, сначала подпишите все исполняемые файлы и библиотеки внутри приложения, а потом всё приложение.

Нотаризация


Подписав приложение, нужно предоставить его системам Apple для нотаризации, чтобы сказать: «смотрите, я подписал вот эту штуку».

Для этого надо сначала сжать приложение в специальный файл zip с помощью команды ditto:

/usr/bin/ditto -c -k --keepParent YourApp. app YourApp.zip

Простая упаковка приложения в zip при помощи Finder или командной строки не подойдёт.

Затем отправить zip для нотаризации:

xcrun altool --notarize-app --primary-bundle-id "<id>" -u "<appleid>" -p "<app-specific password>" --file YourApp.zip

Пример:

xcrun altool --notarize-app --primary-bundle-id "com.zarkonnen.airships" -u "[email protected]" -p "bwnh-pbbt-llpt-xxxx" --file Airships.zip

ID бандла можно найти, заглянув в YourApp.app/Contents/Info.plist. (Открывать бандлы приложений можно, нажав на них правой клавишей мыши и выбрав «Show Package Contents».)

Нотаризация может занять довольно много времени. Обычно это несколько секунд или минут, но иногда может быть и час. Налейте себе ещё чая, или чего покрепче, выбирайте сами. Рано или поздно вы получите нечто подобное:

No errors uploading 'YourApp.zip'.

RequestUUID = 29926ae6-f551-4d54-b283-e29d6f9b9156

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

xcrun altool --notarization-info <RequestUUID> -u -u "<appleid>" -p "<app-specific password>"

Пример:

xcrun altool --notarization-info 29926ae6-f551-4d54-b283-e29d6f9b9156 -u "dave@hotmail. com" -p "bwnh-pbbt-llpt-xxxx"

На экран будет выведено нечто подобное:

          Date: 2019-10-08 06:59:58 +0000
          Hash: 0774fb95035408bacecebd64935a611ecd27b45ad9cbf3cc1aa48fa1e0eaa649
    LogFileURL: https://osxapps-ssl.itunes.apple.com/itunes-assets/Enigma123/...
        Status: success
   Status Code: 0
Status Message: Package Approved


Повторюсь, подтверждение обычно занимает около 15 минут, но иногда на то же самое приложение требуется несколько часов. Ага, вот так.

Если status имеет значение failure, то посмотрите ошибки, перечисленные по URL файла лога. Если вы получили success, то всё равно взгляните, потому что там могут быть предупреждения, и эти предупреждения вполне могут стать ошибками, когда Apple снова ужесточит свои требования.

Прикрепление


Наконец, «пристеплерим» подтверждение нотаризации к бандлу приложения, чтобы её мог проверять даже Mac без подключения к Интернету. Для этого необходимо выполнить на удивление короткую команду:

xcrun stapler staple "YourApp.app"

Поздравляю, вы подписали и нотаризировали приложение для Mac. Теперь вы можете распространять бандл приложения любым удобным вам способом, если он не будет изменяться в процессе.

Java


Если вы оказались в одной лодке со мной и вам нужно добавить в бандл с приложением JVM, то продолжайте чтение.

Существует несколько вариантов объединения в бандл JVM с Java-приложением. Я бы рекомендовал AppBundler, который является ant task, выполняющим за вас всю работу. Изначально AppBundler можно было скачать с java.net, но благодаря пренебрежению Oracle остальной платформой Java, теперь придётся скачивать последнюю версию с https://github.com/TheInfiniteKind/appbundler.

Там вы можете найти исходники и документацию, но не jar, потому что предполагается, что вы пользуетесь Maven. Если вы не используете Maven, то jar можно взять отсюда: https://jar-download. com/artifacts/com.panayotis/appbundler

Следуйте инструкциям в документации на странице github для настройки бандла. Лично я использую NetBeans, и для решения задачи я вставил в build.xml следующие строки:

<target name="-post-jar">
  <taskdef name="bundleapp" 
    classpath="lib/appbundler-1.1.0.jar"
    classname="com.oracle.appbundler.AppBundlerTask"/>
  <bundleapp 
      jvmrequired="1.7"
      outputdirectory="/home/zar/Desktop"
      name="Airships"
      displayname="Airships"
      executableName="Airships"
      identifier="com.zarkonnen.airships"
      shortversion="1"
      version="1"
      mainclassname="com.zarkonnen.airships.Main"
      copyright="2019 David Stark"
      applicationCategory="public.app-category.games">
      <classpath dir="dist"/>
      <runtime dir="/home/zar/Desktop/jdk-11.0.4.jdk/Contents/Home"/>
      <arch name="x86_64"/>
      <option value="-Dapple.laf.useScreenMenuBar=true"/>
      <option value="-Dcom. apple.macos.use-file-dialog-packages=true"/>
      <option value="-Dcom.apple.macos.useScreenMenuBar=true"/>
      <option value="-Dcom.apple.mrj.application.apple.menu.about.name=Airships"/>
      <option value="-Xdock:name=Airships"/>
      <option value="-Dcom.apple.smallTabs=true"/>
      <option value="-Dfile.encoding=UTF-8"/>
      <option value="-Xmx1024M" name="Xmx"/>
  </bundleapp>
</target>


Это задача, выполняемая после создания файла jar. Она использует appbundler-1.1.0.jar для создания бандла приложения со встроенной JVM.

Используемый мной JDK можно скачать с https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html. Я выбрал версию 11, потому что она имеет LTS (long-term support), но использует старые лицензионные условия Oracle, в то время как версия 13 имеет странный новый набор лицензионных ограничений.

Также есть более юридически свободные JVM от OpenJDK, но мне не удалось заставить их работать с app bundler.

Примечание: JVM — это «Java Virtual Machine». JRE — это «Java Runtime Environment», которая включает в себя JVM плюс дополнительные элементы, например, Java updater. JDK — это «Java Development Kit», который состоит из JRE плюс вещей, необходимых для написания программ на Java, например, компилятора. До Java 8 JRE была доступна для конечных пользователей отдельно, но с тех пор доступен только JDK, и поэтому мы связываем среду разработки Java с компьютерной игрой.

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

Дальнейшее чтение

  • Tips And Tricks for Shipping a PyGame App on the Mac — информация, по упаковке программ на Python с разделом, посвящённым подписыванию и нотаризации.
  • Apple’s Developer Page on Gatekeeper
  • Notarizing your Flash/AIR applications for macOS — ещё одна статья о подписании и нотаризации с дополнительной информацией, специфичной для Flash/AIR.
  • Временное смягчение правил нотаризации Apple

Дополнение

  • Пользователь Reddit AMemoryOfEternity задав вопрос на форумах разработчиков Steam и выяснилось, что пока для приложений Steam нотаризация вообще не требуется. Они должны быть 64-битными, но непонятно, обязательно ли их подписывать. Ссылка, требуется доступ к Steamworks
  • Apple временно смягчила правила нотаризации, поэтому пока она позволяет нотаризировать приложения, не имеющие hardened runtime, имеющие подкомпоненты, не подписанные ID разработчика, не имеющие защитных меток времени, и т.д. Такие вещи всё равно будут отображаться в отчёте о нотаризации как предупреждения, поэтому чтобы позаботиться о будущем, лучше постараться от них избавиться.
  • По информации Valve, для работы Steam API необходимо дать разрешение (entitlement) com.apple.security.cs.allow-dyld-environment-variables: «Steam инъектирует API dylib через DYLD_INSERT_LIBRARIES, которые по умолчанию блокируются hardened runtime, но сама API dylib подписана и должна проходить проверку, поэтому достаточно добавить разрешение „com. apple.security.cs.allow-dyld-environment-variables“, чтобы иметь возможность присвоения переменных окружения DYLD».

Как выпустить электронную подпись в приложении Госключ и подписывать документы онлайн

Выполнение почти всех операций с госорганами в России требует либо вашего личного присутствия, либо электронной подписи. Она требуется для верификации вашей личности при получении государственных услуг. Однако абсолютное большинство из нас этой самой подписи не имеет, поскольку принято считать, что выдают её только специальные центры за деньги. И это уже не говоря о том, что ЭЦП якобы нужно носить строго в USB-хранилище, а использовать — соответственно, только на компьютерах с USB-A. В общем, мифов хватает. Потому что по факту дела обстоят совершенно по-другому.

Выпустить себе электронную подпись можно прямо в приложении

Электронная подпись - это уникальный набор цифр, в которой зашифрованы сведения о получателе государственных услуг, такие как ФИО, адрес прописки и т. д.

С давних пор в России действует сервис Госключ от Минцифры. Он существует в виде приложения для мобильных устройств и служит для оформления электронной подписи и подписания документов онлайн не выходя из дома. Выпустить подпись, кстати, тоже можно онлайн без походов в МФЦ и специализированные организации, и притом бесплатно.

Как выпустить электронную подпись

  • Скачайте приложение Госключ из App Store;
  • Запустите его и авторизуйтесь на Госуслугах;

Регистрация предполагает авторизацию в Госуслугах

  • Пройдите регистрацию, следуя инструкциям на экране;

Обязательно проверьте свои данные перед генерацией подписи

  • Запишите код доступа, который предложит приложение — входить в Госключ можно только по нему;
  • Проверьте данные, которые Госключ подтянет из Госуслуг, и подтвердите выпуск сертификата УНЭП.

Скачать Госключ

По умолчанию Госключ выпускает неквалифицированную подпись, которая называется УНЭП. Предполагается, что её хватит для выполнения всех базовых задач.

⚡️ПОДПИСЫВАЙСЯ НА НАШ ЧАТИ В ТЕЛЕГРАМЕ. ТАМ ТЕБЕ ОТВЕТЯТ НА ЛЮБЫЕ ВОПРОСЫ ОБ АЙФОНАХ И НЕ ТОЛЬКО

УНЭП — это усиленная неквалифицированная электронная подпись. Она годится только для работы с госорганами. Например, с её помощью можно подавать всевозможные заявления, менять данные в документах или уточнять платежи, если они ушли по неправильным реквизитам, без личного присутствия. Однако УНЭП не заменяет личную подпись, в отличие от УКЭП, о которой ниже.

Как подписать документы через Госключ

После получения подписи вы можете начать подписывать PDF ЭЦП для госорганов удалённо. Для этого необходимо загрузить документ через Госуслуги, и он автоматически подгрузится в приложение Госключ, где его можно будет верифицировать. Вот как это делается:

  • Перейдите в раздел загрузки документов на сайте Госуслуг;
  • Войдите в свою учётную запись и загрузите документ через интерфейс загрузки;

Загрузить документ на подпись можно только через портал Госуслуг

  • Проследите, чтобы документ обязательно был в формате PDF, а его вес не превышал 100 МБ;

Смотрите, чтобы документ соответствовал всем требованиям

  • Теперь откройте приложение Госключ на iPhone и авторизуйтесь с кодом доступа, который сохранили на этапе регистрации;
  • Проверьте данные и подпишите его усиленной неквалифицированной электронной подписью и отправьте в госорган.

⚡️ПОДПИСЫВАЙСЯ НА НАШ КАНАЛ В ДЗЕНЕ И ЧИТАЙ ЛУЧШИЕ СТАТЬИ НАШИХ АВТОРОВ, ПОКА НЕ ЗАПРЕТИЛИ

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

Как получить квалифицированную ЭЦП

Впрочем, Госключ не ограничивает вас в создании нескольких подписей. Когда я ещё не разобрался в этом, я выпустил по одной УНЭП в приложении для iOS и для Android. Никаких санкций за это не предусмотрено, учитывая, что логинился я со своей верифицированной учётной записью Госуслуг, так что работает на подписание документов и та, и другая подпись.

Ваши подписи появятся в этом разделе

Если вы ведёте бизнес, взаимодействуете с контрагентами или просто хотите оформить цифровую подпись, которая заменяет личную подпись вам потребуется УКЭП.

⚡️ПОДПИСЫВАЙСЯ НА ТЕЛЕГРАМ-КАНАЛ СУНДУК АЛИБАБЫ. ТАМ КАЖДЫЙ ДЕНЬ ВЫКЛАДЫВАЮТ ТОПОВЫЕ ТОВАРЫ С АЛИЭКСПРЕСС

УКЭП — это усиленная квалифицированная электронная подпись. Она умеет всё то же самое, что и неквалифицированная, но ещё и заменяет личную подпись. У большинства в ней нет никакой потребности. Но предприниматели с помощью УКЭП могут подписывать с контрагентами, находящимися на удалёнке, счета, акты, сверки, счета-фактуры и другие документы.

Скачать Госключ

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

Обзоры приложений для iOS и MacСоветы по работе с Apple

Блог Codemagic

Блог Codemagic

Какой CI/CD лучше всего подходит для вашего мобильного приложения? Вот 10 причин, почему вы должны выбрать Codemagic

Категории:

Выбрать категориюРазработка мобильных приложенийПродуктыПодкастыИстории успехаНовости

  • Разработка мобильных приложений

  • Товар

  • Подкасты

  • Новости

  • Загрузка. ..
    Искать статьи

    Поиск статей

    Извините, но мы не смогли найти совпадений…

    Но, возможно, мы сможем заинтересовать вас одной из наших наиболее популярных статей?

    Популярные статьи

    Кодмэджик
    Виртуализация
    М1

    Как Codemagic удалось снизить цены и улучшить инфраструктуру

    Технические подробности, связанные с введением последних машин Apple M1 от Codemagic и изменением цен

    Флаттер
    Мейсон
    Учебник

    Использование Mason и кирпичей в вашем приложении Flutter: руководство для начинающих

    В этом уроке мы обсудим Mason, пакет Dart, который позволяет создавать файлы и каталоги на основе шаблонов.

    Цены
    Кодмагик

    Мы снижаем цены благодаря машинам Apple M1

    Мини-машины Codemagic M1 Mac теперь вдвое дешевле, а благодаря нашему новому тарифному плану с оплатой по мере использования вы никогда не будете платить больше 299 долларов в месяц.

    Последние статьи

    Посмотрите на невероятную скорость новых машин M1

    Для сборок iOS мы видим улучшение времени сборки примерно на 50% по сравнению с Mac Pros

    КИ/CD
    Кодмагик

    10 причин выбрать Codemagic CI/CD в 2022–2023 гг.

    Какой CI/CD лучше всего подходит для вашего мобильного приложения? Вот 10 причин, почему вы должны выбрать Codemagic

    iOS
    Подписание кода
    Xкод

    Проблемы с подписью кода в Xcode 14 и как их исправить

    В Xcode 14 появились новые проблемы с подписью кода. Узнайте, как их исправить.

    Флаттер
    Навигация

    Руководство для начинающих по go_router во Flutter

    Быстрое и простое руководство по использованию go_router во Flutter для навигации в приложении

    Флаттер
    Учебник

    Шпаргалка по виджетам Flutter

    Во Flutter все является виджетом. Взгляните на нашу шпаргалку по виджетам!

    Флаттер
    Государственное управление
    Архитектура

    Доктор Риверпод: Как я перестал волноваться и полюбил управление состоянием

    Дискуссия о выборе лучшего решения для управления состоянием для Flutter в 2022/2023 гг. со всей ожидаемой аргументацией

    События
    iOS
    Кодемагик
    Конференции

    SwiftLeeds 2022: чего ожидать

    SwiftLeeds возвращается с однодневной очной конференцией 20 октября 2022 года в Лидсе, Великобритания.

    Кодмэджик
    Виртуализация
    М1

    Как Codemagic удалось снизить цены и улучшить инфраструктуру

    Технические подробности, связанные с введением последних машин Apple M1 от Codemagic и изменением цен

    Флаттер
    Хром
    Интернет

    Как создать расширение Chrome с помощью Flutter Web

    Flutter позволяет создавать расширения Chrome, которые можно публиковать в Интернет-магазине Chrome. В этом уроке мы проведем вас через этот процесс и обсудим некоторые…

    Показать больше сообщений

    Последние подкасты

    Флаттер
    подкаст

    Flutter Talks: выступление с Филипом Грачеком из Flutter

    Филип Грачек, советник разработчиков в команде Flutter, присоединился к нам, чтобы обсудить производительность Flutter и способы борьбы с джанками.

    Флаттер
    подкаст

    Подкаст Flutter Talks: Topline с Abbey Road Studios

    Послушайте, как Дом Дронска из Abbey Road Studios рассказывает историю Topline, отмеченного наградами приложения для записи идей песен.

    Флаттер
    подкаст

    Flutter Talks: дизайн

    Уилл Ларш, ведущий инженер Flutter по дизайну материалов, и Джейкоб Кристенсен, соучредитель отмеченного наградами приложения Reflectly, присоединяются к нам, чтобы обсудить дизайн с …

    Подробнее о подкастах

    Будьте в курсе новостей разработки приложений

    Самые популярные статьи

    Кодмэджик
    Виртуализация
    М1

    Как Codemagic удалось снизить цены и улучшить инфраструктуру

    Технические подробности, связанные с введением последних машин Apple M1 от Codemagic и изменением цен

    Флаттер
    Мейсон
    Учебник

    Использование Mason и кирпичей в вашем приложении Flutter: руководство для начинающих

    В этом уроке мы обсудим Mason, пакет Dart, который позволяет создавать файлы и каталоги на основе шаблонов.

    Цены
    Кодмагик

    Мы снижаем цены благодаря машинам Apple M1

    Мини-машины Codemagic M1 Mac теперь вдвое дешевле, а благодаря нашему новому тарифному плану с оплатой по мере использования вы никогда не будете платить больше 299 долларов в месяц.

    Подписание кода iOS в App Center — Visual Studio App Center

    Обратная связь

    Редактировать

    Твиттер

    LinkedIn

    Фейсбук

    Эл. адрес

    • Статья
    • 3 минуты на чтение

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

    Предупреждение

    App Center не поддерживает подписание файлов со специальными символами или символами в имени. Например, символы с диакритическими знаками, такие как Ç , Ã , или такие символы, как / .

    Сертификаты (.p12)

    • Разработка Apple: Используется для включения определенных служб приложений во время разработки и тестирования.
    • Распространение Apple: Для отправки в App Store, Ad Hoc или Enterprise.

    Профили подготовки (.mobileprovision)

    • Разработка приложений Apple: Установка приложений для разработки на тестовые устройства для разработчиков.
    • Ad Hoc: Установите приложение на ограниченное количество зарегистрированных устройств.
    • App Store: Требуется для отправки вашего приложения в Apple App Store.
    • Внутренний: для внутреннего распространения приложений (профиль доступен только через программу Apple Enterprise).

    Подписание кода для расширений приложения и watchOS

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

    Загрузка файлов подписи

    Важно

    Убедитесь, что загружаемые ресурсы подписи соответствуют тем, которыми вы собираетесь подписывать приложение. Идентификатор пакета и идентификатор команды в вашем приложении будут перезаписаны активами подписи.

    Чтобы подписать свои сборки iOS, загрузите профиль обеспечения ( .mobileprovision ) и ваш сертификат ( .p12 файл ) при настройке сборки вместе с паролем, который вы установили для сертификата. Эти файлы можно найти в Центре разработчиков Apple в разделе «Сертификаты, идентификаторы и профили».

    Поиск профилей обеспечения

    Вариант 1.

    Получение профиля обеспечения (.mobileprovision) из Apple Developer Center

    1. На странице Сертификаты, идентификаторы и профили щелкните Профили .
    2. Выберите профиль подготовки для подписи приложения в App Center и загрузите его. Убедитесь, что выбрали правильный тип профиля (разработка или распространение).
    3. После локального сохранения профиля обеспечения (в файле .mobileprovision ) его можно загрузить в App Center при настройке филиала.

    Вариант 2. Получение профиля обеспечения (.mobileprovision), автоматически созданного Xcode

    Примечание

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

    1. Включите опцию автоматической подписи в Xcode. Обратитесь к настройке Xcode для автоматического управления вашими профилями обеспечения.
    2. Отправьте изменения проекта в свой репозиторий.
    3. Получить сгенерированный профиль обеспечения из ~/Library/MobileDevice/Provisioning Profiles/
    4. Загрузите новый профиль подготовки, созданный Xcode, в App Center при настройке ветви.

    Получение сертификата из Центра разработчиков Apple (.p12)

    1. На странице Сертификаты, идентификаторы и профиль нажмите Сертификаты .
    2. Выберите сертификат, который будет использоваться для подписи вашего приложения в App Center, и загрузите его. Убедитесь, что выбран правильный тип сертификата (разработка или производство) и что ранее выбранный профиль подготовки содержит этот сертификат.

      Кроме того, вам нужен закрытый ключ для сертификата, установленного на вашем Mac — он не включен, если вы просто загружаете сертификат из Apple Developer Center, вы должны открыть загруженный сертификат.

    scroll to top