Мобильные приложения: хочу все и сразу Портирование между модельными линейками, межплатформенное портирование, кроссплатформенные фреймворки
Мобильные платформы: множество их! BlackBerry OS Android OS iOS Windows Mobile Symbian Bada Palm WebOS J2ME Хочу, чтобы моё приложение работало на всех платформах и всех устройствах, которые когда-либо сущестовали, и на всех новых моделях, которые будут выпускаться! И бесплатно!
Портирование между разными устройствами одной платформы
iPhone – iPod – iPad iPhone 1 iPod: изменения не требуются вообще iPhone 1 iPad Логика портируется без изменений Дизайн требует переработки в соответствие с HIG для iPad и в связи с тем, что места на экране становится вчетверо больше Интерфейс требует переработки в соответствие с новым дизайном
Например: Портирование iPhone 1 iPad UISplitView vs. UINavigationController
Особые моменты По-прежнему остается проблема версий OS. На iPhone 2G/iPod 1G нет возможности запускать приложения для iOS 4.0 Между различными моделями существуют на первый взгляд незначительные различия, например: iPhone 3GS и 4 имеет автофокус и большее разрешение камеры iPhone 3GS и 4 имеют встроенный компас iPod 2G+ имеет встроенный динамик iPhone 3GS+ поддерживает возможность снимать видео iPad имеет возможность прямого обмена файлами между приложением и настольным компьютером iPhone 4 имеет вторую камеру на фронтальной панели iPhone 4 имеет дерьмовую антенну и у левшей проблемы со связью и так до бесконечности
Портирование по линейке Android-продуктов Логика остается без изменений Для различных моделей приходится изменять: Графику под размер экрана Графику и UI под тип клавиатуры (экранная/физическая) Графику и UI под ориентацию экрана, в которой клавиатура доступна
Портирование по линейке Android-продуктов
Портирование по линейке Android-продуктов Клавиатурный кошмар
Особые моменты Как обычно — версии операционки Разные устройства могут иметь серьезно разную производительность Устройства могут иметь камеру в в самых неожиданных местах и направленную на или от пользователя Существуют андроид-телефоны без тачскрина
Портирование внутри Blackberry-линеек Это сущий ад.
Портирование внутри Blackberry-линеек Большое количество устройств без тачскрина Для разных устройств лучше делать разные сборки, иначе они будут весить тонны Еще широко распространенная система версии 4.5 не поддерживает более половины очень удобных API, особенно касающихся интерфейса У Blackberry в принципе достаточно плохо с интерфейсом, и его приходится каждый раз писать почти с нуля, а для таких разных устройств придется делать повторно кучу дизайнерской работы
Ну вы только посмотрите на это И вот это – адресная книга!
Symbian, WinMobile, etc В принципе те же самые проблемы – версии операционки, разрешения, дизайн, клавиатуры, ориентация, и так далее
Межплатформенное портирование В любом случае полностью переписывается интерфейс Полностью переделывается все, связанное с API каждой конкретной платформы (работа с камерой, сетью, GPS, файловой системой, базами данных и так далее) В редких случаях можно оставить почти без изменений чистую математику и OpenGL-графику
Межплатформенное портирование: приятные особенности платформ Android-приложениям разрешено использовать не более 16Мб оперативной памяти iPhone-приложения не имеют доступа к sms, истории звонков, переписке, файловой системе Blackberry-приложения требуют написания интерфейса полностью с нуля (для многих стандартных компонентов реализована только логика, для остальных – ничего) BB и Android тяжелее в отладке – очень неповоротливые эмуляторы Windows Phone 7 SDK не предоставляет функционала для работы с БД
Портируемость между платформами Экономия на полной стоимости разработки второго приложения в применении к сферическому приложению в вакууме на 160 часов с дизайном iPhone Android BB Symbian WM j2me iPhone 5% 5% 10% 10% 5% Android 5% 25% 5% 5% 10% BB 5% 25% 5% 5% 30% Symbian 10% 5% 5% 30% 5% WM 10% 5% 5% 30% 5% j2me 5% 10% 30% 5% 5%
Фреймворки для написания кроссплатформенных приложений HTML5 web application HTML5 в нативной обертке PhoneGap MotherApp Big5 Rhodes Titanium (Appcelerator) AirPlay SDK
HTML + JS Поддержка дополнительных функций (камера, акселерометр, GPS, вибро, звук, адресная книга) Бесплатный
HTML + JS Поддержка дополнительных функций После написания отдаем приложение в MotherApp, и они сами делают из него бинарник для каждой платформы
Big5 HTML + JS Поддержка дополнительных функций Приложение хранится в сети, юзер скачивает особый браузер и в него вводит линк на приложение Opensource
Rhodes Язык свой, похож на ruby Поддержка дополнительных функций Open Source
Почему все вышеперечисленное лучше не использовать никогда? Если использовать один набор графики, то приложение будет либо стилизовано под одну платформу, либо на каждой платформе будет смотреться чужим Достаточно ресурсоемко – игр на таких фреймворках не поделаешь, предел – справочники, путеводители и счетчики калорий
Такие дела Теперь можно позадавать вопросы по портированию