Android NDK: Beginner’s Guide
ISBN-13: 9781849691529
ISBN-10: 1849691525
Издатель: Packt Publishing
Год: 2012
Table of Contents
Preface
Chapter 1: Setting Up your Environment
Getting started with Android development
Setting up Windows
Time for action – preparing Windows for Android development
Installing Android development kits on Windows
Time for action – installing Android SDK and NDK on Windows
Setting up Mac OS X
Time for action – preparing Mac OS X for Android development
Installing Android development kits on Mac OS X
Time for action – installing Android SDK and NDK on Mac OS X
Setting up Linux
Time for action – preparing Ubuntu Linux for Android development
Installing Android development kits on Linux
Time for action – installing Android SDK and NDK on Ubuntu
Setting up the Eclipse development environment
Time for action – installing Eclipse
Emulating Android
Time for action – creating an Android virtual device
Developing with an Android device on Windows and Mac OS X
Time for action – setting up your Android device on Windows and Mac OS X
Developing with an Android device on Linux
Time for action – setting up your Android device on Ubuntu
Troubleshooting a development device
Summary
Chapter 2: Creating, Compiling, and Deploying Native Projects
Compiling and deploying NDK sample applications
Time for action – compiling and deploying the hellojni sample
Exploring Android SDK tools
Android debug bridge
Project configuration tool
Creating your first Android project using eclipse
Time for action – initiating a Java project
Introducing Dalvik
Interfacing Java with C/C++
Time for action – calling C code from Java
More on Makefiles
Compiling native code from Eclipse
Time for action – creating a hybrid Java/C/C++ project
Summary
Chapter 3: Interfacing Java and C/C++ with JNI
Working with Java primitives
Time for action – building a native key/value store
Referencing Java objects from native code
Time for action – saving a reference to an object in the Store
Local and global JNI references
Throwing exceptions from native code
Time for action – raising exceptions from the Store
JNI in C++
Handling Java arrays
Time for action – saving a reference to an object in the Store
Checking JNI exceptions
Summary
Chapter 4: Calling Java Back from Native Code
Synchronizing Java and native threads
Time for action – running a background thread
Attaching and detaching threads
More on Java and native code lifecycles
Calling Java back from native code
Time for action – invoking Java code from a native thread
More on callbacks
JNI method definitions
Processing bitmaps natively
Time for action – decoding camera feed from native code
Summary
Chapter 5: Writing a Fully-native Application
Creating a native activity
Time for action – creating a basic native activity
Handling activity events
Time for action – handling activity events
More on Native App Glue
UI thread
Native thread
Android_app structure
Accessing window and time natively
Time for action – displaying raw graphics and implementing a timer
More on time primitives
Summary
Chapter 6: Rendering Graphics with OpenGL ES
Initializing OpenGL ES
Time for action – initializing OpenGL ES
Reading PNG textures with the asset manager
Time for action – loading a texture in OpenGL ES
Drawing a sprite
Time for action – drawing a Ship sprite
Rendering a tile map with vertex buffer objects
Time for action – drawing a tile-based background
Summary
Chapter 7: Playing Sound with OpenSL ES
Initializing OpenSL ES
Time for action – creating OpenSL ES engine and output
More on OpenSL ES philosophy
Playing music files
Time for action – playing background music
Playing sounds
Time for action – creating and playing a sound buffer queue
Event callback
Recording sounds
Summary
Chapter 8: Handling Input Devices and Sensors
Interacting with Android
Time for action – handling touch events
Detecting keyboard, D-Pad, and Trackball events
Time for action – handling keyboard, D-Pad, and trackball, natively
Probing device sensors
Time for action – turning your device into a joypad
Summary
Chapter 9: Porting Existing Libraries to Android
Developing with the Standard Template Library
Time for action – embedding GNU STL in DroidBlaster
Static versus shared
STL performances
Compiling Boost on Android
Time for action – embedding Boost in DroidBlaster
Porting third-party libraries to Android
Time for action – compiling Box2D and Irrlicht with the NDK
GCC optimization levels
Mastering Makefiles
Makefile variables
Makefile Instructions
Summary
Chapter 10: Towards Professional Gaming
Simulating physics with Box2D
Time for action – simulating physics with Box2D
More on collision detection
Collision modes
Collision filtering
More resources about Box2D
Running a 3D engine on Android
Time for action – rendring 3D graphics with Irrlicht
More on Irrlicht scene management
Summary
Chapter 11: Debugging and Troubleshooting
Debugging with GDB
Time for action – debugging DroidBlaster
Stack trace analysis
Time for action – analysing a crash dump
More on crash dumps
Performance analysis
Time for action – running GProf
How it works
ARM, thumb, and NEON
Summary
Index