56
Разработка под Android Павел Криворучко, Lilium

{HSE Inc} Разработка под Android

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: {HSE Inc} Разработка под Android

Разработка под Android Павел Криворучко, Lilium

Page 2: {HSE Inc} Разработка под Android

Лучшее время – наступило. Android 1st

Page 3: {HSE Inc} Разработка под Android

Место Android на рынке: b2c • 87% продаваемых смартфонов – Android • Повсеместно, доля Android на рынке

смартфонов стала выше iOS • Это касается не только продаж, но и

фактического числа скачиваний

Page 4: {HSE Inc} Разработка под Android

Планшеты, b2c

• В 2013 продажи Android планшетов превысили продажи iPad, обгоняя прогнозы аналитиков

• Для US рынка отдельным важным игроком является Amazon

Page 5: {HSE Inc} Разработка под Android

b2b/Enterprise рынок

Источник: Citrix Mobility report, Q4 2012 (опубликован в марте 2013)

На волне роста популярности BYOD (Bring your own device), основной фокус для b2b специфичной разработки – планшеты. Несколько сфер: транспорт, здравоохранение, телекоммуникации – имеют перекос в пользу Android

Page 6: {HSE Inc} Разработка под Android

Фрагментация?

Page 7: {HSE Inc} Разработка под Android

Все не так плохо!

Page 8: {HSE Inc} Разработка под Android

Разработка: v 1.0

Телефон на 2.3, «фаблет» на 4.1, 10’ планшет на 4.0

Page 9: {HSE Inc} Разработка под Android

Разработка: повышение охвата Оптимизация под еще 2 класса устройств: • entry-level (LG P500, HTC Wildfire, Galaxy ACE и пр.) • 7’ планшеты как отдельный от фаблета тип устройства

Page 10: {HSE Inc} Разработка под Android

Инфраструктура Android: Google, Samsung, Amazon

Page 11: {HSE Inc} Разработка под Android

Google Play Services

Page 12: {HSE Inc} Разработка под Android

Настоящая платформа от Google

Android 2.2 и выше фактически объединены сервисным слоем, который обновляется принудительно, операторо-независим, и может делать с системой практически все, что угодно.

Page 13: {HSE Inc} Разработка под Android

Google Play: консоль разработчика

• За разовые $25 разработчик получает лучшую на сегодняшний день консоль управления приложениями

• Crash reports, сервисы статистики, альфа и бета тестирование – «из коробки»

• Минимальный набор средств разделения прав пользователей • Optimization Tips: их стоит прочесть • Ответы на комментарии пользователей

Page 14: {HSE Inc} Разработка под Android

Google Play: отзывы к приложениям Не стоит бояться плохих отзывов, но не стоит их игнорировать. Наличие фидбека от разработчика снижает число негативных публичных отзывов на десятки процентов.

Page 15: {HSE Inc} Разработка под Android

Google Cloud Messaging • Существенно больше возможностей, чем Push уведомления на iOS • Возможность прямого взаимодействия с конкретным устройством

по XMPP протоколу через облако Google • Размер сообщения – до 4 Кб! • Группировка send-to-sync сообщений (по 4 параметрам) • Ответ с технической информацией о результате доставки без

необходимости отдельного запроса

Page 16: {HSE Inc} Разработка под Android

Google Play Game Services • Первое хорошее решение после смерти OpenFeint • Работает с отдельным приложением и через Google+, со всеми

вытекающими положительными и отрицательными последствиями • Помимо типовых достижений и таблиц рекордов – сохранение

игровых данных в облаке и API для многопользовательских игр • iOS версия позволяет использовать как унифицированное

iOS+Android решение

Page 17: {HSE Inc} Разработка под Android

Google Maps • Широкие возможности для добавления overlay-ев • Кеширование для удобства работы оффлайн • Быстрая работа • Static Maps API и JavaScript API для простых сценариев работы с

картами • Нестабильно работающий геокодер • Квоты на запросы велики, но конечны. Для «тяжелых» сценариев

необходимо учитывать использование бизнес-версии (бесплатно для некоммерческих организаций)

Page 18: {HSE Inc} Разработка под Android

Google Play In-app billing • “Все платежи, получаемые Разработчиком за Продукты, которые

распространяются через Android Маркет, должны поступать через Партнера по обработке платежей.” Дополнительно, в последней версии соглашения сделан акцент на аналогичное требование в играх.

• До 48 часов на отмену платежа. Процент отмен в российском Google Play доходит до 80%.

• Подписки: автоматические, только месячные и годовые • One-time/Consumable и синхронизация покупок

Page 19: {HSE Inc} Разработка под Android

Samsung • Параллельная Google Play инфраструктура • Альтернативный модерируемый магазин с собственными решениями

для in-app покупок (consumable, non-consumable, подписки) • В качестве Push notification решения предлагается использовать GCM • Магазин объединен с магазином для Tizen и частично для Smart TV

Page 20: {HSE Inc} Разработка под Android

Amazon • Собственный магазин приложений – единственный на «родных»

устройствах, и доступный для установки на остальных • Модерация приложений • Собственное API платежей (ограниченный набор стран) • Собственный набор сервисов для игр • Собственный API для карт, максимально приближенный к аналогу от

Google (лицензировано решение от Nokia)

Page 21: {HSE Inc} Разработка под Android

Средства разработки

Page 22: {HSE Inc} Разработка под Android

Возможности • Android SDK/Java • Java + NDK • Unity[3D] • Xamarin • Web-based (PhoneGap/Cordova и аналоги) • C++-based (Cocos2D-x, Marmalade SDK) • Adobe AIR • Прочие

Page 23: {HSE Inc} Разработка под Android

Unity: плюсы • Развитый движок с долгой историей • Отсутствие «детских болезней» (проблем веса, производительности) • Работа движка тестируется на 300+ Android устройствах • Отзывчивая команда разработки, в том числе русскоговорящая • Для Unity Pro есть подписочная опция, что снимает требование в

$3000 на старте для advanced функционала • Потрясающая кроссплатформенность (PC, Mac, iOS, Anroid, WinPhone,

BB10, Web Player, консоли) • Хорошая инфраструктура плагинов для решения типовых задач

Page 24: {HSE Inc} Разработка под Android

Unity: минусы • Нет среды разработки под Linux • Ряд ограничений у бесплатной версии • Невозможно использовать «родные» компоненты Android, при

отсутствии собственных решений аналогичного уровня • Плохо приспособлена для работы с фоновыми процессами • Проблемы интеграции Google Maps при сложных сценариях • Тестирование вне стандартного эмулятора Android

Page 25: {HSE Inc} Разработка под Android

PhoneGap/Cordova • Развитие при поддержке Adobe • Open source, большое количество плагинов • HTML5, подстановка нативных компонентов

• HTML рендеринг заметен, несмотря на все попытки мимикрии под

нативное приложение • Заметно снижена производительность • Для сложных сценариев все равно требуется знание API платформы

Page 26: {HSE Inc} Разработка под Android

Adobe AIR • Пожалуй, самый быстрый путь сборки прототипа • Перенос существующих наработок под мобильные платформы • Исчезла необходимость отдельной установки AIR

• При разработке сложного приложения, форумы и багтрекер Adobe

становятся точкой паломничества • При попытке дать сопоставимую производительность теряются

преимущества по скорости разработки • Большой оверхед и время запуска

Page 27: {HSE Inc} Разработка под Android

Android NDK Использование имеет смысл при полном понимании его необходимости • Использование C++ наработок, дорогих в переписке? • Кроссплатформенное C++ ядро приложения? • Собственный рендеринг, без компонентной базы Android? • Адаптация под специфические аппаратные требования?

Page 28: {HSE Inc} Разработка под Android

Android Developer Tools • Eclipse + ADT

– Максимум возможностей, отстроенная инфраструктура – Исторически слабый UI редактор – Билдер по умолчанию: Ant

• Android Studio (на базе IntelliJ IDEA) – Все еще в статусе Early Preview – Существенное внимание работе с UI приложения – Высокая скорость развития – Билдер: Gradle

Page 29: {HSE Inc} Разработка под Android

Разработка: основы архитектуры

Page 30: {HSE Inc} Разработка под Android

Архитектура Android приложения

• Приложение – процесс или набор процессов, запущенный под собственным ID пользователя, с использованием ядра Linux + Dalvik

• Визуальная часть приложения – один или несколько «Activity» - в общем случае занимающих весь экран, с возможностью одновременного присутствия нескольких Activity на экране

• Фоновые процессы, которые могут поставлять данные нескольким приложениям – Services. При этом, сервис может быть принудительно остановлен пользователем или операционной системой

• Манифест – задает права приложения, состав и возможности доступа к Activities и сервисам

Page 31: {HSE Inc} Разработка под Android

Унификация и совместный доступ

• Broadcast Receivers – общая основа для получения сообщений различных типов для их обработки или передачи в другие части приложения

• Content Providers – унификация доступа к хранилищам данных – от баз данных до файлов

• Ключевым элементом «философии» Android является использование готовых элементов других приложений и предоставление аналогичных прав использования своих элементов для различных типов задач. Это означает, в том числе, что запрошенную задачу может выполнить не «родное» приложение системы, а стороннее

Page 32: {HSE Inc} Разработка под Android

Виджеты • Одна из ключевых возможностей Android, отсутствующая в

конкурирующих ОС • Ключевая проблема: необходимость тестирования на каждой из

альтернативных оболочек, минимум: TouchWiz (Samsung) и HTC Sense • Наличие у пользователя Android устройства не гарантирует

поддержку виджетов на нем • Нет прямой поддержки ввода текста (только с открытием pop-up

окна)

Page 33: {HSE Inc} Разработка под Android

Родные компоненты ОС • Ключевое отличие между 2.х и 4.х – появление в последней темы

Holo в светлом и темном исполнении, обязательной для наличия на всех устройствах. Ранее, приходилось пользоваться темой DeviceDefault, где, в принципе, может быть что угодно

• Несмотря на наличие нескольких проектов по портированию Holo на ранние версии, в целом, достаточным является использование Android Support Library для упрощения работы с компонентами – принудительный Holo-style на старых устройствах выглядит чужеродно

Page 34: {HSE Inc} Разработка под Android

Ключевые паттерны UI • Action Bar: появился в UI Guidelines при релизе Android 3.0, доступен

для 2.1 и выше через Support Library • Back vs Up: кнопка Back (аппаратная/экранная) – навигация по

истории, кнопка возврата сверху слева экрана – подъем вверх по иерархии

• Для малого числа разделов – вкладки, для большего – Navigation drawer

• Работа со списками: в 2.х – попап, в 4.х – появление панели редактирования списка вверху экрана

Page 35: {HSE Inc} Разработка под Android

Библиотеки: компоненты • Android Support Library • ActionBar-Sherlock • Android-PullToRefresh • ActionBar-PullToRefresh

Page 36: {HSE Inc} Разработка под Android

Библиотеки: аналитика • Flurry • Omniture • Google Analytics

Page 37: {HSE Inc} Разработка под Android

Библиотеки: Social • Facebook SDK (авторизация через Facebook приложение, работа с API) • Foursquare SDK (удобная авторизация) • Google+ SDK (авторизация, шэринг) • Для VK есть готовые решения, но в общем случае проще

самостоятельно реализовать работу с нужными API

Page 38: {HSE Inc} Разработка под Android

Библиотеки: Push уведомления • PushWhoosh • Urban Airship

Использование сервиса для рассылки уведомлений с одной стороны – упростит работу с уведомлениями и снимет нагрузку с собственного бэкенда, с другой – несмотря на высокие квоты – рассылки не бесплатны, а также ограничены в возможностях относительно «чистого» GCM.

Page 39: {HSE Inc} Разработка под Android

Рекламные сети, маркетинг • LeadBolt • TapJoy (+API для виртуальной валюты) • ChartBoost • Inner-active • AdMob

Page 40: {HSE Inc} Разработка под Android

Вендор-специфичные SDK • Samsung S Pen SDK • Samsung Multi Window • Meizu: SmartBar • SDK от Qualcomm (AR, Face recognition,

touch-free)

Page 41: {HSE Inc} Разработка под Android

Библиотеки: Crash reporting • ACRA • Testflight • BugSense • Crashlytics • Функционал Crash reporting в Google Analytics SDK

ACRA оптимальна практически во всех случаях: open source, собственное решение для бэкенда, интеграция с множеством сторонних решений, при этом сочетание ACRA+Testflight дает максимальную полноту информации.

Page 42: {HSE Inc} Разработка под Android

Тестирование

Page 43: {HSE Inc} Разработка под Android

Базовые средства • Monkeyrunner : если 10 000 обезьян посадить тестировать

приложение, хотя бы одна его сломает • Любой log viewer на устройстве, например aLogCat • Testflight и/или ACRA для crash reports и удаленного логирования

Для приложений без зависимостей от камеры/сенсоров отлично помогает Samsung Remote Test Lab: десяток живых Android устройств на полчаса/час

Page 44: {HSE Inc} Разработка под Android

На что обратить внимание • Что случится, если в ходе сессии исчезло Интернет-соединение? • Что случится, если некуда записать данные? • Что случится, если данные были записаны на SD карту и она вынута? • Что случится, если уйти с экрана в процессе загрузки данных? • Что случится, если формат данных в ответе сервера некорректен?

Page 45: {HSE Inc} Разработка под Android

Больше тестов! • Мониторинг потребления батареи • Мониторинг стабильности при отключении фоновых процессов • Мониторинг отсутствия утечек памяти при скачивании данных в

фоновом режиме

Page 46: {HSE Inc} Разработка под Android

Fun

Page 47: {HSE Inc} Разработка под Android

Сенсоры

Калибровка всегда должна быть доступна, но даже она не гарантирует ничего

Page 48: {HSE Inc} Разработка под Android

Камера • Samsung, 2.x – требуется интернет при первом использовании • 4.0.2, 4.0.3, 4.0.4 – поломанные API работы со вспышкой, приводящие

к падению приложения. Разные. • Разные размеры изображения по умолчанию • Разные значения зума по умолчанию

• Лучший способ научиться работать с камерой – декомпилировать и

прошерстить исходники Google Goggles

Page 49: {HSE Inc} Разработка под Android

Разное • У актуальной в данный момент версии Яндекс.Карт есть

документированный Samsung-специфичный баг на стыке с нативным кодом

• В 2.3.х дефолтные текстовые поля от HTC при применении встроенных в приложение шрифтов вели себя непредсказуемо

• Выставление для сайта Viewport воспринимается как пожелание, а не как директива

• Лимит оперативной памяти на процесс зависит от производителя: операции с крупными изображениями помогают его ощутить во всей красе

Page 50: {HSE Inc} Разработка под Android

Android: За пределами смартфонов и планшетов

Page 51: {HSE Inc} Разработка под Android

Blackberry 10 • 4.2 миллиона проданных устройств • 2.3 эмулятор в 10.1, 4.2.2 в 10.2 • При отсутствии NDK и Google сервисов

приложение практически не требует адаптации

• Push и платежные сервисы от платформы • Развертывание только в

пользовательском профиле (не корпоративном)

• Дружественность к разработчикам

Page 52: {HSE Inc} Разработка под Android

OYUA • Android консоль на типовом

железе (Tegra 3) с наибольшей финансовой поддержкой

• Обьявлен выход на европейский рынок

• 27% хоть раз платили за контент • Цифры скачиваний и

заработков не впечатляют

Page 53: {HSE Inc} Разработка под Android

Google TV • Канал распространения: Google

Play • Нет поддержки тачскрина • Нет поддержки NDK • Существует в России довольно

условно, лидирующий поставщик Smart TV – Samsung – не использует это решение

Page 54: {HSE Inc} Разработка под Android

Google Glass • Официальный SDK еще не

вышел • Фактически отсутствует на

рынке

Page 55: {HSE Inc} Разработка под Android
Page 56: {HSE Inc} Разработка под Android

Q & A Материалы и ссылки http://lilium.me/hse-android/

Контакты FB: pavel.krivoruchko Skype: dl1t_f E-mail: [email protected]