Примеры программ из Android NDK позволяют быстрее окунуться в мир программирования Android. В этой статье будет рассмотрена инструкция по компилированию этих примеров из программной строки в среде операционной системы Windows.
Для компиляции приложений Android из NDK понадобятся следующие программные пакеты:
• Android NDK [1]. Аббревиатура NDK переводится как Native Development Kit. Это набор инструментария, библиотек и примеров кода для написания приложений с использованием языков C/C++ (это и есть Native Languages). • Cygwin [2]. Это среда исполнения на Windows приложений и скриптов в стиле Unix, большой набор инструментов и утилит. Для компиляции из Cygwin понадобятся программа make и шелл bash, а также некоторые другие утилиты. • Ant [3]. Вспомогательная утилита для компиляции приложений Android, написанная на Java. • Sun JDK [4]. Пакет разработчика Java. Этот пакет нужен потому, что изначально все программы для Android основаны на языке Java. • Android SDK [5]. • ADB [8]. Аббревиатура ADB означает Android Debug Bridge. Это утилита, позволяющая отлаживать программы Android. • Рабочее устройство с Android, подключенное USB-кабелем к компьютеру, и установленный USB-драйвер для отладки.
Как видите, список инструментов довольно большой, но установить все несложно, если действовать по порядку. Установка NDK, Ant описана в [6]. SDK можно установить как отдельно [5], так и в составе Android Studio. Пакет JDK устанавливается запуском инсталлятора, доступного по ссылке [4]. Установка и настройка Cygwin описана в [7]. Установка ADB и USB-драйвера для отлаживаемого устройства подробно описаны в [8, 9].
Перед началом компиляции примеров программ у Вас должна быть доступна командная строка Cygwin Terminal с настроенными переменными окружения, в которой можно запускать утилиты android.bat, ndk-build, ant, make, adb. Далее рассмотрим процесс компиляции на примере приложения san-angeles (находится среди других примеров NDK в папке c:\android-ndk-r9c\samples\). Итак, процесс по шагам.
1. Запустите Cygwin Terminal, введите и выполните команду
$ cd$ANDROID_NDK/samples/san-angeles
Здесь $ANDROID_NDK - переменная окружения bash, в которой хранится путь до Android NDK (например c:\android-ndk-r9c). Как настраивать переменные окружения Bash Cygwin, описано в [7]. При вводе файловых путей удобно ввести первую букву следующего каталога и нажать клавишу Tab - как и во многих shell Linux, выведется подсказка навигации по каталогам, что существенно облегчает ввод полного пути.
2. С помощью утилиты android.bat создайте входные файлы для утилиты Ant.
$ android.bat update project -p .
3. Выполните команду ndk-build. Это скрипт на языке bash, который является оберткой для запуска утилиты make.
$ ndk-build
Шаги 1..3 наглядно показаны на анимационном скриншоте.
4. Подключите через USB устройство Android в режиме отладки (см. [9]) или запустите заранее подготовленный эмулятор. Выполните команду ant debug install:
$ ant debug install
Через несколько секунд процесс завершится, и в списке установленных приложений появится новая программа под странным названием DemoActivity. Это и есть наше скомпилированное приложение. Оно работает на основе вызовов библиотеки OpenGL, и занимает удивительно мало места - файл DemoActivity-debug.apk весит всего лишь 20343 байта! Приложение можно сразу выполнить кликом на экране Android, а можно запустить с помощью консоли ADB. Внешний вид работающего приложения:
Для запуска приложения с помощью ADB в консоли Cygwin Terminal введите:
$ adb shell
Затем нажмите Enter и затем выполните следующую мудреную команду:
am start -a android.intent.action.MAIN -n com.example.SanAngeles/com.example.SanAnge les.DemoActivity
Содержимое содержимое опций -a и -n можно подсмотреть из файла AndroidManifest.xml приложения.
Полноэкранное приложение, выводящее мозаику из вращающихся квадратиков. Эту программу можно скомпилировать либо на API Level 11, либо на API Level 18, сделайте выбор самостоятельно в зависимости от возможностей Вашего устройства. Инструкции по компиляции читайте файл README. Суть инструкций заключается в переименовании нужных файлов и в запуске команды на нужное целевое API. Вот пример последовательности шагов для компиляции программы на API Level 11:
Это приложение ничего не делает, только выводит плашку с названием и через пару секунд завершает работу. Причем при этом так загружает процессор, что сделать скриншот основного экрана приложения невозможно (у меня не получилось). Компиляция не имеет особенностей, кроме как обязательно нужно задать target, остальные шаги традиционные:
Полноэкранное приложение, которое выводит зеленый треугольник, при этом фон и заливка треугольника циклически меняют яркость. Компиляция не имеет никаких особенностей.
Куча вращающихся чайников, организованных в пространстве как куб 8x8x8. Изображение можно поворачивать, удалять и приближать - программа реагирует на стандартные манипуляции с тачскрином. Компилируется как обычно.
Полноэкранное приложение, демонстрирующее трехмерную модель чайника. Программа реагирует на тачскрин, позволяет поворачивать, смещать, приближать и отдалять модель.