Программирование Android Компиляция примеров программ пакета Android NDK Thu, November 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Компиляция примеров программ пакета Android NDK Печать
Добавил(а) microsin   

Примеры программ из 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 наглядно показаны на анимационном скриншоте.

Android-NDK-sample-prepare

4. Подключите через USB устройство Android в режиме отладки (см. [9]) или запустите заранее подготовленный эмулятор. Выполните команду ant debug install:

$ ant debug install

Android-NDK-sample-ant-debug-install

Через несколько секунд процесс завершится, и в списке установленных приложений появится новая программа под странным названием DemoActivity. Это и есть наше скомпилированное приложение. Оно работает на основе вызовов библиотеки OpenGL, и занимает удивительно мало места - файл DemoActivity-debug.apk весит всего лишь 20343 байта! Приложение можно сразу выполнить кликом на экране Android, а можно запустить с помощью консоли ADB. Внешний вид работающего приложения:

Android-NDK-sample-SanAngeles

Для запуска приложения с помощью 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 приложения.

[Другие примеры из NDK]

Выводит анимированную картинку цветовых переходов. Компиляция делается традиционно и не вызывает затруднений.

Android-NDK-sample-bitmap-plasma

Полноэкранное приложение, выводящее мозаику из вращающихся квадратиков. Эту программу можно скомпилировать либо на API Level 11, либо на API Level 18, сделайте выбор самостоятельно в зависимости от возможностей Вашего устройства. Инструкции по компиляции читайте файл README. Суть инструкций заключается в переименовании нужных файлов и в запуске команды на нужное целевое API. Вот пример последовательности шагов для компиляции программы на API Level 11:

• Файл AndroidManifest-11.xml скопируйте в файл AndroidManifest.xml.
• Файл jni/Android-11.mk скопируйте в файл jni/Android.mk.
• $ android.bat update project --path . --target android-11
• $ ndk-build
• $ ant debug install

Android-NDK-sample-gles3jni

Это приложение ничего не делает, только выводит плашку с названием и через пару секунд завершает работу. Причем при этом так загружает процессор, что сделать скриншот основного экрана приложения невозможно (у меня не получилось). Компиляция не имеет особенностей, кроме как обязательно нужно задать target, остальные шаги традиционные:

$ android.bat update project --path . --target android-11

Android-NDK-sample-HelloComputeNDK1 Android-NDK-sample-HelloComputeNDK2

Полноэкранное приложение, которое выводит зеленый треугольник, при этом фон и заливка треугольника циклически меняют яркость. Компиляция не имеет никаких особенностей.

Android-NDK-sample-hello-gl2

 Простейшая программа, демонстрирующая как передать текстовую строку из кода C в код Java. Компилируется как обычно, без особенностей.

Android-NDK-sample-hello-jni

Тестирование быстродействия реализации FIR-фильтра (КИХ, фильтр с конечной импульсной характеристикой). Компилируется как обычно.

Android-NDK-sample-hello-neon

 Куча вращающихся чайников, организованных в пространстве как куб 8x8x8. Изображение можно поворачивать, удалять и приближать - программа реагирует на стандартные манипуляции с тачскрином. Компилируется как обычно.

Android-NDK-sample-MoreTeapors1 Android-NDK-sample-MoreTeapors2 Android-NDK-sample-MoreTeapors3

 Программа, которая показывает пустой экран с изменяющимся цветом. Программа также реагирует на касания к тачскрину.

Android-NDK-sample-native-activity

Программа, демонстрирующая работу со звуком.

Android-NDK-sample-native-audio

 Программа, которая наверное должна была демонстрировать проигрывание видео, но у меня она почему-то не работала (смартфон Samsung Galaxy GT-N7000). 

Android-NDK-sample-native-media

 Программа демонстрирует такой же экран, как и пример bitmap-plasma, но почему-то без анимации.

 Полноэкранное приложение, демонстрирующее трехмерную модель чайника. Программа реагирует на тачскрин, позволяет поворачивать, смещать, приближать и отдалять модель.

Android-NDK-sample-Teapot

 Простая программа, демонстрирующая использование библиотек.

Android-NDK-sample-two-libs

[Ссылки]

1. Android NDK site:developer.android.com.
2. Cygwin site:cygwin.com.
3. Apache Ant Binary Distributions site:ant.apache.org.
4. JDK download site:oracle.com.
5. Android SDK site:developer.android.com.
6. Установка Eclipse для разработки под Android.
7. Установка Cygwin для Windows.
8. Android Debug Bridge - что это такое?
9. Отладка разрабатываемого приложения Android.

 

Добавить комментарий


Защитный код
Обновить

Top of Page