Обновление существующих приложений iOS
Выполните следующие действия, чтобы обновить существующее приложение Xamarin.iOS для использования единого API.
Для обновления существующего приложения для использования единого API требуются изменения в самом файле проекта, а также пространства имен и API, используемые в коде приложения.
Дорога к 64 битам
Новые унифицированные API необходимы для поддержки 64-разрядных архитектур устройств из мобильного приложения Xamarin.iOS. По состоянию на 1 февраля 2015 г. Apple требует, чтобы все новые отправки приложений в iTunes App Store поддерживали 64-разрядные архитектуры.
Xamarin предоставляет средства для Visual Studio для Mac и Visual Studio для автоматизации процесса миграции из классического API в единый API или можно вручную преобразовать файлы проекта. Хотя использование автоматического инструментария настоятельно рекомендуется, в этой статье рассматриваются оба метода.
Прежде чем начать...
Прежде чем обновить существующий код до единого API, настоятельно рекомендуется исключить все предупреждения компиляции. Многие предупреждения в классическом API становятся ошибками после миграции в Единый. Исправление их перед началом проще, так как сообщения компилятора из классического API часто предоставляют указания о том, что нужно обновить.
Автоматическое обновление
После исправления предупреждений выберите существующий проект iOS в Visual Studio для Mac или Visual Studio и выберите "Миграция в единый API Xamarin.iOS" в меню "Проект". Например:
Перед запуском автоматической миграции необходимо согласиться с этим предупреждением (очевидно, что у вас должны быть резервные копии и управление версиями перед началом этого приключения):
Средство в основном автоматизирует все шаги, описанные в разделе "Обновление вручную ", представленном ниже, и является предлагаемым способом преобразования существующего проекта Xamarin.iOS в единый API.
Действия по обновлению вручную
Опять же, после исправления предупреждений выполните следующие действия, чтобы вручную обновить приложения Xamarin.iOS для использования нового единого API:
1. Обновление типа проекта и целевого объекта сборки
Измените вкус проекта в файлах csproj на 6BC8ED88-2882-458C-8E55-DFD12B67127B
FEACFBD2-3405-455C-9665-78FE426C6842
. Измените csproj-файл в текстовом редакторе, заменив первый элемент в элементе <ProjectTypeGuids>
, как показано ниже.
Измените элемент Import, содержащий Xamarin.iOS.CSharp.targets
Xamarin.MonoTouch.CSharp.targets
следующее:
2. Обновление ссылок на проект
Разверните узел "Ссылки" проекта приложения iOS. Изначально будет отображаться ссылка *broken-monotouch, аналогичная этому снимку экрана (так как мы только что изменили тип проекта):
Щелкните правой кнопкой мыши проект приложения iOS для редактирования ссылок, а затем щелкните ссылку monotouch и удалите ее с помощью красной кнопки "X".
Теперь прокрутите страницу до конца списка ссылок и установите флажок сборки Xamarin.iOS .
Нажмите кнопку ОК , чтобы сохранить изменения ссылок на проект.
3. Удаление MonoTouch из пространств имен
Удалите префикс MonoTouch из пространств имен в using
инструкциях или где бы имя класса было полным (например, MonoTouch.UIKit
становится простоUIKit
).
4. Типы повторного сопоставления
Были введены собственные типы, заменяющие некоторые ранее используемые типы , например экземпляры (например, экземпляры System.Drawing.RectangleF
CoreGraphics.CGRect
). Полный список типов можно найти на странице собственных типов .
5. Исправление переопределения методов
Некоторые UIKit
методы изменили свою подпись, чтобы использовать новые собственные типы (например nint
, ). Если пользовательские подклассы переопределяют эти методы, подписи больше не будут совпадать и будут приводить к ошибкам. Исправление этих переопределений методов путем изменения подкласса в соответствии с новой сигнатурой с помощью собственных типов.
Примеры включают изменение public override int NumberOfSections (UITableView tableView)
возвращаемого и изменяющего nint
тип возвращаемого типа и типов параметров в public override int RowsInSection (UITableView tableView, int section)
nint
.
Рекомендации
При преобразовании существующего проекта Xamarin.iOS из классического API в новый унифицированный API следует учитывать при преобразовании существующего проекта Xamarin.iOS в новый унифицированный API, если это приложение использует один или несколько компонентов или пакета NuGet.
Компоненты
При попытке компиляции необходимо также обновить любой компонент, включенный в приложение, до единого API. Для любого включенного компонента замените текущую версию новой версией из хранилища компонентов Xamarin, которая поддерживает единый API и выполните чистую сборку. Любой компонент, который еще не преобразован автором, будет отображать 32-разрядное предупреждение только в хранилище компонентов.
Поддержка NuGet
Хотя мы внесли изменения в NuGet для работы с поддержкой единого API, не было нового выпуска NuGet, поэтому мы оцениваем, как получить NuGet для распознавания новых API.
До этого момента, как и компоненты, необходимо переключить любой пакет NuGet, включенный в проект, на версию, которая поддерживает унифицированные API и выполнить чистую сборку после этого.
Внимание
Если в форме "Ошибка 3 не удается включить как monotouch.dll", так и "Xamarin.iOS.dll" в один и тот же проект Xamarin.iOS, ссылка на "Xamarin.iOS.dll" указана явным образом. хотя на "monotouch.dll" ссылается xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null" после преобразования приложения в объединенные API, обычно это связано с компонентом или пакетом NuGet в проекте, который не был обновлен до единого API. Необходимо удалить существующий компонент или NuGet, обновить до версии, поддерживающей объединенные API и выполнить чистую сборку.
Включение 64-разрядных сборок приложений Xamarin.iOS
Для мобильного приложения Xamarin.iOS, преобразованного в единый API, разработчик по-прежнему должен включить сборку приложения для 64-разрядных компьютеров из параметров приложения. Дополнительные инструкции по включению 64-разрядных сборок приложений Xamarin.iOS см. в документе "Рекомендации по 32/64-разрядной платформе".
Завершение
Независимо от того, следует ли использовать автоматический или ручной метод для преобразования приложения Xamarin.iOS из классического интерфейса в объединенные API, существует несколько экземпляров, требующих дальнейшего вмешательства вручную. Ознакомьтесь с нашими Советы для обновления кода в документе Единого API для известных проблем и обходных задач.