Архітектура Android
     (галопом)
План
• Загальна архітектура Android платформи
• Віртуальна машина Dalvik
• Способи програмування для Android
1. Архітектура
Архітектура, екстер’єр

              • Процесори ARM (RISC+)

              • Маленька пам’ять

              • Парочка векторних
              процесорів для апаратної
              підтримки OpenGL
              (це вже здогад)

              • Фарш: GSM, Bluetooth,
              3G, WiFi, камера, GPS,
              компас, акселерометр
Архітектура, інтер'єр

             • Ядро Linux

             • Віртуальна машина

             • Набір системних сервісів
Малюнок, що вже намозолив очі
                          Стандартні апи




                          Системні сервіси


                          це ми обговоримо

                          Нативні бібліотеки




                          ОС та драйвери
Основні компоненти: активності
             Прецедент


                                                                     GUI
Користувач
                         Вибрати зі списку...




                                            Activity




                                                …
                     ListActivity                      TabActivity
Основні компоненти: задачі

• Стек активностей
• Одна задача на передньому плані, усі інші у
  фоні
• Задача може включати в себе активності від
  абсолютно різних розробників
• Немає єдиної точки входу у програму -
  функції main()
Компонентів багато…
• Сервіси
• Одержувачі broadcast повідомлень
• Постачальники даних


                                      SQL
                                      XML
                                     Binary
2. Віртуальна машина
Нащо Андроїду VM та Java?
Особливості Dalvik VM
        0000: const/4 v0, #int 7 // #7
        0001: new-array v0, v0, int[]
• Багато машин при малій пам'яті, немає
        0003: fill-array-data v0, 000a
        0006: sput-object v0,
  свопу Example2.S33KR1T_1NF0RM4T10N:int[]
        0008: return-void
• Регістрова, а не стекова
        0009: nop // spacer
        000a: array-data // for fill-array-data @ 0003
  –   зменшення кількості інструкцій
        0: 1315272293 // #4e657665
        1: 1914726255 // #7220676f
  –   зменшення кількості звернень до пам'яті
        2: 1852727584 // #6e6e6120
        3: 1734964837 // #67697665
• Відповідно, інший байт-код
        4: 544829301 // #20796f75
        5: 544567355 // #2075703b
        6: 544105846 // #206e6576
        7: 1701978215 // #65722067
3. Як можна програмувати
Java -> .dex



SDK   +
C/C++
• Нативний код, звісно найшвидший
• Підтримка JNI
• NDK – підтримується визначений набір
  бібліотек
• Відсутність механізму створення абсолютно
  нативних додатків
WebKit
• HTML5 + JavaScript + AJAX
• За допомогою <canvas> можна малювати
• Дозволяється виконувати задачі за межами
  основного потоку
Корисні ресурси
•   Пам’ять:
    http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
    http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/
•   Продуктивність:
    http://developer.android.com/guide/practices/design/performance.html
•   UI дизайн:
    http://developer.android.com/guide/practices/ui_guidelines/index.html
•   Як економити заряд батареї
    http://dl.google.com/io/2009/pres/W_0300_CodingforLife-BatteryLifeThatIs.pdf
•   Медіа
    http://dl.google.com/io/2009/pres/Mastering_the_Android_Media_Framework.pdf
Контакти

Роман Мазур
mazur.roman@gmail.com




                         http://stanfy.com.ua

Android Platform Architecture

  • 1.
  • 2.
    План • Загальна архітектураAndroid платформи • Віртуальна машина Dalvik • Способи програмування для Android
  • 3.
  • 4.
    Архітектура, екстер’єр • Процесори ARM (RISC+) • Маленька пам’ять • Парочка векторних процесорів для апаратної підтримки OpenGL (це вже здогад) • Фарш: GSM, Bluetooth, 3G, WiFi, камера, GPS, компас, акселерометр
  • 5.
    Архітектура, інтер'єр • Ядро Linux • Віртуальна машина • Набір системних сервісів
  • 6.
    Малюнок, що вженамозолив очі Стандартні апи Системні сервіси це ми обговоримо Нативні бібліотеки ОС та драйвери
  • 7.
    Основні компоненти: активності Прецедент GUI Користувач Вибрати зі списку... Activity … ListActivity TabActivity
  • 8.
    Основні компоненти: задачі •Стек активностей • Одна задача на передньому плані, усі інші у фоні • Задача може включати в себе активності від абсолютно різних розробників • Немає єдиної точки входу у програму - функції main()
  • 9.
    Компонентів багато… • Сервіси •Одержувачі broadcast повідомлень • Постачальники даних SQL XML Binary
  • 10.
  • 11.
  • 12.
    Особливості Dalvik VM 0000: const/4 v0, #int 7 // #7 0001: new-array v0, v0, int[] • Багато машин при малій пам'яті, немає 0003: fill-array-data v0, 000a 0006: sput-object v0, свопу Example2.S33KR1T_1NF0RM4T10N:int[] 0008: return-void • Регістрова, а не стекова 0009: nop // spacer 000a: array-data // for fill-array-data @ 0003 – зменшення кількості інструкцій 0: 1315272293 // #4e657665 1: 1914726255 // #7220676f – зменшення кількості звернень до пам'яті 2: 1852727584 // #6e6e6120 3: 1734964837 // #67697665 • Відповідно, інший байт-код 4: 544829301 // #20796f75 5: 544567355 // #2075703b 6: 544105846 // #206e6576 7: 1701978215 // #65722067
  • 13.
    3. Як можнапрограмувати
  • 14.
  • 15.
    C/C++ • Нативний код,звісно найшвидший • Підтримка JNI • NDK – підтримується визначений набір бібліотек • Відсутність механізму створення абсолютно нативних додатків
  • 16.
    WebKit • HTML5 +JavaScript + AJAX • За допомогою <canvas> можна малювати • Дозволяється виконувати задачі за межами основного потоку
  • 17.
    Корисні ресурси • Пам’ять: http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/ • Продуктивність: http://developer.android.com/guide/practices/design/performance.html • UI дизайн: http://developer.android.com/guide/practices/ui_guidelines/index.html • Як економити заряд батареї http://dl.google.com/io/2009/pres/W_0300_CodingforLife-BatteryLifeThatIs.pdf • Медіа http://dl.google.com/io/2009/pres/Mastering_the_Android_Media_Framework.pdf
  • 18.