SlideShare a Scribd company logo
ОС Android и специфика
мобильной разработки




    Киреев Артем, Codemasters International
                   akireev@codemastersintl.com
                       www.codemastersintl.com
План

• Что такое Android?
• Основные компоненты приложения и
 их взаимодействие
• Опыт разработки приложения
 TulaDev: веб-сервисы, GCM (C2DM).
OS Android
• ОС для смартфонов и встраиваемых
  систем
• Разработка началась в 2003
• Первый проданный телефон HTC Dream
  2008
• Open Source
• ARM, MIPS, x86
OS Android
Что нужно чтобы начать
    разрабатывать под Android?
• Любая ОС (Windows, Linux, OS/X)
• JDK (Java Development Kit)
• Android SDK:
 • Emulator
 • ADB (Android Debug Bridge)
• Eclipse with Android ADT plugin (or
  Jetbrains IDEA, ...)
Версии Android
Размеры экранов
Размер         Плотность




         Самый популярный размер:
           470dip x 320 dip =
              WVGA800
              (480x800)
Как работать с
множеством
экранов?
ldpi: 1 dip = 0,75px
mdpi: 1 dip = 1px
hdpi: 1 dip = 2px
       1 dip = 1,5px
xhdpi:


px - пиксели
in, mm, pt - дюймы, миллиметры, точки (1/72
дюйма)
dip - Абстрактные пиксели, зависящие от
плотности экрана
sp - Похожи на dip, но в данном случае
учитывается размер шрифта, который установил
пользователь.
Из чего состоит
 приложение?
    Manifest
    -имя JAVA пакета
    -разрешения для
    приложения
    - Activity, Services..
    -Связанные библиотеки
    -Минимальный уровень API
    Классы (src)

    Ресурсы (res)
Верстка UI
                           <?xml version="1.0" encoding="utf-8"?>
                           <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                         android:layout_width="fill_parent"
                                         android:layout_height="fill_parent"
                                         android:orientation="vertical" >
                               <TextView android:id="@+id/text"
                                         android:layout_width="wrap_content"
                                         android:layout_height="wrap_content"
                                         android:text="I am a TextView" />
                               <Button android:id="@+id/button"
                                       android:layout_width="wrap_content"
                                       android:layout_height="wrap_content"
                                       android:text="I am a Button" />
                           </LinearLayout>




                Linear Layout Relative Layout
                                                                     Позволяет определить
 Элементы внутри                                                        расположение
расположены в ряд                                                   элементов относительно
  или в столбец                                                      друг друга (Элемент A
                                                                     находится слева от B)
Изолированность
  приложения Android
                   Sandbox
• Каждое приложение имеет свой Linux
  user Id
• Для каждого приложения запускается
  своя Dalvik VM
• Любой компонент приложения, будет
  запускаться в своем Linux процессе
Рабочие лошадки
               приложения
    Activity                                       Service




•   малосвязанные                         •   работают в фоне (backgroud)

•   не подходят для длительных операций   •   подходят для длительных операций
Activity   Service
Взаимодействие
    Intent
Component name
Action
Data
Category
Extras
Flags




•                     * можем создать свой Action
    Explicit intent: startActivity, startService,
    passData
•   Implicit intent: internet on/off, screen off, battery
Intent filters
Служат для фильтрации implicit intents
Explicit and Implicit
                  examples                                         broadcast intent (implicit):
                    DownloadImageService                           component: null
                                                                   action: com.mycorporation.myapp.complete




BroadcastReceiver                                                            BroadcastReceiver
                          intent (explicit):
MainListActivity          component:DownloadImageService                     DetailActivity
                          action: com.mycorporation.myapp,download
                          data: http://clipart.com/awesome.jpg




                     intent (explicit): component:DetailActivity
Разработка приложения
        TulaDev для Android
Use cases:
•   Видеть информацию о следующей встрече
•   Видеть архив прошедших встреч
•   Получать новости и анонсы
•   Голосовать за будущие темы
•   Отмечаться на встрече (розыгрыш призов)
•   Смотреть слайды оффлайн
https://play.google.com/store/apps/details?id=com.cod
                    emasters.tuladev
Разработка приложения
  TulaDev для Android
Вопрос 1. Откуда брать данные для
          отображения?
Откуда брать данные.
        Схема 1. Activity шлет запрос


ListActivity




                                 REST API
Откуда брать данные.
         Схема 2. Activity шлет запрос и
              сохраняет в базе

                                 REST API


ListActivity




                        SQLite
Откуда брать данные.
                 Схема 3 Используем сервис
                           REST API
                                3 http GET /events

BroadcastReceiver
                                  DownloadService

  ListActivity


                                   4 storeEventsInDb()


                              SQLite
Разработка приложения
  TulaDev для Android
 Вопрос 2. Как часто обновлять
              данные?
При каждом запуске приложения


При смене табов


По расписанию

По требованию пользователя

Когда данные обновятся на сервере
Разработка приложения
    TulaDev для Android
        По требованию пользователя




       Когда данные обновятся на сервере


Http pooling   web sockets
Google Cloud Messaging



GCM анонсирован 26 июня 2012 года, пришел на
замену C2DM
Увеличивает время жизни батареи (все приложения
используют один общий канал)
Сервер обрабатывает запрос на рассылку за 4.7
миллисекунды его обновления данных и для поста
Мы используем
новостей
Как работает GCM
         Обновление данных
                     Content-
                     Type:application/jsonAuthorizatio
                     n:key=AIzaSyB-1uEai2...{
                     “registration_ids” :
                     [“APA91bHun4MxP5eg..., ...]
                       “collapse_key”: “data_update”
                     “data” : { “Action” : “updateData”}}




Server
Как работает GCM
    Уведомления (новости)
                   Content-
                   Type:application/jsonAuthorizatio
                   n:key=AIzaSyB-1uEai2...{
                   “registration_ids” :
                   [“APA91bHun4MxP5eg..., ...]
                     “data” :
                   { “Action” : “updateData”,
                   “Data”: “Не проспите завтра
                   наш доклад об Android ”}}




Server
Как работает GCM
Features. Reliability
Как работает GCM
   Features. Time To Live


Сообщениям можно задать время жизни от 0
секунд до 4 недель


Сообщения с TTL = 0, не хранятся в GCM


По умолчанию TTL = 4 недели
Как работает GCM
         Features. Message
             Multicasting

Запрос


                        до1000


            Ответ
Как работает GCM
    Features. Collapse Key
Запросы




                       только 1 сообщение
Как работает GCM
        Features. Throttling




Нотификация об изменении
    данных на сервере
                           DoS

                           Server
Google Play
Регистрация в качестве разработчика = 25$

Время от подачи заявки до появления в Google Play ~
4h



        No Problem with Google Play
Итоги
• Android - OpenSource операционная
  система с Dalvik VM
• Приложение: Манифест + ресурсы +
  Activity + Service
• GCM (Google Cloud Messaging) -
  канал доставки данных.
• Google Play - 25$ and no problem
Спасибо за
 внимание

Вопросы?

More Related Content

PDF
Лекция 1. Введение в Android.
PDF
JEE Conf: Архитектура Android приложений: полезные и вредные советы
PPTX
Приступаем к разработке Android приложений
PDF
Публикация Android-приложений
PDF
Plugin development for intelli j platform
PPT
Свой проект на drupal.org от идеи до первого релиза.
PPT
Свой проект на Drupal.org от идеи до первого релиза
PPTX
Git for you
Лекция 1. Введение в Android.
JEE Conf: Архитектура Android приложений: полезные и вредные советы
Приступаем к разработке Android приложений
Публикация Android-приложений
Plugin development for intelli j platform
Свой проект на drupal.org от идеи до первого релиза.
Свой проект на Drupal.org от идеи до первого релиза
Git for you

What's hot (12)

PDF
Среда разработки Eclipse by Cheburek
PPT
Komelin drupalconf report_komelin_v2
PPTX
Gradle. Новый уровень автоматизации для Android
PPTX
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
PPT
Инструменты разработки ПО в *nix
PPT
Lecture 11 1
PPT
Lecture 11 1
PPTX
Net framework
PDF
Модульное тестирование и TDD в .NET
PDF
DevOps guide for awesome quality assurance
PDF
Эволюция управления зависимостями в коде
PDF
Android - 05 - Android basics
Среда разработки Eclipse by Cheburek
Komelin drupalconf report_komelin_v2
Gradle. Новый уровень автоматизации для Android
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Инструменты разработки ПО в *nix
Lecture 11 1
Lecture 11 1
Net framework
Модульное тестирование и TDD в .NET
DevOps guide for awesome quality assurance
Эволюция управления зависимостями в коде
Android - 05 - Android basics
Ad

Viewers also liked (20)

PDF
Лекция 2. Activity.
PDF
Лекция Android. Хранение данных
PDF
Fragments, ActionBar, Drawer
PDF
{HSE Inc} Разработка под Android
PDF
Разработка приложений для android
PPT
Андроид для чайников
PPTX
Создание графического интерфейса пользователя мобильных Android приложений (ч...
PPTX
Основы "мобильной" разработки на примере платформы iOs (iPhone)
PPTX
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
PPTX
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
PPTX
Thinking in parallel ab tuladev
PPTX
Sql azure federations
PPTX
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
PPTX
Введение в Knockout
PPTX
RESPONSIVE WEB DESIGN
PPTX
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
PPTX
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
PPTX
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
PPT
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
PPTX
Unit tests
Лекция 2. Activity.
Лекция Android. Хранение данных
Fragments, ActionBar, Drawer
{HSE Inc} Разработка под Android
Разработка приложений для android
Андроид для чайников
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Основы "мобильной" разработки на примере платформы iOs (iPhone)
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
Thinking in parallel ab tuladev
Sql azure federations
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
Введение в Knockout
RESPONSIVE WEB DESIGN
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
Unit tests
Ad

Similar to Лекция Android (20)

PDF
Android Development Course in HSE lecture #1
PPT
Hivext 04.2010
PPT
Hivext – облачная платформа для быстрой разработки интернет приложений
PPTX
Bada
PDF
Android: Как создать свое первое приложение?
PDF
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
PPTX
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
PPT
Лекция 4
PPTX
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
PPTX
Андрей Завадский "Бессерверная архитектура"
PDF
Экскурс в мир WEB разработки
PPTX
белогорцев глеб белогорцев
PPTX
Антон Валюх - Использование паттерна Mvvm в android
PPT
Сервлеты
PDF
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
ODP
Presentation JavaME
PDF
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
PDF
C# Web. Занятие 11.
PPT
Вебинар "Оптимизация производительности мобильных веб-приложений"
PPTX
доклад на вмк 15.10.2015
Android Development Course in HSE lecture #1
Hivext 04.2010
Hivext – облачная платформа для быстрой разработки интернет приложений
Bada
Android: Как создать свое первое приложение?
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Лекция 4
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Андрей Завадский "Бессерверная архитектура"
Экскурс в мир WEB разработки
белогорцев глеб белогорцев
Антон Валюх - Использование паттерна Mvvm в android
Сервлеты
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Presentation JavaME
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
C# Web. Занятие 11.
Вебинар "Оптимизация производительности мобильных веб-приложений"
доклад на вмк 15.10.2015

More from Pavel Tsukanov (17)

PPTX
Автоматизированное тестирование UI на C# + Selenium WebDriver
PPTX
Domain Driven Design
PPTX
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
PPTX
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
PPTX
СОЗДАЙ РОБОТА С НУЛЯ
PPT
ВВЕДЕНИЕ В NODE.JS
PPTX
АНИМАЦИЯ В FLASH И HTML5
PPT
ХАКЕРЫ И АНТИХАКЕРЫ
PPTX
ЗАРАБОТОК В ИНТЕРНЕТЕ.
PPTX
Ruby - или зачем мне еще один язык программирования?
PPTX
Реализация REST и SOAP сервисов с помощью WCF
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PPTX
Как писать красивый код или основы SOLID
PPTX
Статический анализ кода
PPTX
PaaS и SaaS
PPTX
TDD (Test-driven Development) как стиль разработки.
PPTX
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Автоматизированное тестирование UI на C# + Selenium WebDriver
Domain Driven Design
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
СОЗДАЙ РОБОТА С НУЛЯ
ВВЕДЕНИЕ В NODE.JS
АНИМАЦИЯ В FLASH И HTML5
ХАКЕРЫ И АНТИХАКЕРЫ
ЗАРАБОТОК В ИНТЕРНЕТЕ.
Ruby - или зачем мне еще один язык программирования?
Реализация REST и SOAP сервисов с помощью WCF
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Как писать красивый код или основы SOLID
Статический анализ кода
PaaS и SaaS
TDD (Test-driven Development) как стиль разработки.
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.

Лекция Android

  • 1. ОС Android и специфика мобильной разработки Киреев Артем, Codemasters International akireev@codemastersintl.com www.codemastersintl.com
  • 2. План • Что такое Android? • Основные компоненты приложения и их взаимодействие • Опыт разработки приложения TulaDev: веб-сервисы, GCM (C2DM).
  • 3. OS Android • ОС для смартфонов и встраиваемых систем • Разработка началась в 2003 • Первый проданный телефон HTC Dream 2008 • Open Source • ARM, MIPS, x86
  • 5. Что нужно чтобы начать разрабатывать под Android? • Любая ОС (Windows, Linux, OS/X) • JDK (Java Development Kit) • Android SDK: • Emulator • ADB (Android Debug Bridge) • Eclipse with Android ADT plugin (or Jetbrains IDEA, ...)
  • 7. Размеры экранов Размер Плотность Самый популярный размер: 470dip x 320 dip = WVGA800 (480x800)
  • 8. Как работать с множеством экранов? ldpi: 1 dip = 0,75px mdpi: 1 dip = 1px hdpi: 1 dip = 2px 1 dip = 1,5px xhdpi: px - пиксели in, mm, pt - дюймы, миллиметры, точки (1/72 дюйма) dip - Абстрактные пиксели, зависящие от плотности экрана sp - Похожи на dip, но в данном случае учитывается размер шрифта, который установил пользователь.
  • 9. Из чего состоит приложение? Manifest -имя JAVA пакета -разрешения для приложения - Activity, Services.. -Связанные библиотеки -Минимальный уровень API Классы (src) Ресурсы (res)
  • 10. Верстка UI <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I am a Button" /> </LinearLayout> Linear Layout Relative Layout Позволяет определить Элементы внутри расположение расположены в ряд элементов относительно или в столбец друг друга (Элемент A находится слева от B)
  • 11. Изолированность приложения Android Sandbox • Каждое приложение имеет свой Linux user Id • Для каждого приложения запускается своя Dalvik VM • Любой компонент приложения, будет запускаться в своем Linux процессе
  • 12. Рабочие лошадки приложения Activity Service • малосвязанные • работают в фоне (backgroud) • не подходят для длительных операций • подходят для длительных операций
  • 13. Activity Service
  • 14. Взаимодействие Intent Component name Action Data Category Extras Flags • * можем создать свой Action Explicit intent: startActivity, startService, passData • Implicit intent: internet on/off, screen off, battery
  • 15. Intent filters Служат для фильтрации implicit intents
  • 16. Explicit and Implicit examples broadcast intent (implicit): DownloadImageService component: null action: com.mycorporation.myapp.complete BroadcastReceiver BroadcastReceiver intent (explicit): MainListActivity component:DownloadImageService DetailActivity action: com.mycorporation.myapp,download data: http://clipart.com/awesome.jpg intent (explicit): component:DetailActivity
  • 17. Разработка приложения TulaDev для Android Use cases: • Видеть информацию о следующей встрече • Видеть архив прошедших встреч • Получать новости и анонсы • Голосовать за будущие темы • Отмечаться на встрече (розыгрыш призов) • Смотреть слайды оффлайн
  • 19. Разработка приложения TulaDev для Android Вопрос 1. Откуда брать данные для отображения?
  • 20. Откуда брать данные. Схема 1. Activity шлет запрос ListActivity REST API
  • 21. Откуда брать данные. Схема 2. Activity шлет запрос и сохраняет в базе REST API ListActivity SQLite
  • 22. Откуда брать данные. Схема 3 Используем сервис REST API 3 http GET /events BroadcastReceiver DownloadService ListActivity 4 storeEventsInDb() SQLite
  • 23. Разработка приложения TulaDev для Android Вопрос 2. Как часто обновлять данные? При каждом запуске приложения При смене табов По расписанию По требованию пользователя Когда данные обновятся на сервере
  • 24. Разработка приложения TulaDev для Android По требованию пользователя Когда данные обновятся на сервере Http pooling web sockets
  • 25. Google Cloud Messaging GCM анонсирован 26 июня 2012 года, пришел на замену C2DM Увеличивает время жизни батареи (все приложения используют один общий канал) Сервер обрабатывает запрос на рассылку за 4.7 миллисекунды его обновления данных и для поста Мы используем новостей
  • 26. Как работает GCM Обновление данных Content- Type:application/jsonAuthorizatio n:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “collapse_key”: “data_update” “data” : { “Action” : “updateData”}} Server
  • 27. Как работает GCM Уведомления (новости) Content- Type:application/jsonAuthorizatio n:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “data” : { “Action” : “updateData”, “Data”: “Не проспите завтра наш доклад об Android ”}} Server
  • 29. Как работает GCM Features. Time To Live Сообщениям можно задать время жизни от 0 секунд до 4 недель Сообщения с TTL = 0, не хранятся в GCM По умолчанию TTL = 4 недели
  • 30. Как работает GCM Features. Message Multicasting Запрос до1000 Ответ
  • 31. Как работает GCM Features. Collapse Key Запросы только 1 сообщение
  • 32. Как работает GCM Features. Throttling Нотификация об изменении данных на сервере DoS Server
  • 33. Google Play Регистрация в качестве разработчика = 25$ Время от подачи заявки до появления в Google Play ~ 4h No Problem with Google Play
  • 34. Итоги • Android - OpenSource операционная система с Dalvik VM • Приложение: Манифест + ресурсы + Activity + Service • GCM (Google Cloud Messaging) - канал доставки данных. • Google Play - 25$ and no problem