Android NDK. Разработка приложений под Android на СC++

Практическое руководство разработчика.

Сильвен Ретабоуил "Android NDK. Разработка приложений под Android на С/C++" ДМК Пресс, 2012 год, 496 стр. (5,40 мб. pdf)

Android NDK— технология позволяющая с помощью встроенных инструментов и библиотек, создавать часть приложения под Android на языке С/С++, объединяя их с программным кодом на языке Java. Так, как Java машиной не всегда полностью используются все вычислительные возможности мобильных устройств, даже при поддержке динамической компиляции, разработан Android Native Development Kit (NDK), который в таких ситуациях может прийти на помощь.

Руководство, как раз и расскажет о примере таких разработок. Вы изучите возможности по созданию низкоуровневых приложений для Android. Узнаете как взаимодействовать с программным кодом на Java посредством механизма Java Native Interfaces и как работает гибридный проект Java/C/C++. Изучите возможность обработки в своем проекте графики ( с помощью библиотеки OpenGL ES) и звука, использование устройств ввода и датчиков и др. Книга подойдет в качестве практического пособия для начинающих и опытных разработчиков мобильных приложений под Android. Вам будет гораздо легче воспринимать материал книги если вы уже знакомы с работой в Android SDK.
ISBN: 978-5-94074-657-7

Оглавление книги.

Глава 1

Время действовать – подготовка Ubuntu Linux для разработки на платформе Android 41
Установка инструментов разработки для Android в Linux 46
Время действовать – установка Android SDK и NDK в Ubuntu 46
Настройка среды разработки Eclipse 48
Время действовать – установка Eclipse 49
Эмулятор платформы Android 53
Время действовать – создание виртуальногоустройства на платформе Android 53
Вперед, герои! 56
Разработка с действующим устройством на платформе Android в Windows и Mac OS X 58
Времядействовать – подключение действующего устройства на платформе Android в Windowsи Mac OS X 58
Разработка с действующим устройством на платформе Android в Linux 60
Времядействовать – подключение действующего устройства на платформе Android в Ubuntu 60
Устранение проблем подключенияустройства 64

Глава 2
Создание, компиляция и развертывание проектов 67
Компиляцияи развертывание примеров приложений из комплекта Android NDK 68
Времядействовать – компиляцияи развертывание примера hellojni 68
Вперед, герои – компиляциядемонстрационного приложения san angeles OpenGL 72
Исследование инструментов Android SDK 75
Android DebugBridge 75
Вперед, герои – запись файла на SD-карту из команд нодстроки 77
Инструмент настройки проекта 78
Вперед, герои – к непрерывной интеграции 79
Создание первого проекта приложения для Android с помощью Eclipse 81
Время действовать – создание проекта на Java 81
Введение в Dalvik 85
Взаимодействие Java и C/C++ 86
Время действовать – вызов программного кода на языке C из Java 86
Подробнее офайлах Makefile 91
Компиляция низкоуровневого программного кода из Eclipse 94
Время действовать – создание гибридного проекта Java/C/C++ 94

Глава 3
Взаимодействие Java и C/C++ посредством JNI 101
Работа со значениями простых типов языка Java 102
Время действовать – создание низкоуровневого хранилища 102
Вперед, герои – получение и возврат значений других простых типов 114
Ссылка на Java-объекты из низкоуровневого кода 115
Время действовать – сохранение ссылки на объект 115
Локальные и глобальные ссылки JNI 120
Возбуждение исключений из низкоуровневогокода 122
Времядействовать – возбуждение исключений в приложении Store 122
JNI в C++ 127
Обработка Java-массивов 128
Времядействовать – сохранение ссылки на объект 128
Проверка исключений JNI 138
Вперед, герои – обработка массивов других типов 139

Глава 4
Вызов функций на языке Java из низкоуровневого программного кода 141
Синхронизация операций в Java и низкоуровневых потоках выполнения 142
Время действовать – запуск фонового потока выполнения 143
Присоединение и отсоединение потоков выполнения 153
Подробнее оJava и жизненном цикле низкоуровневого кода 155
Обратный вызов Java-методов из низкоуровневого кода 156
Времядействовать – вызов Java-методов из низкоуровневого потока выполнения 157
Еще об обратных вызовах 168
Определение методов в механизме JNI 170
Низкоуровневая обработка растровых изображений 171
Время действовать – декодирование видеопотока от встроеннойкамеры в низкоуровневом коде 171

Глава 5
Создание исключительно низкоуровневых приложений 184
Создание низкоуровневоговизуальногокомпонента 185
Времядействовать – создание простейшего низкоуровневого визуального компонента 185
Обработка событий визуального компонента 193
Времядействовать – обработка событий в визуальном компоненте 194
Еще омодуле связи android_native_app_glue 206
Вперед, герои – сохранение состояния визуального компонента 211
Доступ к окну и получение времени из низкоуровневого кода 212
Время действовать – отображение простой графики и реализация таймера 213
Еще офункциях дляработы современем 222

Глава 6
Отображение графики средствами OpenGL ES 224
Инициализация OpenGL ES 225
Времядействовать – инициализация OpenGL ES 226
Чтение текстур в формате PNG с помощью диспетчера ресурсов 235
Времядействовать – загрузка текстуры в OpenGL ES 236
Рисование спрайта 252
Времядействовать – рисование спрайта корабля 252
Отображение мозаичных изображений с помощью объектов вершинных буферов 264
Время действовать – рисование мозаичного фона 265

Глава 7
Проигрывание звука средствами OpenSL ES 284
Инициализация OpenSL ES 286
Время действовать – создание механизма на основе
OpenSL ESи вывод звука 286
Еще о философии OpenSL ES 293
Воспроизведение музыкальных файлов 295
Время действовать – воспроизведение музыки в фоне 295
Воспроизведение звуков 302
Время действовать – создание и воспроизведение очереди звуковых буферов 304
Обработка событий 314
Запись звука 315
Вперед, герои – запись и воспроизведение звука 316

Глава 8
Обслуживание устройств ввода и датчиков 322
Взаимодействие с платформой Android 323
Время действовать – обработка событий прикосновения 325
Обработка событий от клавиатуры, клавиш направления(D-Pad) и трекбола 338
Времядействовать – низкоуровневая обработка клавиатуры, клавиш направлений (D-Pad) и трекбола 339
Вперед, герои – отображение виртуальной клавиатуры 348
Проверка датчиков 350
Времядействовать – превращение устройства в джойстик 351
Вперед, герои – обработка поворота экрана 364

Глава 9
Перенос существующих библиотек на платформу Android 367
Разработка с применением стандартной библиотеки шаблонов 368
Время действовать – встраивание библиотеки STLport в DroidBlaster 369
Статическое и динамическое связывания 379
КомпиляцияBoost на платформе Android 381
Времядействовать – встраивание библиотеки Boost в DroidBlaster 382
Вперед, герои – реализация многопоточной модели выполнения с помощью Boost 391
Перенос сторонних библиотек на платформу Android 393
Времядействовать – компиляцияBox2D и Irrlicht в NDK 394
Уровни оптимизации в GCC 403
Мастерствовладенияфайлами Makefile 404
Переменные в файлах Makefile 404
Инструкции в файлах Makefile 406
Вперед, герои – мастерство владения файлами
Makefile 408

Глава 10
Вперед, к профессиональным играм 411
Моделирование механических взаимодействий физических тел с помощью библиотеки Box2D 411
Время действовать – моделирование механических взаимодействий с помощью Box2D 412
Подробнее об определении столкновений 426
Режимы столкновений 427
Фильтрация столкновений 428
Дополнительные ресурсы, посвященные Box2D 430
Запуск движка трехмерной графики в Android 430
Времядействовать – отображение трехмерной графики с помощью Irrlicht 431
Подробнее об управлении сценой в Irrlicht 443

Глава 11
Отладка и поиск ошибок 446
Отладка с помощью GDB 446
Время действовать – отладка DroidBlaster 447
Анализ информации трассировки стека 456
Время действовать – анализ аварийных дампов 456
Подробнее обаварийных дампах 461
Анализ производительности 462
Время действовать – запуск профилировщика GProf 464
Как он действует 469
Наборы команд ARM, Thumb и NEON 470
В заключение 472
Послесловие 473
Предметный указатель 478

Скачать книгу бесплатно5,40 мб. pdf