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