Настройка сборки React Native iOS в Центре приложений

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Центр приложений может создавать React Native приложения, написанные в React Native версии 0.34 или более поздней.

Чтобы создать приложение React Native для iOS, выполните приведенные далее действия.

  1. Подключитесь к учетной записи службы репозитория (например, Azure DevOps, Bitbucket, GitHub или VSTS).
  2. Выберите репозиторий и ветвь, в которой находится ваше приложение.
  3. Настройте проект или рабочую область сборки, а также схему, которую вы хотите построить.

Примечание

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

1. Связывание репозитория

Сначала подключите учетную запись службы репозитория к Центру приложений. После подключения учетной записи выберите репозиторий, в котором находится проект iOS. У вас должны быть права администратора и разрешения на вытягивание для репозитория.

2. Выбор ветви

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

3. Настройка первой сборки

Перед первой сборкой необходимо настроить проект React Native.

3.1. Project

Выберите .package.json Центр приложений автоматически обнаружит связанный проект или рабочую область Xcode.

3.2. Версия Xcode

Выберите версию Xcode для запуска сборки из раскрывающегося списка. Если переключатель "Использовать устаревшую систему сборки" имеет значение On, то устаревшая система сборки будет использоваться независимо от параметров проекта или рабочей области. Если переключатель "Использовать устаревшую систему сборки" имеет значение Off, будет использоваться конфигурация системы сборки из параметров проекта или рабочей области.

Примечание

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

3.3. Версия Node.js

Выберите версию Node.js, используемую для сборки. Дополнительные сведения о выборе версии Node.js

3.4. Триггеры сборки

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

3.5. Приращение номера сборки

Если этот параметр включен, CFBundleVersion в файле Info.plist вашего приложения автоматически увеличивается для каждой сборки. Изменение происходит перед сборкой и не будет зафиксировано в репозитории.

3.6. подписывание кода;

Успешная сборка .ipa создает файл. Чтобы установить сборку на устройстве, сборка должна быть подписана с помощью допустимого профиля подготовки и сертификата. Чтобы подписать сборки, созданные из ветви, включите вход кода в области конфигурации и отправьте профиль подготовки (.mobileprovision файл) и действительный сертификат (P12) вместе с паролем для сертификата.

Параметры в проекте Xcode должны быть совместимы с отправляемыми файлами. Дополнительные сведения о подписи кода iOS в Центре приложений и документации для разработчиков Apple.

Подписывание приложений с помощью расширений app или watchOS требует дополнительного профиля подготовки для каждого расширения.

3.7. Запуск успешной сборки на реальном устройстве

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

3.8. CocoaPods

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

3.9. Распространение в группу рассылки

Настройте каждую успешную сборку из ветви для распространения в ранее созданную группу рассылки. Добавьте новую группу рассылки в разделе Распространение. Всегда есть группа рассылки по умолчанию с именем "Участники совместной работы", которая включает всех пользователей, имеющих доступ к приложению.

После сохранения конфигурации будет автоматически запущена новая сборка.

4. Создание результатов

Сборки могут находиться в одном из следующих состояний:

  • queued — сборка находится в очереди в ожидании доступных ресурсов.
  • сборка — сборка выполняется и выполняет предопределенные задачи.
  • succeeded — сборка успешно завершена.
  • failed — сборка завершилась неудачно; устраните неполадки, скачав и проверив журнал сборки
  • canceled — сборка была отменена с помощью действия пользователя или истекло время ожидания.

4.1. Журналы сборки

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

|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
    |-- <build-step-1> (e.g. 2_Get Sources.txt)
    |-- <build-step-2> (e.g. 3_Pod install.txt)
    |--
    |-- <build-step-n> (e.g. n_Post Job Cleanup.txt)

Журналы сборки (расположенные в каталоге build/ архива) полезны для устранения неполадок и понимания того, на каком этапе и почему произошел сбой сборки.

4.2. Приложение (.ipa)

Файл .ipa является архивным файлом приложения iPhone, который содержит приложение iOS.

  • Если сборка была подписана правильно, вы можете установить .ipa файл на реальном устройстве, которое входит в профиль подготовки, используемый при подписи. Дополнительные сведения о подписи и распространении кода с помощью Центра приложений см. в документации по подписывке кода iOS в Центре приложений.
  • Если сборка не подписана во время сборки, разработчики могут подписать .ipa файл (локально с помощью codesign) или использовать для других целей (например, отправить в службу тестирования для тестирования пользовательского интерфейса на реальных устройствах или запустить в симуляторе).
  • Неподписанные сборки не создают .ipa файл. Артефакт неподписаемой сборки — это .xcarchive файл, который можно использовать для создания .ipa файла с помощью организатора архивов Xcode.

4.3. Исходные карты и файлы символов

При сборке приложения React Native iOS карта исходного кода JavaScript и один или несколько .dsym файлов создаются автоматически с каждой сборкой и могут быть загружены после завершения сборки.

  • Если вы ранее интегрировали пакет SDK центра приложений в приложение с включенным модулем отчетов о сбоях, маяк отчетов о сбоях требует этот .dsym файл и карта исходного кода JavaScript, чтобы сборка отображала отчеты о сбоях, читаемые человеком (символические).
  • Если вы ранее интегрировали в приложение другой пакет SDK для создания отчетов о сбоях, для соответствующей службы требуется .dsym , чтобы файл и исходная карта JavaScript отображали отчеты о сбоях, доступные для чтения (символические).

Помните, что .dsym файл не изменяется после подписывания .ipaкода . Если вы решите подписать сборку позже, .dsym то созданный до подписывания кода будет по-прежнему действительным.

Если в это приложение включен пакет SDK для аварийного завершения работы, символы iOS и исходные карты будут отправляться в службу аварийного завершения работы Центра приложений. Символы будут включать отчеты о сбоях, доступные для чтения (символьные) в собственном стеке и стеке JavaScript.

5. Советы по сборке

5.1. Yarn

Yarn — это более быстрая и детерминированная замена для npm. Если в репозитории рядом package.jsonс элементом yarn.lock находится файл , центр приложений будет использовать Yarn, выполняя yarn install действия в начале сборки. В противном случае выполняется .npm install

5.2. Пользовательские скрипты сборки

Существует несколько вариантов выполнения скриптов перед выполнением команд сборки по умолчанию в Центре приложений.

  • Создайте скрипт postinstall в файле проекта package.json . Это автоматически выполняется после установки зависимостей.

      "scripts": {
        ...
        "postinstall" : "eslint ./" // other examples: "node ./postinstall.js" or "./postinstall.sh"
      },
    
  • Написание скрипта оболочки с помощью пользовательских скриптов сборки Центра приложений.

    #!/usr/bin/env bash
    
    # Example: Authenticate with private NPM registry
    echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > ~/.npmrc
    
    # Example: Create a file that's not in version control (from base64 encoded environment variable)
    base64 -d <<< "$MY_FILE_CONTENTS" > ios/SuperSecretFile.txt