четвер, 5 лютого 2015 р.

Андроїд - не лінукс і джава - не джава


Короткі замітки і коментарі по 3- му розділу книги "Learning Android", 2-nd Edition by Marko Gargenta and Masumi Nakamura (2014). Думаю написати їх по кожному розділу (якщо вистачить духу). Можливо, колись такі замітки переростуть у щось більше.

Android - не Linux, проте є надбудовою над kernel. Так пишуть автори, хоча б я сказав би, що Android - це Linux, який спочатку обрізали, а потім доповнили новими можливостями :) Зокрема, у андроїда відсутні:

  • менеджер вікон X11
  • можливості створення користувачів
  • glib (Стандартна бібліотека С)
На андроїд поширюється GPL ліценція, проте можна розробляти власні платні застосунки для Android.

Рідний код андроїда (the user space) переважно писався на С/C++. Ця суміш включає такі розумні слова як: HAL, native libraries, native daemons та native tools.

HAL - hardware abstraction layer (очевидно це щось стосується апаратного забезпечення:))
Native Libraries - це бібліотеки С++. Деякі з них спеціально писалися під Android OS, а решта взяті з Open Source. Зокрема:
  •  Bionic - андроїдна реалізація бібліотека libc, яка початково взяти із BSD. Bioniс поширюється на умовах ліцензії Apache/MIT license.
  • Framework libraries - різні бібліотеки спроектовані для підтримки системних сервісів: локацї, медія, встановлювача пакетів, телефонії, WiFi, voip і т.д.
  • Webkit - рушій веб-візуалізації для Safari, Chrome та ін.
  • SQLite - база даних SQL призначена для використаннями програмами Android
  • Apache Harmony - відкрита реалізація бібліотек Java
  • OpenGL - бібліотека 3D графіки
  • OpenSSL - бібліотека для криптографії.
Native Daemons (демони-свояки :)). Деякі з них:
  •  Service Manager (servicemanager) - верховний демон і найважливіший:)
  • Radio interface layer daemon (rild) - GSP, CDMA
  •  Installation daemon (installd) - опікується встановленням, обновленням і гарантуванням доступу
  • Media server (mediaserver) - відповідальний за камеру, аудіо та ін. медійні сервіси
  • Android Debug Bridge (adbd) - дозволяє доступитися до пристрою з комп’ютера
Native Tools - деякі рідні команди linux + власне андроїда.  З лінукса cd, ls, ps, top, df і ще деякі. Немає у андроїді: grep, vi, less, more. Проте деякі розробники повертають у власні дистрибутиви ці команди.

Java
 Dalvik - власна віртуальна машина Java (проекти Open JDK, Apache Harmony projects ). Викинуто пакети awt та swing.  Перероблено багато стандартних пакетів, добавлені свої.

Програми для андроїда спочатку компілюються в байткод, а згодом компілюються у Dalvik code, який і запускається на Dalvik VM.

Для чого так ускладнювати? Все тому, що байткод джави переважно має стабільну структуру і не зазнає істотних переробок з версії до версії Java. В той же час саме написання коду на Java еволюціонує.

Application Framework

Програмний Фреймок багато в чому повторює структуру Java Standart Edition. Там є такі пакети як: java.lang.*, java.utils.*, java.io.*, java.net.* і т.п.  Включає багато сервісів(менеджерів) для роботи з WiFi, сенсорами, телефонією і т.д.

За корисною документацію можна завітати на  Android.com.

Android Application Package (APK) - це по суті виконуваний застосунок java. А вірніше це виконуваний ZIP архів. Тобто це те, чим закінчується робота кожного розробника під андроїд. Основні компоненти:
  • Android Manifest file - головний файл
  • Dalvik executable - власне сам скомпільований код
  • Resources - всякі дрібнички для програми, картинки і т.п.
  • Native libraries - код на С++
  •  Signatures - цифровий підпис
Дистрибутиви програм 

Програмамаи можна обзавестися у спеціальних веб-маркети як то Google Play.  Зареєстровані випадки потрапляння вірусів. Вбудованого антивірусу в андроїді немає. Відповідальність за їх відсутність покладається на веб-маркети.