Уровень библиотек

Следующий уровень над ядром Linux является набором библиотек С/С++ типа OpenGL, WebKit, FreeType, SSL, библиотеки поддержки libc, базы данных SQLite и мультимедиабиблиотек (Media Framework). Системная библиотека базируется на Berkeley Software Distribution (BSD) и разработана для мобильных устройств на основе Linux.

Следующий уровень над ядром Linux включает набор библиотек С/С++, используемых различными компонентами ОС. Для разработчиков доступ к функциям этих библиотек реализован через использование Application Framework— каркаса приложений. Библиотеки этого уровня по своему функциональному назначению можно разделить на следующие группы:

  • системная библиотека С;
  • менеджер поверхностей;
  • функциональные библиотеки С/С++.

Системная библиотека libc

Компания Google разработала собственную Сбиблиотеку (libc)— Bionic. Это было необходимо по следующим причинам:

  • библиотека будет загружаться в каждый процесс и, следовательно, должна иметь маленький размер. Библиотека Bionic имеет размер около 200 Кбайт, что в два раза меньше размера glibc;
  • ограниченная мощность центрального процессора мобильного устройства. Это означает, что библиотека должна быть оптимизирована для максимального быстродействия.

Библиотека Bionic имеет встроенную поддержку важных для Android системных служб и регистрацию системных событий. Библиотека Bionic не поддерживает определенные функциональности, например исключения С++, и несовместима с GNU libc и стандартом POSIX.

Менеджер поверхностей

Система Android использует композитный менеджер поверхностей, похожий на Compiz (композитный менеджер окон для Х Window System, использующий для ускорения SDграфику OpenGL). Вместо того чтобы рисовать непосредственно в буфер экрана, команды рисунка входят за кадром в битовые массивы, которые потом объединяются с другими битовыми массивами, чтобы сформировать изображение, которое видит пользователь. Это позволяет системе создавать все виды интересных эффектов, например прозрачные окна и причудливые переходы.

Менеджер поверхностей обрабатывает весь рендеринг поверхности на фреймовый буфер. Менеджер может объединить 2D- и 3D-поверхности и поверхности от нескольких приложений. Поверхности передают как буферы компоновкой IРС- запросов. Менеджер поверхностей использует двойную буферизацию, используя транспонирования страницы. Системные интеграторы могут подключать аппаратное 2D-ускорение, используя плагины Khronos. Обработка графической информации менеджером поверхностей представлена на рисунке.

Обработка графической информации менеджером поверхностей

Функциональные библиотеки

Android включает ряд библиотек С/С++, используемых различными компонентами системы. Далее приводятся основные функциональные библиотеки системы.

  • Мультимедиа (Media Framework). Эти библиотеки ответственны за регистрацию и воспроизведение аудио и видеоформатов. Основаны на PacketVideo OpenCORE и предназначены для поддержки популярных аудио и видеоформатов (MPEG4, Н.264, МР3 и др.).
  • SQLite — процессор баз данных, доступный всем приложениям. SQLite не использует парадигму клиентсервер, т. е. движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется, и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает разработку приложений для работы с данными. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа.
  • OpenGL ES — движок для работы с 3Dграфикой, основанный на API версии OpenGL ES 1.0. OpenGL ES — это упрощенная версия спецификации OpenGL, позволяющая мобильным устройствам работать с тяжеловесными в графическом отношении приложениями. Библиотека использует аппаратный 3Dакселератор (если он доступен на этом устройстве) или встроенное высоко оптимизированное трехмерное программное обеспечение для работы с растровой графикой.
  • FreeType — библиотека шрифтов, предназначенная для работы с растровыми и векторными шрифтами.
  • WebKit— библиотека, предназначенная для функционирования встроенного в Android ШеЬбраузера. WebKit поддерживает CSS, JavaScript, DOM, Ajax.
  • SGL — движок для работы с 20графикой. Android также поддерживает собственную графическую 20библиотеку Skia, которая написана на С и С++ (Skia также формирует ядро популярного браузера Google Chrome).
  • SSL — библиотека предназначена для работы с сокетами, основанная на протоколе SSL: SSLv3.O или TLSv1.2.