МОЖЛИВОСТІ ТА АРХІТЕКТУРА ANDROID

&nbsp

Android – це не просто ще один дистрибутив Linux для мобільних пристроїв При розробці для Android вам, швидше за все, не доведеться мати справу з самі ядром Linux З точки зору програміста, Android – Платформа, абстрагуюча розробника від ядра і дозволяє йому створювати код на Java Android володіє декількома корисними можливостями По-перше, це фреймворк, що пропонує великий набір API для створення різних типів додатків і, крім того, що забезпечує можливості повторного використання та заміни компонентів, які пропонуються платформою і сторонніми додатками По-друге, наявність віртуальної машини Dalvik, що відповідає за запуск додатків на Android Крім того, до послуг розробника набір графічних бібліотек для 2D-і 3D-додатків, підтримка мультимедіа-форматів (Ogg Vorbis, МРЗ, MPEG-4, Н264, PNG), API для доступу до камери, GPS, компасом, акселерометру, сенсорному екрану, джойстику і клавіатурі Є навіть спеціальне API для відтворення фонових звукових ефектів, яке знадобиться нам при розробці ігор Не всі Android-пристрої володіють всіма цими можливостями – у наявності апаратне поділ Звичайно, список можливостей Android не вичерпується згаданими мною Однак для розробки ігор вони будуть найбільш важливі

Архітектура Android формується з набору компонентів Кожен компонент побудований на основі елементів більш низького рівня На рис 11 представлено короткий огляд головних компонентів Android

Рис 11 Огляд архітектури Android

&nbsp

Ядро

У нижній частині малюнка ви можете побачити, що ядро ​​Linux пропонує основні драйвери для апаратних компонентів системи Крім того, ядро ​​відповідає за память, управління процесами, підтримку мережі і т д

&nbsp

Середа виконання та Dalvik

Середа виконання Android, що є надбудовою над ядром, відповідає за породження і виконання додатків Android Кожна програма працює у власному процесі зі своєю віртуальною машиною Dalvik

Dalvik запускає програми в байт-кодовому форматі DEX Зазвичай ви перетворюєте звичайні Java-файли з розширенням CLASS в формат DEX за допомогою спеціальної утиліти dx, наявної в SDK Формат DEX займає набагато менше місця в памяті, ніж класичні файли типу CLASS, що досягається великим стисненням, розбиттям на таблиці і злиттям декількох CLASS-файлів Віртуальна машина Dalvik взаємодіє з бібліотеками ядра, що пропонують базовий функціонал для Java-програм Ці бібліотеки розташовують великим, але не повним набором класів, доступних через Java SE, і використовують частину реалізації Apache Harmony Крім іншого це означає, що в Java SE для Dalvik відсутні Swing і Abstract Window Toolkit, а також всі класи з Java ME Однак ви можете використовувати (з обережністю) сторонні бібліотеки для Java SE на Dalvik

До Android 22 (Froyo) весь код був інтерпретується У Froyo був представлений відслідковує JIT-компілятор, здатний компілювати частини байт-коду в машинний код на льоту Це значно збільшує продуктивність додатків, що вимагають великих обчислень JIT-компілятор може використовувати можливості процесора, спеціально призначені для складних обчислень, наприклад для операцій з плаваючою точкою (Floating Point Unit, FPU)

Крім того, в Dalvik включений власний збирач сміття (Garbage Collector, GC) Він працює за принципом відзначити і прибрати, що іноді ставить розробників у глухий кут Однак якщо уважно ним користуватися, ви зможете ефективно застосовувати його при розробці ігор Остання версія Android (23) володіє поліпшеним паралельним GC, робота з яким заподіює менше неприємностей Ми розглянемо проблеми користування GC пізніше в цій е

Кожна програма, запускається в екземплярі віртуальної машини Dalvik, має у своєму розпорядженні від 16 до 24 Мбайт оперативної памяті Це необхідно тримати в голові, жонглюючи картинками і звуковими ресурсами

&nbsp

Системні бібліотеки

Крім бібліотек ядра, що пропонують деяку функціональність Java SE, існує також набір рідних бібліотек на C / C + +, що створюють основу для фреймворка додатки (розташованого на рівень вище, ніж бібліотеки рис 11) Ці системні бібліотеки в більшості своїй відповідають за складні в обчислювальному сенсі задачі (промальовування графіки, відтворення звуку, доступ до бази даних), що не дуже підходящі для віртуальної машини Dalvik API в них обгорнуті за допомогою класів Java під фреймворк додатки, який ми будемо використовувати при написанні ігор У тій чи іншій формі нам знадобляться наступні бібліотеки

Skia Graphics Library (Skia) – цей програмний визуализатор 20-графіки використовується для рендеринга користувача інтерфейсу додатків Android Він буде потрібен нам при написанні першої 20-ігри

OpenGL for Embedded Systems (OpenGL ES) – індустріальний стандарт для апаратної промальовування графіки OpenGL ES 10 і 11 маються на Java у всіх версіях Android OpenGL ES 20, в якому зявилася підтримка шейдеров, підтримується починаючи з Android 22 (Froyo) Потрібно зауважити, що Java-реалізації для OpenGL ES 20 неповні – в них відсутня кілька важливих методів Крім того, емулятор і більшість старих пристроїв (що займають, проте, значну частку ринку) не підтримують OpenGL ES 20 Ми будемо мати справу з OpenGL ES 10 і 11, щоб домогтися максимальної сумісності

ОрепСоге – бібліотека запису і відтворення аудіо-та відеофайлів Вона підтримує хороший набір форматів (Ogg Vorbis, МРЗ, Н264, MPEG-4 і т д) Нас насамперед цікавитиме робота зі звуком, яка напряму з Java не повязана, але використовується через декілька класів і сервісів

FreeType – бібліотека завантаження і обробки растрових і векторних шрифтів (у більшості випадків формату TrueType) FreeType підтримує стандарт Юнікод, включаючи написання справа наліво для арабських шрифтів та інші подібні випадки На жаль, це не дуже узгоджується з Java, що не підтримує арабську типографіку Як і у випадку з ОрепСоге, FreeType безпосередньо в Java не реалізований, але обгорнутий в декілька відповідних класів

Ці системні бібліотеки задовольняють велике коло потреб розробників ігор і виконують за них багато важкої роботи Вони – причина того, щоб писати наші ігри на старій добрій Java

ПРИМІТКА

Хоча можливостей Dalvik зазвичай цілком вистачає для наших потреб, іноді необхідно більше продуктивності Таке може статися при імітації складних фізичних процесів або множинних ЗР-обчисленнях – Тоді нам доведеться писати власний код У цій е даний аспект розробки не розглядається Існує набір відкритих бібліотек для Android, завдяки яким ви зможете реалізувати це на Java За адресою http://codegoogleeom/p/libgdx/ можна подивитися приклад

&nbsp

Фреймворк додатки

Фреймворк додатки повязує разом системні бібліотеки і середовищем виконання, створюючи таким чином призначену для користувача бік Android Фреймворк управляє додатками і пропонує продуману середу, в якій вони працюють Розробники створюють програми для цього фреймворку за допомогою набору програмних інтерфейсів на Java, що охоплюють такі області, як розробка користувальницького інтерфейсу, фонові служби, оповіщення, управління ресурсами, доступ до периферії і т д Все ключові програми, що поставляються разом з ОС Android (наприклад, поштовий клієнт), написані за допомогою цих API

Додатки, будь вони з інтерфейсом або з фоновими службами, можуть звязуватися з іншими додатками Цей звязок дозволяє одному з додатком використовувати компоненти інших Простий приклад – програма, яка робить фотознімок і потім обробна його Додаток запитує у системи компонент іншої програми, що забезпечує цю дію Далі перший додаток може повторно використовувати цей компонент (наприклад, від вбудованого програми камери або від фотогалереї) Подібний алгоритм знімає значну частину ноші з програміста, а також дозволяє налаштувати різноманіття аспектів поведінки Android

Як розробники ігор ми будемо створювати додатки з інтерфейсом користувача в цьому фреймворку Тому нас цікавитиме архітектура додатку, його життєвий цикл, а також його взаємодія з користувачем Фонові сервіси зазвичай грають невелику роль в розробці ігор, тому я не буду загострювати на них увагу

&nbsp

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*