Содержание
Глава 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
Добавить комментарий