Создание приложений Xamarin для iOS
Важно!
Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.
Узнайте больше о сроках поддержки и альтернативных вариантах.
Примечание
Поддерживаемые версии и требования Центр приложений поддерживает проекты переносимой библиотеки классов (PCL) и .NET Standard . Сведения о версиях .NET Standard см. в статье Компьютеры облачной сборки . Центр приложений не поддерживает компоненты из хранилища компонентов Xamarin, и мы рекомендуем использовать пакеты NuGet всякий раз, когда они доступны. Если вы используете компонент, который не может быть заменен, свяжитесь с нами. См . справку и отзывы.
Чтобы приступить к созданию первого приложения Xamarin для iOS, вам потребуется:
- Подключитесь к учетной записи службы репозитория (GitHub, Bitbucket, VSTS, Azure DevOps).
- Выберите репозиторий и ветвь, в которой находится ваше приложение.
- Настройте проект или рабочую область сборки, а также схему, которую вы хотите построить.
Примечание
Чтобы приложение выполнялось на реальном устройстве, сборка должна быть подписана кодом с помощью допустимого профиля подготовки и сертификата.
Если вы ранее не подключались к учетной записи службы репозитория, необходимо подключить ее. После подключения учетной записи выберите репозиторий, в котором находится проект iOS. Чтобы настроить сборку для репозитория, вам потребуется разрешение администратора и разрешение на извлечение.
После выбора репозитория выберите ветвь, которую вы хотите создать. По умолчанию будут перечислены все активные ветви.
Перед первой сборкой необходимо настроить проект Xamarin.
Центр приложений автоматически обнаруживает файлы решения и проекта в репозитории, если они находятся в диапазоне анализа. Выберите .sln или .csproj/.fsproj , которые требуется выполнить сборку.
Примечание
Для достижения оптимальной производительности анализ в настоящее время ограничен двумя уровнями каталогов для .sln и четырьмя уровнями каталогов для CSPROJ/fsproj , включая корень репозитория.
В коде обязательно отключите проекты Android и UWP для конфигураций сборки, предназначенных для сборок iOS: перейдите к сопоставлениям конфигурации решения, а для всех сопоставлений, предназначенных для iPhone и iPhoneSimulator, снимите флажки все проекты, предназначенные для других платформ. Это изменение гарантирует, что при сборке .sln она не будет пытаться выполнить сборку других проектов. Доступны дополнительные сведения о сопоставлении конфигураций решений .
Чтобы выполнить сборку из csproj/.fsproj-файла , все указанные проекты (например, проект PCL) должны содержать конфигурацию с тем же именем, что и в исходном проекте iOS. Таким образом, если вы запускаете конфигурацию отладки для симулятора в Центре приложений, проект PCL должен иметь конфигурацию Debug|iPhoneSimulator . Если они не существуют, и для предотвращения дальнейших ошибок мы добавляем такие конфигурации перед сборкой проектов. Эти конфигурации имеют базовые параметры по умолчанию только для отладки и выпуска.
Выберите конфигурацию, с которой вы хотите выполнить сборку. Конфигурации обнаруживаются автоматически в зависимости от исходного файла, выбранного на предыдущем шаге.
Центр приложений позволяет использовать различные среды Mono в составе соответствующего пакета SDK для Xamarin.iOS для вашей сборки, чтобы поддерживать обратную совместимость и одновременно выпускать поддержку новых функций. По умолчанию Mono для новой конфигурации ветви будет последней стабильной. Вы можете использовать одну из предыдущих сред Mono для создания более старых версий платформ или библиотек. При выборе другой версии Mono вы увидите версию пакета SDK для Xamarin.iOS, которая входит в комплект. Чтобы отслеживать обновления версий пакета SDK для Xamarin, вы можете прочитать записи в блоге о выпуске Xamarin.
Правильная версия .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 |
Для поддерживаемых в настоящее время версий Xamarin требуется Xcode 11.7 или более поздней версии.
По умолчанию новая сборка активируется при каждой отправке разработчиком в настроенную ветвь. Если вы предпочитаете активировать новую сборку вручную, этот параметр можно изменить на панели конфигурации.
Сборки симулятора могут выполняться только в симуляторах и не могут быть установлены на устройстве, однако сборки выполняются быстрее, чем сборки устройства. Если сборка не является сборкой симулятора, необходимо отправить файлы подписывания кода на следующем шаге.
Если этот параметр включен, CFBundleVersion
в info.plist приложения автоматически увеличивается для каждой сборки. Изменение происходит перед сборкой и не будет зафиксировано в репозитории.
При успешной сборке устройства будет создан 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>
Используйте созданный IPA-файл, чтобы проверить, запускается ли приложение на реальном устройстве. Запуск тестирования добавляет еще около 10 минут к времени сборки. Вы можете проверка более полное руководство по тестированию сборок
Если файл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.
Вы можете настроить распространение каждой успешной сборки из ветви в ранее созданную группу рассылки. Вы можете добавить новую группу рассылки в разделе Распространение. Всегда существует группа рассылки по умолчанию с именем "Участники совместной работы", в которую входят все пользователи, имеющие доступ к приложению.
После сохранения конфигурации будет автоматически запускаться новая сборка.
После активации сборки она может находиться в следующих состояниях:
- queued — сборка находится в очереди, ожидающей освобождения ресурсов.
- building — сборка выполняется и выполняет предопределенные задачи.
- succeeded — сборка успешно завершена.
- failed — сборка остановлена из-за сбоя. Вы можете устранить неполадки, скачав и проверив журнал сборки.
- canceled — сборка была отменена действием пользователя или истекло время ожидания.
Для завершенной сборки (успешной или неудачной) скачайте журналы, чтобы понять, как она прошла. Центр приложений предоставляет архив со следующими файлами:
|-- 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/
каталоге архива) полезны для устранения неполадок и понимания того, на каком этапе и почему произошел сбой сборки.
— .ipa
это архивный файл приложения iOS, содержащий приложение iOS. Если сборка подписана правильно, .ipa
можно установить на реальном устройстве, соответствующем профилю подготовки, используемому при подписи. Дополнительные сведения о подписании и распространении кода с помощью Центра приложений.
Если приложение является сборкой симулятора, вы можете запустить .app
файл в симуляторе, но не можете использовать его на реальном устройстве.
Файлы символов создаются только для сборок устройств. DSYM-файлы содержат отладочные символы для приложения.
- Если ранее интегрирован пакет SDK центра приложений в приложение с включенным модулем отчетов о сбоях, службе отчетов о сбоях для сборки требуется, чтобы этот
.dsym
файл отображался для читаемых пользователем (символьных) отчетов о сбоях. - Если вы ранее интегрировали другой пакет SDK для создания отчетов о сбоях в приложении (например, пакет SDK HockeyApp), для соответствующей службы требуется
.dsym
, чтобы файл отображал читаемые отчеты о сбоях.