Создание приложений Xamarin для iOS

Важно!

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

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

Примечание

Поддерживаемые версии и требования Центр приложений поддерживает проекты переносимой библиотеки классов (PCL) и .NET Standard . Сведения о версиях .NET Standard см. в статье Компьютеры облачной сборки . Центр приложений не поддерживает компоненты из хранилища компонентов Xamarin, и мы рекомендуем использовать пакеты NuGet всякий раз, когда они доступны. Если вы используете компонент, который не может быть заменен, свяжитесь с нами. См . справку и отзывы.

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

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

Примечание

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

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

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

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

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

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

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

3.1. Проект или решение

Центр приложений автоматически обнаруживает файлы решения и проекта в репозитории, если они находятся в диапазоне анализа. Выберите .sln или .csproj/.fsproj , которые требуется выполнить сборку.

Примечание

Для достижения оптимальной производительности анализ в настоящее время ограничен двумя уровнями каталогов для .sln и четырьмя уровнями каталогов для CSPROJ/fsproj , включая корень репозитория.

3.1.1. Сборка из файла решения (.sln)

В коде обязательно отключите проекты Android и UWP для конфигураций сборки, предназначенных для сборок iOS: перейдите к сопоставлениям конфигурации решения, а для всех сопоставлений, предназначенных для iPhone и iPhoneSimulator, снимите флажки все проекты, предназначенные для других платформ. Это изменение гарантирует, что при сборке .sln она не будет пытаться выполнить сборку других проектов. Доступны дополнительные сведения о сопоставлении конфигураций решений .

3.1.2. Сборка из файла проекта (.csproj/.fsproj)

Чтобы выполнить сборку из csproj/.fsproj-файла , все указанные проекты (например, проект PCL) должны содержать конфигурацию с тем же именем, что и в исходном проекте iOS. Таким образом, если вы запускаете конфигурацию отладки для симулятора в Центре приложений, проект PCL должен иметь конфигурацию Debug|iPhoneSimulator . Если они не существуют, и для предотвращения дальнейших ошибок мы добавляем такие конфигурации перед сборкой проектов. Эти конфигурации имеют базовые параметры по умолчанию только для отладки и выпуска.

3.2. Конфигурация

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

3.3. Версия Mono

Центр приложений позволяет использовать различные среды Mono в составе соответствующего пакета SDK для Xamarin.iOS для вашей сборки, чтобы поддерживать обратную совместимость и одновременно выпускать поддержку новых функций. По умолчанию Mono для новой конфигурации ветви будет последней стабильной. Вы можете использовать одну из предыдущих сред Mono для создания более старых версий платформ или библиотек. При выборе другой версии Mono вы увидите версию пакета SDK для Xamarin.iOS, которая входит в комплект. Чтобы отслеживать обновления версий пакета SDK для Xamarin, вы можете прочитать записи в блоге о выпуске Xamarin.

3.3.1. Версия .NET

Правильная версия .NET будет выбрана автоматически на основе версии Xamarin.iOS, используемой для сборки, и ее нельзя будет перезаписать. Сопоставление Xamarin.iOS с .NET, используемой нашими службами, можно просмотреть в следующей таблице:

Xamarin.iOS .NET
13.20 3.1.401
14,0 3.1.401
14,2 3.1.401
14,4 3.1.401
14.6 5.0.100
14,8 5.0.100
14.10 5.0.100
14.14 5.0.100
14.16 5.0.100
14.20 5.0.100
15 5.0.100
15.2 5.0.100
15,4 5.0.100
15,6 5.0.100
15.8 5.0.100
15.10 5.0.100
15.12 5.0.100
16,0 5.0.100
16.0 (.NET 6) 6.0.405
16.1 6.0.405
16,2 6.0.405

3.4. Версия Xcode

Для поддерживаемых в настоящее время версий Xamarin требуется Xcode 11.7 или более поздней версии.

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

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

3.6. Сборка симулятора

Сборки симулятора могут выполняться только в симуляторах и не могут быть установлены на устройстве, однако сборки выполняются быстрее, чем сборки устройства. Если сборка не является сборкой симулятора, необходимо отправить файлы подписывания кода на следующем шаге.

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

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

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

При успешной сборке устройства будет создан IPA-файл. Чтобы установить сборку на устройстве, ее необходимо подписать действительным профилем подготовки и сертификатом. Чтобы подписать сборки, созданные из ветви, включите подписывание кода в области конфигурации и отправьте профиль подготовки (.mobileprovision) и действительный сертификат (.p12) вместе с паролем для сертификата. Дополнительные сведения о подписи кода и подготовке устройств для приложений Xamarin iOS см. в документации по Xamarin.

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

Примечание

Существует проблема при выполнении nuget restore в проектах, содержащих приложения Xamarin watchOS. Создание приложения watchOS в Центре приложений без обходного решения приведет к ошибке:

Project <project> is not compatible with xamarinios10 (Xamarin.iOS,Version=v1.0) / win-x86. Project <project> supports: xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0).

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

<ReferenceOutputAssembly>False</ReferenceOutputAssembly>

Пример ссылки на WatchApp с обходным решением:

    <ProjectReference Include="..\MyWatchApp\MyWatchApp.csproj">
      <Project>{59EB034F-3D29-43A5-B89F-124879504771}</Project>
      <Name>MyWatchApp</Name>
      <IsWatchApp>True</IsWatchApp>
      <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
    </ProjectReference>

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

Используйте созданный IPA-файл, чтобы проверить, запускается ли приложение на реальном устройстве. Запуск тестирования добавляет еще около 10 минут к времени сборки. Вы можете проверка более полное руководство по тестированию сборок

3.10. Восстановление NuGet

Если файлNuGet.config возвращен для репозитория и находится рядом с .sln или корневым уровнем репозитория, Центр приложений восстанавливает частные веб-каналы NuGet при их добавлении, как показано в примере ниже. Учетные данные можно безопасно добавлять с помощью переменных среды:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
    <add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSourceCredentials>
    <MyAuthNuget>
      <add key="Username" value="$USER_VARIABLE" />
      <add key="ClearTextPassword" value="$PASSWORD_VARIABLE" />
    </MyAuthNuget>
  </packageSourceCredentials>
</configuration>

Если у вас есть сложные конфигурации и вам нужны дополнительные сведения, см . статью Настройка поведения NuGet.

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

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

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

4. Результаты сборки

После активации сборки она может находиться в следующих состояниях:

  • queued — сборка находится в очереди, ожидающей освобождения ресурсов.
  • building — сборка выполняется и выполняет предопределенные задачи.
  • 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 или .app)

.ipa это архивный файл приложения iOS, содержащий приложение iOS. Если сборка подписана правильно, .ipa можно установить на реальном устройстве, соответствующем профилю подготовки, используемому при подписи. Дополнительные сведения о подписании и распространении кода с помощью Центра приложений.

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

4.3. Файлы символов (DSYM)

Файлы символов создаются только для сборок устройств. DSYM-файлы содержат отладочные символы для приложения.

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