Android NDK Beginner’s Guide

Discover the native side of Android and inject the power of C/C++ in your applications with this book and ebook

Android NDK Beginner’s Guide

Beginner's Guide
Sylvain Ratabouil

Discover the native side of Android and inject the power of C/C++ in your applications with this book and ebook
$29.99
$49.99
RRP $29.99
RRP $49.99
eBook
Print + eBook
$12.99 p/month

Want this title & more? Subscribe to PacktLib

Enjoy full and instant access to over 2000 books and videos – you’ll find everything you need to stay ahead of the curve and make sure you can always get the job done.
+ Collection
Free Sample

Book Details

ISBN 139781849691529
Paperback436 pages

About This Book

  • Create high performance applications with C/C++ and integrate with Java
  • Exploit advanced Android features such as graphics, sound, input and sensing
  • Port and reuse your own or third-party libraries from the prolific C/C++ ecosystem

Who This Book Is For

Are you an Android Java programmer who needs more performance? Are you a C/C++ developer who doesn’t want to bother with Java stuff and its out-of-control garbage collector? Do you want to create fast intensive multimedia applications or games? Answer yes to any of the above and this book is for you. With some general knowledge of C/C++ development, you will be able to dive head first into native Android development.

Table of Contents

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
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
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
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
Chapter 4: 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
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
Accessing window and time natively
Time for action – displaying raw graphics and implementing a timer
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
Playing music files
Time for action – playing background music
Playing sounds
Time for action – creating and playing a sound buffer queue
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
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
Chapter 10: 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
Chapter 11: 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

What You Will Learn

  • Jump in the starting block and create your first Android native project
  • Communicate with Java through Java Native Interfaces
  • Display 2D and 3D graphics with OpenGL ES
  • Play sound and music with OpenSL ES
  • Manage Android input and sensors
  • Debug and troubleshoot applications
  • Port existing C/C++ code to Android
  • Combine graphics, sound, input, sensors and physics in your application

 

In Detail

Android NDK is all about injecting high performance into your apps. Exploit the maximum power of these mobile devices using high-performance and portable code.

This book will show you how to create C/C++ enabled applications and integrate them with Java. You will learn how to access native API and port libraries used in some of the most successful Android applications.

Using this practical step-by-step tutorial, highlighted with comments and tricks, discover how to run C/C++ code embedded in a Java application or in a standalone application. You will create a real native application starting from project creation through to full implementation of native API and the porting of existing third-party libraries. You will discover OpenGL ES and OpenSL ES, which are becoming the new standard in mobility. You will also understand how to access keyboard and input peripherals and how to read accelerometer or orientation sensors. Finally, you will dive into more advanced topics such as debugging and troubleshooting applications. By the end of the book, you should know the key elements to enable you to start exploiting the power and portability of native code.

Authors

Table of Contents

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
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
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
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
Chapter 4: 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
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
Accessing window and time natively
Time for action – displaying raw graphics and implementing a timer
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
Playing music files
Time for action – playing background music
Playing sounds
Time for action – creating and playing a sound buffer queue
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
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
Chapter 10: 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
Chapter 11: 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

Book Details

ISBN 139781849691529
Paperback436 pages
Read More