Кросс-платформенная разработка под мобильные...
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
![Page 1: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/1.jpg)
YaC, Москва, 19 сентября 2011 года
Старший разработчикЖестилевский Дмитрий
Кросс-платформенная разработка под мобильные устройства
![Page 2: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/2.jpg)
Панорамы
2
![Page 3: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/3.jpg)
Platform Abstraction Layer (PAL)
3
![Page 4: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/4.jpg)
PAL
HTML/JavaScriptVirtual MachineNative C/C++
4
![Page 5: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/5.jpg)
PAL – почему свой?
РасширяемостьСовместимость
5
![Page 6: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/6.jpg)
Core
Windowing
Threading
Events
Networking
IO
+ Extensions6
![Page 7: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/7.jpg)
Application Part
STLC++
POSIXExt API
3rd party High Level API
Android iOS Symbian etc…
App 1 App 2 App 3
7
![Page 8: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/8.jpg)
Варианты общих компонентов
8
![Page 9: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/9.jpg)
kdFopen(“/res/file.bin”)
Варианты общих компонентов
9
![Page 10: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/10.jpg)
Варианты общих компонентов
sync sync
10
![Page 11: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/11.jpg)
Варианты общих компонентов
Common View
InputRedraw
ActivityUIViewControllerQWidgetCAknView
11
![Page 12: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/12.jpg)
12
![Page 13: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/13.jpg)
Loop-in-application vs callbacks
13
![Page 14: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/14.jpg)
Http Networking
OpenKODE specOpenKODE extExtended API
14
![Page 15: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/15.jpg)
didFinish vs. onFinished
delegates vs. listeners
Apple vs. Android
15
![Page 16: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/16.jpg)
16
![Page 17: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/17.jpg)
Profit
Common
Android
iOS
Win32
0 100 200 300 400 500 600 700 800
700
25
23
2
Объем кода, кБ (Яндекс.Панорамы)
17
![Page 18: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/18.jpg)
Profit
18
![Page 19: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/19.jpg)
Ограничения
> 90% UI
19
![Page 20: Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский, Яндекс](https://reader033.vdocuments.mx/reader033/viewer/2022061114/54621fa8af79597b0b8b715f/html5/thumbnails/20.jpg)
Попробуйте сами!
20