PacktLib: Android NDK Beginner’s Guide

Android NDK Beginner's Guide

Credits

About the Author

About the Reviewers

www.PacktPub.com

Preface

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

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

Creating your first Android project using eclipse

Time for action – initiating a Java project

Interfacing Java with C/C++

Time for action – calling C code from Java

Compiling native code from Eclipse

Time for action – creating a hybrid Java/C/C++ project

Summary

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

Throwing exceptions from native code

Time for action – raising exceptions from the Store

Handling Java arrays

Time for action – saving a reference to an object in the Store

Summary

Calling Java Back from Native Code

Synchronizing Java and native threads

Time for action – running a background thread

Calling Java back from native code

Time for action – invoking Java code from a native thread

Processing bitmaps natively

Time for action – decoding camera feed from native code

Summary

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

Accessing window and time natively

Time for action – displaying raw graphics and implementing a timer

Summary

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

Playing Sound with OpenSL ES

Initializing OpenSL ES

Time for action – creating OpenSL ES engine and output

Playing music files

Time for action – playing background music

Playing sounds

Time for action – creating and playing a sound buffer queue

Recording sounds

Summary

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

Porting Existing Libraries to Android

Developing with the Standard Template Library

Time for action – embedding GNU STL in DroidBlaster

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

Mastering Makefiles

Summary

Towards Professional Gaming

Simulating physics with Box2D

Time for action – simulating physics with Box2D

Running a 3D engine on Android

Time for action – rendring 3D graphics with Irrlicht

Summary

Debugging and Troubleshooting

Debugging with GDB

Time for action – debugging DroidBlaster

Stack trace analysis

Time for action – analysing a crash dump

Performance analysis

Time for action – running GProf

Summary

Afterword

Afterword

Afterword

Afterword

Afterword

Index