Skip to main content

NDK(Native Development Kit)

NDK is a set of tools that allows Android application developers to embed native machine code compiled c/c++ source file into their application packages.

Note- Android NDK can only be used to target Android system images running cupcake(1.5) or later versions of the platform.

Android NDK Goals:
The DVM allows application's source code to call methods implemented in native code through the JNI. This means that:
  • Applications source code will be declare one or more methods with the 'native' keyword to indicate that they are implemented through native code.
    native byte[] loadFile(String filepath);
  • Must have a native shared library that contains the implementation of these methods, which will be packed into application's .apk.
  • Application must explicitly load the library.
          Don't use 'lib'prefix and '.so' suffix.
Android NDK is a compliment to the Android SDK that helps to:
  • Generate JNI-compatible shared libraries that can run on the Android 1.5 platform (and later) running on ARM CPUs.
  • Copy the generated shared libraries to a proper location of your application project path, so they will be automatically added to your final (and signed) .apks
  • It provides a set of cross-toolchains(compiler,linker,etc..) that can generate native ARM binaries on Linux, OS X and Windows (with Cygwin)
  • A build system that allow developers to only write very short build files to describe which sources need to be compiled, and how. The build system deals with all the hairy toolchain/platform/CPU/ABI specifics
Android NDK Non-Goals:
  • The NDK is not a good way to write generic native code that runs on Android devices.In particular, Applications should still be written in the Java programming language, handle Android system events appropriately to avoid the "Application Not Responding" dialog or deal with the Android application life-cycle.
  • Not being able to directly access the content of VM objects through direct native pointers. E.g. you cannot safely get a pointer to a String object's 16-bit char array to iterate over it in a loop.
  • Requiring explicit reference management when the native code wants to keep handles to VM objects between JNI calls.
  • The NDK only provides system headers for a very limited set of native APIs and libraries supported by the Android platform. While a typical Android system image includes many native shared libraries, these should be considered an implementation detail that might change drastically between updates and releases of the platform.
  • If an Android system library is not explicitly supported by the NDK headers, then applications should not depend on it being available, or they risk breaking after the next over-the-air system update on various devices.

Popular posts from this blog

Display video from specific folder with rounded shape thumbnail

Hi friends ,This is complete post, about how to display video form specific folder and display it with rounded shape and play it on click event. For Rounded shape I have used custom ImageView.
Now have a look on code part.
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android=""
    android:stretchMode="columnWidth" >

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""

Custom Volley-Gson request implementation

This page covers Volley-Gson integration and also Volley custom Request. We assume that, you are familiar with Volley and Gson.

Volley has some inbuilt request which you can use, if your response is a String, Image, or JSON, in that case, you don't need to implement a custom Request.  To use Gson with Volley, we need to implement a custom request.
To make a custom request, you need to perform following operation.
Extend Request<T> class, where T is the type of parsed response or expected response. Implement the abstract methods parseNetworkResponse() and deliverResponse().  parseNetworkResponse:  A response contains parse response of a given type i.e Gson.

    protected Response<T> parseNetworkResponse(NetworkResponse response) {
        try {
            String json = new String(
          , HttpHeaderParser.parseCharset(response.headers));
            if (BuildConfig.IS_DEBUG)
                Log.d(TAG, "Response :: " + …

Custom Android SeekBar Developement

Before starting coding for Custom SeekBar,You must have good concept of following topics. 1.Layer List 2.Animation List 3.Selector Layer List:A LayerDrawableis a drawable object that manages an array of other drawables. Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top.
<layer-listxmlns:android=""> <item android:id="@android:id/background" android:drawable="@drawable/seekbar_total"/> <itemandroid:id="@android:id/secondaryProgress"> <clipandroid:drawable="@drawable/seekbar_buffer"/> </item> <itemandroid:id="@android:id/progress"> <clipandroid:drawable="@drawable/seekbar_played"/> </item> </layer-list> Animation List:A AnimationDrawable is a drawable object that is used to create frame-by-frame animation.It's oneshotelement should be true if u want loop animation otherwise false.