Android Native Development Kit Cookbook


Android Native Development Kit Cookbook
eBook: $29.99
Formats: PDF, PacktLib, ePub and Mobi formats
$25.49
save 15%!
Print + free eBook + free PacktLib access to the book: $79.98    Print cover: $49.99
$49.99
save 37%!
Free Shipping!
UK, US, Europe and selected countries in Asia.
Also available on:
Overview
Table of Contents
Author
Reviews
Support
Sample Chapters
  • Build, debug, and profile Android NDK apps
  • Implement part of Android apps in native C/C++ code
  • Optimize code performance in assembly with Android NDK

Book Details

Language : English
Paperback : 346 pages [ 235mm x 191mm ]
Release Date : March 2013
ISBN : 1849691509
ISBN 13 : 9781849691505
Author(s) : Feipeng Liu
Topics and Technologies : All Books, Mobile Application Development, Android, Cookbooks

Table of Contents

Preface
Chapter 1: Hello NDK
Chapter 2: Java Native Interface
Chapter 3: Build and Debug NDK Applications
Chapter 4: Android NDK OpenGL ES API
Chapter 5: Android Native Application API
Chapter 6: Android NDK Multithreading
Chapter 7: Other Android NDK API
Chapter 8: Porting and Using the Existing Libraries with Android NDK
Chapter 9: Porting an Existing Application to Android with NDK
Index
  • Chapter 1: Hello NDK
    • Introduction
    • Setting up an Android NDK development environment in Windows
    • Setting up an Android NDK development environment in Ubuntu Linux
    • Setting up an Android NDK development environment in Mac OS
    • Updating Android NDK
    • Writing a Hello NDK program
    • Chapter 2: Java Native Interface
      • Introduction
      • Loading native libraries and registering native methods
      • Passing parameters and receiving returns in primitive types
      • Manipulating strings in JNI
      • Managing references in JNI
      • Manipulating classes in JNI
      • Manipulating objects in JNI
      • Manipulating arrays in JNI
      • Accessing Java static and instance fields in the native code
      • Calling static and instance methods from the native code
      • Caching jfieldID, jmethodID, and referencing data to improve performance
      • Checking errors and handling exceptions in JNI
      • Integrating assembly code in JNI
      • Chapter 3: Build and Debug NDK Applications
        • Introduction
        • Building an Android NDK application at the command line
        • Building an Android NDK application in Eclipse
        • Building an Android NDK application for different ABIs
        • Building Android NDK applications for different CPU features
        • Debugging an Android NDK application with logging messages
        • Debugging an Android NDK application with CheckJNI
        • Debugging an Android NDK application with NDK GDB
        • Debugging an Android NDK application with CGDB
        • Debugging an Android NDK application in Eclipse
        • Chapter 4: Android NDK OpenGL ES API
          • Introduction
          • Drawing 2D Graphics and applying transforms with the OpenGL ES 1.x API
          • Drawing 3D graphics and lighting up the scene with the OpenGL ES 1.x API
          • Mapping texture to 3D objects with the OpenGL ES 1.x API
          • Drawing 3D graphics with the OpenGL ES 2.0 API
          • Displaying graphics with EGL
          • Chapter 5: Android Native Application API
            • Introduction
            • Creating a native activity with the native_activity.h interface
            • Creating a native activity with the Android native app glue
            • Managing native windows at Android NDK
            • Detecting and handling input events at Android NDK
            • Accessing sensors at Android NDK
            • Managing assets at Android NDK
            • Chapter 6: Android NDK Multithreading
              • Introduction
              • Creating and terminating native threads at Android NDK
              • Synchronizing native threads with mutex at Android NDK
              • Synchronizing native threads with conditional variables at Android NDK
              • Synchronizing native threads with reader/writer locks at Android NDK
              • Synchronizing native threads with semaphore at Android NDK
              • Scheduling native threads at Android NDK
              • Managing data for native threads at Android NDK
              • Chapter 7: Other Android NDK API
                • Introduction
                • Programming with the jnigraphics library in Android NDK
                • Programming with the dynamic linker library in Android NDK
                • Programming with the zlib compression library in Android NDK
                • Programming audio with the OpenSL ES audio library in Android NDK
                • Programming with the OpenMAX AL multimedia library in Android NDK
                • Chapter 8: Porting and Using the Existing Libraries with Android NDK
                  • Introduction
                  • Porting a library as a shared library module with the Android NDK build system
                  • Porting a library as a static library module with the Android NDK build system
                  • Porting a library with its existing build system using the Android NDK toolchain
                  • Using a library as a prebuilt library
                  • Using a library in multiple projects with import-module
                  • Porting a library that requires RTTI, exception, and STL support

                    Feipeng Liu

                    Feipeng Liu is a technology enthusiast with a focus on multimedia systems and applications. He started mobile applications development in 2008 on Windows Mobile. In 2010, he started developing apps for Android with NDK. His Android apps have been used by many users. One of his apps, Video Converter Android, reached 1 million downloads within 10 months. Feipeng received his B.ENG in Electrical and Electronic Engineering, Nanyang Technological University and Master of Computing degree in the Department of Computer Science, National University of Singapore.

                    Code Downloads

                    Download the code and support files for this book.


                    Submit Errata

                    Please let us know if you have found any errors not listed on this list by completing our errata submission form. Our editors will check them and add them to this list. Thank you.


                    Errata

                    - 5 submitted: last submission 17 Jun 2014

                    Type: Code, Page number: 110

                    Following content should be added to Step 3:

                    #include <jni.h>


                    jintArray getNewIntArray(JNIEnv *pEnv) {

                    jintArray jintArr = pEnv->NewIntArray(-1);

                    return jintArr;

                    }


                    extern "C" {

                    JNIEXPORT jintArray JNICALL Java_cookbook_chapter3_CheckJNIDemoActivity_CheckJNIDemo(JNIEnv *pEnv, jobject pObj) {

                    return getNewIntArray(pEnv);

                    }

                    }

                     


                    Type: Code, Page numbers: 40 and 44

                     

                    On page 40 and 44, declarations of:
                    jboolean *isCopy;
                    in the code should not be pointer but instead should be
                    jboolean isCopy;

                    On page 40, the usage of isCopy in:
                    str = (*pEnv)->GetStringUTFChars(pEnv, pStringP, isCopy);
                    needs adjusting accordingly to be:
                    str = (*pEnv)->GetStringUTFChars(pEnv, pStringP, &isCopy);

                    Type: Typo | Page number: 69

                    In the table, the last entry saying: "lont f(byte[] bytes, Dummy dummy)"

                    should be  "long f(byte[] bytes, Dummy dummy)"

                    Type: Code| Page number: 72
                    The code at line 128 in callmethod.c should be.

                    return (*pEnv)->ToReflectedMethod(pEnv, dummyCls, mid2, JNI_FALSE);

                    Type: Code| Page number: 61

                    The Text in the book says: "When isCopy at GetIntArrayElements is set to JNI_TRUE, the changes we make..." and "When isCopy ist set to JNI_FALSE, the mode parameter determines how the data release is done."

                    The words JNI_TRUE and JNI_FALSE should be switched.

                    So it should be the following:

                    "When isCopy at GetIntArrayElements is set to JNI_FALSE, the changes we make..." and "When isCopy ist set to JNI_TRUE, the mode parameter determines how the data release is done."

                     

                     

                    Sample chapters

                    You can view our sample chapters and prefaces of this title on PacktLib or download sample chapters in PDF format.

                    Frequently bought together

                    Android Native Development Kit Cookbook +    Kendo UI Cookbook =
                    50% Off
                    the second eBook
                    Price for both: ₨514.80

                    Buy both these recommended eBooks together and get 50% off the cheapest eBook.

                    What you will learn from this book

                    • Develop Android apps in C/C++ without a single line of Java
                    • Program 2D/3D graphics with both OpenGL ES 1x and 2.0 in Android NDK
                    • Write multi-threaded Android apps in Android NDK
                    • Port existing C/C++ libraries and applications to Android with NDK
                    • Develop multimedia Android apps with Android NDK

                     

                    In Detail

                    Building Android applications would usually mean that you spend all of your time working in Java. There are however times when this is not the most efficient or best method for the application being built. This is where Android NDK comes in. Android NDK allows the developer to write in Native C/C++, giving you the power to reuse code and libraries and also, in most cases, increase the speed and efficiency of your application.

                    The "Android Native Development Kit Cookbook" will help you understand the development, building, and debugging of your native Android applications. We will discover and learn JNI programming and essential NDK APIs such as OpenGL ES, and the native application API. We will then explore the process of porting existing libraries and software to NDK. By the end of this book you will be able to build your own apps in NDK apps.

                    "Android Native Development Kit Cookbook" begins with basic recipes that will help you in the building and debugging of native apps, and JNI programming. The recipes cover various topics of application development with Android NDK such as OpenGL programming and Multimedia programming. We will begin with a simple recipe, Hello NDK, before moving on to cover advanced topics with recipes on OpenGL ES that focus on 2D and 3D graphics, as well as recipes that discuss working with NDK and external APIs. If you are looking for ways to make your application available in Android and take measures to boost your application’s performance, then this Cookbook is for you.

                    Approach

                    This book is written in a Cookbook style, beginning with recipes which focus on helping developers make their software/application available in Android.

                    Who this book is for

                    Android developers who want to learn Android NDK programming, or develop multimedia and games in Android NDK will benefit from this book.

                    Code Download and Errata
                    Packt Anytime, Anywhere
                    Register Books
                    Print Upgrades
                    eBook Downloads
                    Video Support
                    Contact Us
                    Awards Voting Nominations Previous Winners
                    Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
                    Resources
                    Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software