Кросс-платформенная разработка под мобильные...
DESCRIPTION
Дмитрий Жестилевский, ЯндексЗакончил факультет экспериментальной и теоретической физики Московского инженерно-физического института в 2011 году. С 2006 года занимается разработкой приложений (игры, бизнес-приложения) под мобильные устройства на платформах J2ME, BREW, Windows Mobile, Android, iOS. В Яндексе с 2010 года, занимается разработкой архитектуры мобильных картографических сервисов. Область интересов: кросс-платформенная разработка под мобильные устройства, визуализация 3D.Тема докладаКросс-платформенная разработка под мобильные устройства.ТезисыРазработка приложений под embedded-устройства сильно фрагментирована из-за обилия OS (Android, iOS, WM, WP7, Symbian, Bada). Независимая разработка под каждую платформу в отдельности приводит к пропорциональному росту количества участников процесса разработки и объема поддерживаемого CodeBase. Внедрение общего кода, который будет работать на всех платформах за счет использования Platform Abstraction Layer с унифицированным интерфейсом, способно сократить эти издержки. В то же время остается возможность использовать платформенно-зависимые сущности, например UI, для придания приложению native look and feel. В докладе рассматривается процесс внедрения общих компонентов в мобильные приложения Яндекса на примере Панорам улиц, а также трудности, с которыми мы столкнулись во время разработки, и пути их решения.TRANSCRIPT
YaC, Москва, 19 сентября 2011 года
Старший разработчикЖестилевский Дмитрий
Кросс-платформенная разработка под мобильные устройства
Панорамы
2
Platform Abstraction Layer (PAL)
3
PAL
HTML/JavaScriptVirtual MachineNative C/C++
4
PAL – почему свой?
РасширяемостьСовместимость
5
Core
Windowing
Threading
Events
Networking
IO
+ Extensions6
Application Part
STLC++
POSIXExt API
3rd party High Level API
Android iOS Symbian etc…
App 1 App 2 App 3
7
Варианты общих компонентов
8
kdFopen(“/res/file.bin”)
Варианты общих компонентов
9
Варианты общих компонентов
sync sync
10
Варианты общих компонентов
Common View
InputRedraw
ActivityUIViewControllerQWidgetCAknView
11
12
Loop-in-application vs callbacks
13
Http Networking
OpenKODE specOpenKODE extExtended API
14
didFinish vs. onFinished
delegates vs. listeners
Apple vs. Android
15
16
Profit
Common
Android
iOS
Win32
0 100 200 300 400 500 600 700 800
700
25
23
2
Объем кода, кБ (Яндекс.Панорамы)
17
Profit
18
Ограничения
> 90% UI
19
Попробуйте сами!
20