Как запустить xamarin приложение на iphone
Инсталлятор Xamarin устанавливает плагин к Visual Studio, который позволяет разрабатывать приложения для популярных мобильных платформ в привычном разработчику окружении. Также устанавливается отдельная среда разработки Xamarin Studio, которая, судя по всему, является модифицированной версией MonoDevelop. Мне привычнее работать в Visual Studio поэтому примеры в этой статье будут показаны с использованием именно этой среды разработки.
После установки в Visual Studio добавляются шаблоны проектов для мобильных приложений под Android и iOS (поддерживается создание как специализированных приложений для iPad и iPhone, так и универсальных приложений, а также приложений, использующих OpenGL). Для создания приложений для iOS в Visual Studio прийдется, правда, заплатить. Этот функционал доступен либо в режиме trial, либо в business-версии инструментария, а это стоит $999 в год.
Разработка для Android
После создания Android-проекта мы получаем набор файлов, в котором есть класс главного окна и набор ресурсных файлов. После длительной работы в Eclipse немного раздражает название папок в PascalCase, но к этому можно довольно быстро привыкнуть. Также есть отличия в работе с файлами ресурсов. Для того, чтобы встроенный дизайнер окон понимал файлы ресурсов с лайаутами, у них расширение изменено на .AXML вместо привычного .XML в Eclipse. Это довольно сильно раздражает, особенно если рисовать лайауты в Eclipse, а потом переносить в Visual Studio в случае если Eclipse’овский дизайнер окон больше нравится.
Встроенный дизайнер окон мне лично показался неудобным. Медленный, часто валит всю IDE, я так и не понял, как в нем по-простому переключиться между XML-видом и UI. Здесь уж точно можно сказать что писано чужими для хищников. Я для себя решил, что в Eclipse мне удобнее, привычнее, да и на экран ноутбука в Eclipse помещается больше полезной информации. Может кому-то дизайнер Visual Studio и понравится больше, на вкус и цвет фломастеры разные.
Activities
- Для регистрации activity не надо ничего прописывать в манифесте. Для этого используется аннотация [Activity]
- Для того, чтобы сделать activity стартовой, необходимо для аннотации [Activity] указать параметр MainLauncher. Это будет равносильно заданию action = android.intent.action.MAIN и category = android.intent.category.LAUNCHER в манифесте
- Основные методы жизненного цикла activity (да и вобще все методы) имеют названия в PascalCase.
Элементы управления и обработка событий
Не со всеми обработчиками событий в виде делегатов дела обстоят радужно. В одном из проектов обнаружилась проблема с событием View.ViewTreeObserver.GlobalLayout , у которого при использовании оператора -= не отключались делегаты-обработчики. Да вообще никак не отключались. Пришлось использовать IOnGlobalLayoutListener .
- Создать проект Java Binding Library в решении.
- В папку Jars положить нужный JAR-файл (в JAR-библиотеке не должно быть AndroidManifest.xml, ибо наличие этого файла может повлечь ряд неприятных последствий. Подробнее об этом можно узнать здесь).
- Указать Build Action для JAR-файла как EmbeddedJar.
- В проекте Android-приложения добавить в References проект созданной Java Binding Library.
Работа с базами данных
Для работы с базами данных в Mono for Android предусмотрены используются классы пространства имен Mono.Data.Sqlite (используются для доступа к базам данных SQLite) и System.Data.SqlClient (для доступа к Microsoft SQL Server). Классы пространства имен System.Data.SqlClient доступны только в Business-редакции инструментов разработки. Можно также использовать классы-обертки над родным Java API для Android и сторонние разработки, например sqlite-net, в котором доступен асинхронный вариант API.
Пользоваться доступным API довольно просто. Все очень схоже с разработкой для настольных ПК:
Разработка для iOS
Элементы управления и обработчики событий
Создание элементов управления в коде ничем не отличается от аналогичной работы в Objective-C. Обработчики событий можно навешивать также как и в Android – с помощью делегатов. Также можно добавлять обработчики как в Objective-C через селекторы.
Использование нативных библиотек
В Xamarin iOS, также как и для Android, доступна возможность использования нативных библиотек. Для этих целей есть специальный тип проекта – iOS Binding Project, в который можно добавлять статические библиотеки, после чего они будут слинкованы вместе с основным проектом.
Работа с базами данных
Для работы с базами данных в iOS используются те же пространства имен, что и в Android. API, соответственно, такой же. Небольшая разница может быть в мелочах. Например, для получения пути к файлу базы данных SQLite в Android есть специальный API-вызов:
Удаленная отладка iOS приложений из Visual Studio
В Xamarin 2.0 есть возможность отладки мобильных приложений для iOS прямо из Visual Studio. Для того, чтобы это стало возможно, необходимо иметь в локальной сети Mac с установленным XCode, iOS SDK и Xamarin Studio. Никаких дополнительных настроек производить не надо, достаточно при открытии iOS проекта в Visual Studio выбрать нужный build-сервер из списка доступных.
К сожалению данный подход не заработал с виртуальной машиной, запущенной на том же компьютере что и Visual Studio. Хотя с обычным Mac’ом в локальной сети все замечательно работает. Причин или объяснений этому пока найти не удалось, пытаюсь общаться с разработчиками по этому поводу.
Также не очень понятно, как организовывать UI-тестирование и проверку работоспособности приложения из Visual Studio. Симулятор запускается на Mac’е, похоже, что без VNC здесь не обойтись.
Кроссплатформенные библиотеки классов (Portable Class Libraries)
Xamarin предоставляют возможность создания библиотек, которые могут быть использованы (в виде кода или готовых сборок) сразу для нескольких платформ. Такие библиотеки называются Portable Class Library (PCL).
iOS файл VSMonoTouch,Version=v1.0+.xml
После создания этих двух файлов и перезапуска Visual Studio можно будет указывать Android и iOS в качестве поддерживаемых платформ для новых PCL-проектов или добавить эти платформы в существующие проекты через Properties -> Library -> Target Framework.
Но это еще не все нюансы.
Если вы хотите поддержку Android и iOS в PCL-проекте, то придётся отказаться от поддержки Xbox 360 и Windows Phone 7 (зато можно поддерживать Windows Phone 7.5+). Для Xbox придётся создавать еще один проект и в нем добавлять файлы из существующего PCL-проекта в виде ссылок. Или, как вариант, в одном PCL-проекте оставить все платформы от Microsoft (включая Xbox 360), а в другом оставить только iOS и Android.
Дополнительные компоненты и библиотеки
Xamarin помимо, собственно, продажи инструментария для разработки ПО, открыли магазин по продаже сторонних компонент, многие из которых действительно очень упрощают жизнь разработчику. В магазине доступны как платные, так и бесплатные библиотеки и темы оформления. Полезность, например, бесплатных Xamarin.Auth, Xamarin.Social и Xamarin.Mobile трудно переоценить. Есть возможность публиковать собственные компоненты в этом магазине.
Неприятные моменты
- Жуткие тормоза при отладке Android-приложений, когда на довольно мощной машине с Core i7 и 8 GB RAM при останове на брейкпоинте Visual Studio зависает на 10-15 секунд. Подобное может повторяться на каждом шаге отладчика.
- Отсутствие в списке устройств, доступных для отладки приложений, некоторых устройств, подключенных к компьютеру (которые, тем не менее, видны через adb devices и на которых Eclipse отлично запускает приложения)
- Произвольные отпадания отладчика и необходимость перезапуска приложения в связи с этим.
- Отсутствие статей и учебных материалов (да, есть какие-то материалы на официальном сайте, но они покрывают не все популярные задачи)
- Наличие багов, о которых узнаешь ВНЕЗАПНО! после общения на форуме. Хотя на том же официальном форуме разработчики довольно бодро отвечают на вопросы и вообще молодцы.
- Цена на Business-редакцию очень кусается. К тому же лицензия на год, а не навсегда (немного скрашивает ситуацию наличие скидок при покупке лицензии сразу для нескольких платформ).
Приятные моменты
- При покупке лицензии сразу для нескольких платформ или сразу для нескольких рабочих мест, предусмотрена скидка.
- С выходом новой версии, в которой будет поддержка async\await разработка действительно станет проще и будет возможность использовать кучу полезных библиотек, не меняя их код.
Выводы
Инструментарий от Xamarin таки да, действительно работает и если вы планируете разрабатывать несколько приложений в год или же планируемая прибыль от разрабатываемого приложения больше чем $2k, то Xamarin SDK явно может облегчить вам жизнь и избавить от двойной работы над кодом для каждой платформы.
С другой же стороны, для Indy-разработчика цена в $1k для каждой платформы мне, например, кажется чрезмерной т.к. есть много нюансов, которые необходимо знать и\или прочувствовать на себе перед началом разработки, есть баги, которые неизвестно в каком режиме будут исправляться и неизвестно насколько их наличие может замедлить разработку конкретно вашего проекта.
Немного клёвых ссылочек!
UPD: Уточнение от northicewind по поводу стоимости лицензии:
Используйте Xamarin для развертывания приложений на устройствах iOS для отладки
Хотя Xamarin можно писать и отлаживать в операционной системе Windows, если мы разрабатываем приложения для iOS, нам все равно понадобится компьютер Mac с установленными XCode и Visual Studio для Mac. Развертывание на реальном устройстве не так удобно, как использование Visual Studio, первой IDE в солнечной системе.
Поэтому в этой статье необходимо представить, как использовать Xamarin для развертывания приложений на реальной машине iOS для отладки, а затем, между прочим, некоторые меры предосторожности.
Содержание этой статьи
Подготовьте компьютер Mac
Если у вас нет компьютера Mac, то я могу сказать вам только, к сожалению: эта статья больше бесполезна, у вас ничего не получится . Конечно, вы также можете рассмотреть возможность использования виртуальной машины Mac OS, но вероятность успеха слишком мала. Не буду участвовать.
Установите следующие два основных приложения на свой компьютер Mac:
Оба эти приложения очень большие. Если у вас нет подходящих настроек сетевого прокси, вы можете устанавливать их в течение всего дня. Поэтому настоятельно рекомендуется иметь для загрузки стабильную прокси-сеть.
В остальной части статьи предполагается, что вы уже установили эти два приложения.
жизненный опыт
Вам необходимо иметь некоторые базовые знания. Если вам не удастся развернуть реальное устройство, вы не узнаете, что произошло.
- Ваша учетная запись должна быть учетной записью разработчика Apple .
- Просто нужно зарегистрироватьсяApple Developer Portal, Нет необходимости регистрироваться в программе Apple Developer Program
- Только XCode может создавать профили подготовки разработчиков
- Только XCode может развертывать новые приложения на реальных устройствах iOS.
Другими словами, вы должны выполнить некоторые операции в XCode; вы не можете выполнить задачу развертывания, используя только Visual Studio для Mac.
Подготовить в XCode
* [Важно] Кроме того, если вы разрабатываете расширение iOS и есть два или более пакетов, вам необходимо повторить шаги с 3 по 6. То есть постоянно изменяйте идентификатор пакета, ждите, пока будет сгенерирована новая информация разработчика, а затем разверните это пустое приложение.
Развернуть в Visual Studio для Mac
Теоретически после описанных выше шагов вы можете видеть приложения, разработанные с помощью Xamarin, на своем iPhone. Но он не может работать.
Если при развертывании возникнут какие-либо ошибки, пожалуйста:
- Проверьте, не отличаются ли ваши действия от этой статьи;
- ссылка:Несколько вопросов, требующих внимания при разработке приложений iOS с использованием Xamarin
Работать на iPhone
- Откройте Настройки -> Общие -> Управление устройством.
- Нажмите [Собственная учетная запись разработчика], нажмите [Доверять]
Если вы выполняете эту операцию впервые (на самом деле, эту статью следует читать впервые), может потребоваться много времени, чтобы доверять вашей учетной записи разработчика, а развертывание и отладка Visual Studio для Mac могут быть отлажены из-за тайм-аута ожидания. неудача. Но это не важно, вам просто нужно нажать Остановить отладку в Visual Studio для Mac, а затем начать заново.
Также обратите внимание, что если вы удалите развернутое приложение, операцию на iPhone необходимо будет повторить во время следующего развертывания.
Также обратите внимание, что все шаги, описанные в этой статье, возможно, придется повторять каждые 6 дней.
Если вы видите в блоге что-то, чего не понимаете, сообщите об этом. я построилдотнет профессионально-технический колледж Приглашаем всех присоединиться.
Интеллектуальная рекомендация
Замена персонажа
Пожалуйста, реализуйте функцию для преобразованияЗаменить каждый пробел"% 20". Например, когда строка We We Happy. Строка после замены - We% 20Are% 20Happy. Встроенные функции для строк Pyth.
Подсистема ввода Android - Itreader EventHub :: GetEvents Mneedtscandevices Переменные Подробный анализ
EventHub :: MeetEvents Method, Mneedtscandevices Переменная процесса вызова подробный анализ . if (mNeedToScanDevices.
Базовые знания Python3: List
Просто поймите: 1. Типы элементов в списке могут быть разными, он поддерживает числа, строки и даже списки (так называемая вложенность). 2. Список представляет собой список элементов, заключенн.
NOIP 2017 Улучшенное сокровище группы ___ государственное давление dp + dfs
Главная идея: ответ: Этот вопрос найти несложно, f [i] указывает, что состояние выбранной точки равно i, это минимальная стоимость, а dis [i] указывает количество сокровищ от начальной точки до i. , а.
HYSBZ-2002: Bounce Bouncing Sheep (алгоритм блокировки)
Отскок летающей овцы Однажды Лостмонки изобрел сверхэластичное устройство и, чтобы похвастаться перед своими друзьями-овцами, пригласил маленькую овечку поиграть в игру. В начале игры Lostmonkey разме.
Как настроить Xamarin для создания приложений под iOS
Для того чтобы разрабатывать приложения под Android никаких проблем не возникает, что же касается iOS тут все таки есть пара подводных камней.
Александр, Как при разработке из под студии сделать так чтобы в сети был не мак а виртуалка с мак ос?
Дмитрий, Как при разработке из под студии сделать так чтобы в сети был не мак а виртуалка с мак ос?
Макс, зависит от виртуалки, но если в ней сеть есть, то ничего настраивать, вроде, не надо. На Mac OS нужно запустить Xamarin Build Host и нажать кнопку Pair и тогда студия сама все найдет.
Дмитрий, спасибо сегодня попробую. А Xamarin Build Host это что? Его надо устанавливать на виртуалку?
Дмитрий, так получается Xamarin надо ставить и на основную ОС (я хочу писать из по Visual Studio) так и на виртуалку?
Макс, да, как оно иначе собирать на маке будет?
В принципе, студия и сама делает билд, но для запуска на устройстве или симуляторе она пересобирает на маке.
Дмитрий, Не вводи в заблуждение человека. Xamarin Build Host мертвая тулза. Процесс связывания Xamarin под виндой и под Mac стал гораздо проще.
Современная IT экосистема относительно раздроблена. Разрозненность в аппаратном обеспечении волнует бизнес и прикладных программистов значительно меньше, по сравнению с требованиями к вычислительной мощности используемой платформы. При этом основные сложности реализации связаны с использованием мобильных устройств, рынок которых разделился, в основном, на две наиболее популярные операционные системы: Android и iOS.
Бизнесу важно решать свои задачи на максимальном парке устройств и систем. Для решения данной проблемы возможно разработать одинаковую, по смыслу, программу под каждую систему. Однако это потребует привлечения отдельных команд для разработки под каждую из них. При этом в процессе развития и поддержки будут накапливаться отличия в реализациях.
Для уменьшения издержек, в среде программистов популярно использование кроссплатформенной разработки. В этом случае вся программа или ее часть реализуется универсально сразу для нескольких платформ одной командой специалистов. При этом инструментов кроссплатформенной разработки опубликовано довольно много.
Одной из крайностей при написании программы или ее части является использование языка C/C++, что позволяет добиться значительных показателей производительности, что приведет к увеличению сроков и общей стоимости разработки. Другой крайностью является Web-технологии. В настоящее время интернет-сайты открываются практически на любых современных устройствах с экраном. При этом даже при использовании специализированных оптимизированных библиотек разработчики сталкиваются с крайне низкой производительностью и ограничениями функциональности.
Так, для случаев, когда требуется создать классическое интерфейсное приложение скомпилированное под несколько платформ, возможно использование Xamarin и его Xamarin.Forms. При это, если необходимо применение 3D-графики, а также дополненной и виртуальной реальностью, то оптимальным будет использование Unity3D. Работа с 3D-графикой в Xamarin возможна, но значительно сложнее. Разрабатывать интерфейсы в Unity3D также возможно, но функциональность инструментария недостаточна, а плавность и отзывчивость интерфейса ниже. Кроме этого существуют наработки, побуждающие разработчиков работать в одной или другой среде.
Начиная с версии Unity3D 2019.3, появилась возможность интегрировать проект в качестве библиотеки в нативные Android и iOS приложения. Однако больший интерес представляет возможность встраивать Unity3D в Xamarin приложение, используя при этом один и тот же Xamarin проект для обоих платформ.
В версиях Unity3D 2019.3+ изменилась структура экспортируемого проекта, как для iOS, так и для Android. Из-за чего весь основной проект заключен в библиотеке unityLibrary и UnityFramework, а для его запуска используется так называемая обертка (Launcher и Unity-iPhone). Особый интерес представляет возможность ее замены на альтернативный Xamarin проект.
Описание пути достижения подобного результата и является основной целью этой статьи.
Предварительная подготовка Unity3D
Для начала нужен Unity3D проект, с самим проектом нужно будет сделать минимум изменений. До внесения изменений желательно убедиться, что приложение работает как нужно. В настройках необходимо выставить Bundle Id для iOS и Android. Также можно выставить Signing Team Id для iOS, это может помочь далее в процессе подписи приложения.
Необходимо добавить AndroidManifest.xml, где необходимо закомментировать <category android:name="android.intent.category.LAUNCHER"/>, эта строка отвечает за вывод иконки приложения в меню Android. В данном случае эта иконка будет лишней.
Также нам может понадобиться переопределить UnityActivity, с помощью OverrideUnityActivity.java, это необходимо для перехвата системных событий юнити, отвечающих за выход из приложения и за выгрузку Unity части приложения из памяти.
Подготовим Xamarin проект
Так же как в Unity3D проекте, выставим Bundle Id для iOS и Android. В нашем случае это пустой Xamarin.Forms проект, с одним общим проектом и двумя проектами под iOS и Android соответственно. Добавим в общий проект интерфейс ILaunchActivity содержащий один метод LaunchUnity. А также 2 заглушки LaunchActivity в проекты iOS и Android. Визуально он будет представлять из себя кнопку для запуска Unity3D, нажатие на которую будет вызывать метод LaunchUnity.
Подготовим IOS часть нашего приложения
1. Для начала построим Unity проект под iOS. Открываем проект в xcode, проверяем подписи для целей Unity-iPhone и UnityFramework. Сертификат разработчика должен совпадать с тем, что будет использован при построении приложения.
2. Меняем Target Membership у папки Data на UnityFramework. В папке Data содержаться ресурсы, необходимые Unity3D приложению для работы. Эти ресурсы могут попасть в результирующий проект либо в составе UnityFramework, либо непосредственно могут быть добавлены в финальный проект.
3. Сделаем билд цели UnityFramework в xcode. Возьмем получившийся UnityFramework.framework в Finder и сохраним его.
4. Открываем Xamarin Solution в Visual Studio 2019 for Mac.
5. Создаем новый проект Binding.Unity.Ios (Binding Library), он будет отвечать за взаимодействие с Unity3D. К сожалению, в случае iOS генератор API не реализован, необходимо будет описать API самостоятельно. Добавим туда код биндинга к Unity API. Это 3 cs-файла из корня репозитория.
6. Добавим сохраненный ранее UnityFramework.framework как Native Reference в проект Binding.Unity.Ios и построим проект.
Если в процессе не возникло ошибок добавим Binding.Unity.Ios в зависимости к Main.iOS.
7. Добавим реализацию запуска Unity на iOS платформе.
Часть LaunchActivity.cs:
Console.WriteLine("Unity launching on ios");
var currentWindow = UIApplication.SharedApplication.KeyWindow; // сохраним текущее окно, где мы сейчас находимся
var args = Environment.GetCommandLineArgs(); // получим аргументы запуска исходного приложения, их необходимо будет передать Unity3D части
var ufw = UnityFramework.GetInstance(); // получим ссылку на Unity библиотеку
var listener = new MyUnityListener(currentWindow, ufw); // класс будет отвечать за перехват системных событий Unity3D
ufw.SetDataBundleId("com.unity3d.framework"); // задаем местоположение папки Data, это не нужно, если папка будет добавлена в основной проект
ufw.RegisterFrameworkListener(listener); // регистрируем обработчик системных событий
ufw.ShowUnityWindow(); // и переключаемся на окно Unity3D
Класс MyUnityListener наследуется от UnityFrameworkListener и может переопределить методы UnityDidQuit и UnityDidUnload. Перехват UnityDidUnload позволяет при вызове из Unity метода Application.Unload, перейти в основном приложении на другое окно, например так: currentWindow.MakeKeyAndVisible();
Наш проект также использовал дополненную реальность на стороне Unity3D. Для работы этому функционалу нужен доступ к камере телефона. Это необходимо указать в Info.plist проекта Main.IOS: Privacy – Camera Usage Description = Needed for AR
Проверим настройки подписи Main.IOS и построим основной проект. В результате мы должны получить проект, который по нажатию кнопки в интерфейсе запустит Unity3D часть.
Подготовим Android проект
Построим Unity3D проект для платформы Android, для этого при построении проекта надо выбрать «export project».
Далее нам будет необходимо построить часть этого проекта на Android Studio, как Android AAR библиотеку. Для этого создадим пустой новый проект в Android Studio.
Откроем Settings.Gradle и добавим туда ссылку на UnityLibrary нашего Unity3D проекта:
include ':unityLibrary'
project(':unityLibrary').projectDir=new File('../unity-app/buildAndroid/unityLibrary') // путь до unity-app/buildAndroid/unityLibrary
Так как наш проект работает с дополненной реальностью, он использует нативные .aar библиотеки ARCore, как зависимости. Созданный нами Android проект не сможет объединить их с кодом Unity в единый AAR. Поэтому необходимо закомментировать их использование:
// implementation(name: 'arcore_client', ext:'aar')
// implementation(name: 'ARPresto', ext:'aar')
// implementation(name: 'unityandroidpermissions', ext:'aar')
// implementation(name: 'UnityARCore', ext:'aar')
Построим проект UnityLibrary в Android Studio, результатом чего станет файл unityLibrary\build\outputs\aar\unityLibrary-debug.aar.
Перейдем в Xamarin, добавим там проект Android Binding Library. В Jars нового проекта добавляем ссылку на полученный ранее AAR как LibraryProjectZip. Строим Binding Library.
В случае Android – код для взаимодействия будет сгенерирован автоматически.
Добавляем binding.unity.android как зависимость в Main.Android.
Добавим код запуска Unity:
Console.WriteLine("Unity launching on android");
var intent = new Intent(Forms.Context, typeof(CustomUnityPlayerActivity)); // создаем Intent
Forms.Context.StartActivity(intent); // и запускаем его
Здесь также используется CustomUnityPlayerActivity класс, который помогает там обработать события Unity3D, он наследуется от OverrideUnityActivity (того java-класса, что был добавлен в Unity3D проект). Мы можем переопределить OnUnityPlayerQuitted и OnUnityPlayerUnloaded. В OnUnityPlayerUnloaded мы, аналогично с iOS перейдем на исходное окно.
var intent = new Intent(Forms.Context, typeof(MainActivity));
Forms.Context.StartActivity(intent);
Остается пара мелочей: необходимо добавить в проект ресурс, без которого Unity3D часть не стартует, values/strings.xml с содержимым.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="game_view_content_description">Game view</string>
</resources>
Также нужно не забыть добавить закомментированные ранее .aar библиотеки ARCore в проект Main.Android как AndroidAarLibrary.
После этого можно построить проект и протестировать его.
В результате у нас получилось 2 приложения, основанные на одной кодовой базе. Первое тесты показали, проект запускается, в нем работает дополненная реальность. Катастрофической потери производительности не наблюдается.
Если вы ищете способ протестировать приложения iOS на Mac или ПК, вам нужно использовать симулятор. Симуляторы отличаются от эмуляторов тем, что они не предназначены для репликации оборудования, а скорее моделируют базовое состояние оборудования.
Хороший симулятор будет моделировать эти условия настолько хорошо, что сам симулятор сможет эмулировать аппаратное обеспечение. Вы можете моделировать iPhone, iPad, Apple Watch и даже среды Apple TV с помощью программного обеспечения для моделирования, хотя для достижения наилучших результатов вам понадобится Mac.
Вот ваши три лучших варианта.
1. Xcode 9 Simulator (Mac)
Симулятор работает как стандартное приложение Mac на вашем рабочем столе. Поскольку Xcode доступен только на платформе Mac, симулятор Apple недоступен для пользователей Windows.
Решение Apple включает поддержку нескольких симуляторов, которые взаимодействуют друг с другом. Это дает вам возможность выполнять такие вещи, как запуск имитации watchOS, чтобы проверить интеграцию вашего приложения Watch с аналогом iOS.
Официальный симулятор также предоставляет доступ ко всем API-интерфейсам iOS и основным сервисам. Если вы создаете приложение, которое использует Game Center для многопользовательской игры
или HealthKit для данных о деятельности
Вы можете использовать эти инструменты, чтобы проверить, правильно ли приложение взаимодействует с системой.
Ни одно программное решение не может заменить реальное физическое устройство, но Симулятор Xcode 9 подходит довольно близко. В целях быстрого тестирования и развертывания вы просто не можете превзойти решение, встроенное в используемую вами среду IDE.
Самое приятное то, что она абсолютно бесплатна вместе с остальной средой разработки Xcode.
2. Visual Studio с Xamarin Live (Windows, Mac) [больше не доступно]
За последние несколько лет Microsoft проделала большую работу, чтобы позиционировать Visual Studio в качестве платформы для разработки для кросс-платформенной разработки.
, В мае 2017 года они представили Xamarin Live, приложение для iOS, которое позволяет загружать и тестировать собственные приложения на подключенном устройстве iOS.
3. Visual Studio с Xamarin и Mac (Windows, Mac)
Это лучший вариант, чем использование приложения Xamarin Live iOS (см. Выше), но это также более дорогое занятие, поскольку не у всех есть Mac. Если вы уже используете Visual Studio для Mac, вы можете установить Xcode и запустить симулятор с помощью Xamarin прямо на рабочем столе.
Те же сборы взимаются за Xamarin (начиная с 99 долларов в месяц), плюс вам потребуется Visual Studio Enterprise и некоторое оборудование Apple для загрузки.
4. Appetize.io (Браузер)
Приложения передаются через браузер и могут быть встроены в любую веб-страницу с помощью iframe. Это делает платформу идеальной для целей тестирования, проверки концепции, демонстрации прототипа клиентам или быстрого поиска отзывов о новом облике или функции.
Сетевой характер платформы означает, что вы можете передать ссылку кому угодно и где угодно, чтобы они протестировали ваше приложение. Как и в случае с симулятором, вы можете выбирать из широкого спектра комбинаций устройств и программного обеспечения.
Однако у этого метода есть недостатки, в частности, снижение производительности по сравнению с запуском симуляции на Mac.
, Он также не глубоко интегрирован в среду разработки, например, Xcode Simulator или Visual Studio с Xamarin, на котором запущен удаленный симулятор iOS.
Тогда есть проблема стоимости. Вы платите за «время виртуализации», поэтому чем больше времени вы хотите потратить на запуск своих приложений, тем больше вам придется потратить. Базовый пакет стоит от 40 долларов в месяц, хотя вы можете подписаться на бесплатную пробную версию на 100 минут, чтобы два пользователя могли сначала протестировать ее.
Избегайте отдыха
Не существует настоящего симулятора iOS для Windows, и если бы существовала Apple, скорее всего, началось бы судебное разбирательство, чтобы закрыть его. Имея это в виду, есть много приложений, изображающих из себя симуляторы iOS. Многие просто не работают, некоторые используются для распространения вредоносных программ, другие утверждают, что они бесплатны, но в последнюю минуту снижают скрытые расходы для вас.
Appetize.io, кажется, идеально подходит для тестирования в конце цикла разработки, но браузерное решение имеет свой набор плюсов и минусов и цену, чтобы соответствовать.
Дайте нам знать, как симуляции iOS интегрируются в ваш рабочий процесс в комментариях ниже.
Читайте также: