Идем в обход: альтернативные платформы разработки под iOS

iOS уже далеко не новая платформа.«Кул хацкеры» (а с ними и автор этих строк), ломавшие выпущенные эксклюзивно для AT&T iPhone первого поколения, следуя, разумеется, окольными путями, писали под них еще в 2007-м, да и «цивильный» способ разработки — официальный SDK — вышел уже около трех лет назад. Но речь сегодня пойдет не о нем, а об альтернативных средствах разработки.
 Для того, чтобы отвернуться от традиционных Objective-C и Cocoa Touch, может быть много причин — кросс-платформенность, существующие наработки, опыт, команда, или просто предпочтения. Но главное — для этого шага есть много возможностей: Corona, Unity, Appcelerator, PhoneGap, MonoTouch, XnaTouch, BatteryTech, или даже «хардкорный» C. И хотя у нас в Parallels и Cocoa, и Cocoa Touch активно используется (как в Parallels Desktop, так и в Parallels Mobile), не буду скрывать: лично мне Objective-C не нравится, Почему? Да потому что Apple делает свои продукты исключительно для пользователей, а к разработчикам поворачивается тем местом, что находится пониже поясницы. Другими словами, в фирменных продуктах Apple для девелоперов нет ни нормальной среды разработки, ни вменяемой документации. Поэтому я расскажу обо всех альтернативах, которые я сумел найти и попробовать, прежде чем нашел удобное и кросс-платформенное решение.
Corona
https://www.anscamobile.com/corona/

Разработчики каждой платформы очень хотят кушать и ездить на хороших немецких машинах, поэтому Corona SDK платный. Стоит она $199 на iOS, $349 — на iOS и Android. Платить нужно только за возможность публикации в AppStore и Android Marketplace (как бонус — доступ к закрытым разделам форума и ежедневным сборкам). А разработка, включая отладку на устройстве при наличии подписки ADC, бесплатна.
Единственный язык программирования, поддерживаемый Короной — Lua, которая, на мой взгляд, есть нечто среднее между JavaScript, ActionScript и Delphi (правда, команда “end” почему-то используется без “begin”). Одним словом — на любителя.
Впрочем, и сама платформа — на любителя. Делать на ней можно только игры, причем только двумерные. Приложение с нативным интерфейсом с помощью «Короны» сделать не получится.
Почитать туториал и посмотреть на примеры можно у них же на сайте — https://developer.anscamobile.com/resources/docs/.
Unity3D

«Юнити» — это и мощный кросс-платформенный движок, и кросс-платформенная среда разработки (интегрированная с MonoDevelop или VisualStudio под Windows), и конвертер всевозможных форматов ресурсов, и симулятор. А еще сервер ресурсов (если захотите сделать свой World of Warcraft). А в довесок — магазин ресурсов для независимых разработчиков.
Есть только одно “но”. «Юнити» — самое дорогое из решений. Бесплатно доступна только разработка под Windows и Mac (включая браузерные игры), для разработки под iOS придется отдать от $400 до $3000 (за свой сплеш-скрин, плагины, аудиофильтры и пиксельные шейдеры), Android обойдется столько же, а цена за полный кросс-платформенный комплект — $4500!!! Другими словами — платформа серьезная, и по меркам независимых разработчиков стоит изрядных денег. Получить качественный и многофункциональный инструментарий на халяву не получится – будущим «убийцам Angry Birds» стоит это учесть. Стоимость исходного кода, ученических лицензий и лицензии для разработки под консоли не разглашается. Для всех версий, конечно же, есть триал на 30 дней.
При разработке под мобильные платформы можно использовать два распространенных языка — JavaScript и C#, для настольных игр — еще и Boo, который весьма похож на Python.
Разобраться в «Юнити» непросто, а рассказать о ней во всех подробностях в рамках этой статьи — просто невозможно. Для тех, кто все-таки решится попробовать этого гиганта на зуб, советую начать с основ (https://unity3d.com/support/documentation/Manual/Unity%20Basics.html), поучить интерфейс, а потом взяться за мой любимый туториал по созданию трехмерного платформера — https://unity3d.com/support/resources/tutorials/3d-platform-game.
PhoneGap
Хоть создатели PhoneGap и не сознаются, но идея их детища явно навеяна Palm WebOS, само название которой говорит нам о том, что разработка под нее сродни созданию веб-приложений. Но, в отличие от WebOS, PhoneGap мне совершенно не нравится, и я бы не советовал его использовать. Почему? Потому что приложения на PhoneGap — это по сути полноэкранный браузер, внутри которого доступны некоторые «хвосты» наружу — к файловой системе, сети или геолокации. Лучше попробуйте Appcelerator.
Но раз платформа существует, значит, это кому-нибудь нужно. А если это кому-то нужно, значит, платформа достойна внимания. Как минимум интересен тот факт, что команда PhoneGap работает над облачным сервисом сборки и упаковки приложений — https://build.phonegap.com/, в том числе включающий поддержку iOS, а это значит что с помощью PhoneGap можно будет писать под iOS без Мака.
Appcelerator

«Аппселератор» я обнаружил случайно попробовав одно из приложений написанных с его помощью — Wunderlist. Привлекло меня в первую очередь то, что для разработки приложений используется лаконичный JavaScript, а сама платформа на 90% бесплатна. Платить придется только за расширенную техническую поддержку, модули для платежных систем, штрих-кодов и омнитуру.
Но самое удивительное в этой платформе то, что приложения построенные на ней не просто выглядят нативно и на Android, и на iOS, они и есть нативные: вы создаете кнопку средствами JavaScript, а рисует ее сама iOS.
Начать изучение «Аппселератора» стоит с классического «Getting Started» — https://wiki.appcelerator.org/display/guides/Getting+Started+with+Titanium, постепенно переходя к использованию документации по API — https://developer.appcelerator.com/apidoc/mobile.
MonoTouch и XnaTouch
https://monotouch.net/ и https://monogame.codeplex.com/
«Моно», как открытый порт Microsoft .NET разрабатывается с начала 2000-х. При активной поддержке Novel «Моно» начала особенно активно развиваться после открытия Microsoft исходного кода их фреймворка, а так же публикации стандартов языка C# под открытой лицензией. Это отличный проект.
Но с мобильными версиями — MonoTouch, Mono for Android — явно что-то не так. С первого взгляда — мощный и функциональный инструмент, но почему тогда на нем нет достойных приложений? Непонятно. Пока что я бы посоветовал использовать его только для портирования приложений с Windows или Windows Phone, а писать новое приложение на MonoTouch пока бы не стал.
BatteryTech
https://www.batterypoweredgames.com/batterytech
BatteryTech, как заявлено, — это высокопроизводительный фреймворк для iOS и Android, построенный на понятии игровых объектов и использующий C++. Я очень старался связаться с создателями этой платформы, что бы узнать, а потом и рассказать подробнее об этой платформе, но не получилось — почта молчит, а копирайты обновлялись последний раз аж 2 года назад. Хотя официальная страница проекта на Facebook время от времени подает признаки жизни.
Что еще?
Сообщество Qt портирует Lighthouse и Quick на Android и iOS. Appcelerator получает большой объем инвестиций, покупает платформу для разработки веб-приложений и планирует покорять Blackberry (бета уже доступна для платных подписчиков) и Windows Phone 7. А Unity3D идет на консоли третьего поколения.
Тщательно все взвесив, для себя я сделал выбор — Appcelerator для обычных приложений и Unity3D для игр. Именно об этих инструментах, а так же Objective-C и даже о проблемах, возникающих уже после выпуска своего приложения, я с радостью готов рассказывать в будущих заметках.
Кстати, вопросы и идеи для будущих статей в комментариях всячески приветствуются!
 
            
                                                
                            
        
     
                             
                             
                             
                         
                         
                         
       
       
       
       
      