tdsr 2014: porting zvooq app to tizen
DESCRIPTION
Презентацию делали два человека: Davide Livraghi, PM at Zvooq и Андрей Татаринов, CTO at Zvooq. Часть на английском - Давиде.TRANSCRIPT
ZVOOQ ДЛЯ TIZEN
Dream Industries
We create technology that empowers people to spread knowledge and culture
Our products are Zvooq, Bookmate, Exchang.es, Theory & Practice, Third Place and Telegraph
About Zvooq
An amazing music experience shaped by connections to friends, artists and labels
Zvooq’s innovation is driven by mobile.We currently have a web service and three
mobile apps for iOS and Android
Zvooq App
• Launched in June 2014 for iOS and Android
• More than 220,000 installs
• Reached number 2 in Russian AppStore (number 1 in music)
Zvooq app, functionalities
• Unlimited access to the whole Zvooq catalogue (more than 15 millions of songs)
• Music search (manual and by genre)
• Editorial content (releases and playlists)
• User collection
• Create your own playlists
Zvooq для Tizen
• Задача: портировать существующее приложение iOS/Android• ~Два человеко-года разработки
• Засады• 2 месяца на портирование• Управление:
• Нет внутренних ресурсов• Аутсорс
• Технологии:• Нет опыта работы с Tizen
• Поехали!
Управление
• Отдельная история• Нашли подрядчиков, у которого “есть опыт работы” с
Tizen• Потом оказалось, что опыта нет :)
• Модель аутстаф:• Ресурсы с их стороны• Менеджмент наш
• Scrum
Техническое решение
• Сложно принять решение, не достаточно информации и экспертизы
• Варианты:• Native, C++• Hybrid, HTML + C++• Pure HTML
Native, C++
• Долго• Дорого• Увеличенные технические риски
• Легко получить нестабильное приложение
Hybrid, HTML + C++
• Предпочтительное решение, основанное на презентациях вроде “TDC2013: Native-Hybrid Tizen Apps Development Technique”
• Ключевая функциональность в C++• Проигрывание треков• Скачивание
• Интерфейс на HTML
Pure HTML
• Всё на JS/HTML• Изначально не были уверены, что это возможно• Риски (все “странные” операции):
• Скачивание и докачка• Проигрывание в фоне (переходы между треками)• Аппаратная интеграция• etc
R&D
• Изначальная задача: изучить гибридный подход• Выяснилось, что все можно сделать на HTML
• Скачивание через Tizen-расширения• Download API• Filesystem API
• Проигрывание через <audio/> тег• Даже в фоне!• Даже колбеки в фоне! (переход на следующий трек)
• Делаем чистый HTML, экономим ресурсы
Разработка с HTML
• Чистый HTML возможен• Хорошие новости, можем больше сфокусироваться на
интерфейсах• У команды хорошие знания с HTML• У нас есть внутренняя экспертиза для контроля (в
отличие от C++)• Технологии:
• jQuery• Angular• ionic
Разработка
• Без происшествий• Достаточно близко к изначальному плану
Нюансы
• HTML/JS - технология со встроенными проблемами• Вычисления в одном потоке• Трудно создать приложение, а не набор
перезагружающихся страниц (возможно UI-библиотека от Tizen упростила бы ситуацию)
• Интеграция с внешней OAuth авторизацией (FB/VK)• Нельзя отменить процесс авторизации• Не работает кнопка “назад”
• Непредсказуемый зум встроенного браузера, надо специально защищаться
• И что нибудь, что мы узнаем от пользователей
HTML и один поток
• Все вычисления в том же потоке что и UI• Неаккуратно написанное приложение ТОРМОЗИТ
СИЛЬНО• Аккуратно написанное приложение иногда
подтормаживает• Нет вычислений в фоне
• Совсем! • Нельзя делать медленные вычисления
• Совсем!• 100ms уже медленно• Например: нельзя пересортировать большой список
• Проблему нельзя решить в чистом HTML-приложении
HTML и один поток, решения
• Общий подход: унести все вычисления из JS в другую систему
• Не иметь логики на клиенте, сервер с сильной поддержкой приложения• Возвращать данные готовые для рендеринга• HTTP-запросы не задерживают UI
• Гибридное приложение• То же что и выше, но сервер локальный• Вся подготовка данных в C + +• Отрисовка на HTML
Выводы
• Tizen подходит для быстрой разработки• HTML подходит до некоторого предела
• Ошибка делать чистое HTML приложение• Мигрируем на гибридное приложение с “движком”
на C + +
Вопросы?
Thanks!Andrey Tatarinov <[email protected]>Davide Livraghi <[email protected]>