С++ в Android. Часть 1 - Введение
Android NDK.
Для разработки под Android, помимо SDK (Standart Development Kit) разработчику доступен инструмент под названием NDK (Native Development Kit), который позволяет использовать язык С++ для написания отдельных модулей приложения.
Архитектура ОС Android и роль NDK.
Операционную систему Android можно разделить на логические части - компоненты. На данный момент эти компоненты:- Linux Kernel - ядро операционной системы Android
- Hardware Abstraction Level (HAL) - уровень, на котором реализуется интерфейс между hardware устройства и более высокими уровнями системы, такими как
- Native C/C++ Libraries - уровень библиотек Android, на котором, в частности, основывается компонент ART. Здесь расположены, например, библиотеки для работы с графикой и звуком.
- Android Runtime (ART) - среда исполнения байт-кода в операционной системе Android.
- Java API Framework - набор модулей и компонентов для реализации приложений в Android.
- System apps - приложения, написанные прикладными разработчиками.
Большинство приложений пишутся с использованием SDK. В этом случае код компилируется в специальный байт-код, который исполняется в ART. Такой подход позволяет не зависеть от архитектуры процессоров, на которых будет выполняться ваше приложение, однако это накладывает отпечаток на производительность и скорость выполнения кода. (Причины этого общедоступны, но это не тема данной статьи).
При использовании NDK, разработчику предоставляется возможность создавать и интегрировать в проект модули, написанные на С/С++, в том числе и ранее написанные библиотеки. При этом, код, написанный на С++, будет компилироваться в машинный код и исполняться нативно, т.е. в обход ART. Это позволяет увеличить производительность системы в тех ситуациях, где это является критичным, например при необходимости производить сложные расчеты, такие как в работе с графикой.
Необходимость использования NDK.
На данный момент, инструмент SDK предоставляет все необходимые средства для написания приложения под Android. В силу этого, нет никакой необходимости использовать С/С++ в повседневной работе. В большинстве случаев это не требуется, потому что при правильном подходе, производительности, которую обеспечивает ART будет достаточно. Однако его NDK незаменим в таких ситуациях как:
- Работа с графикой и звуком
- Использование сторонних библиотек
- Низкоуровневая разработка - все, что выходит за рамки ART
Заключение
В этой части статьи мы рассмотрели краткое описание сути NDK, его роли при разработке в Android и причин его использования. В следующей части, рассмотрим практический пример подключения и использования C/C++ в Android. До новых встреч!
--
Александр Чех
CTO MobileDev