Generate project theme on-line to reduce programming affort
1) Generate Theme:
2) Action Bar Style:
3) Custom Button Theme:
4) Launcher Icon Generator:
5) Menu Icon Generator:
android-ndk-r8-windows.zip).d:\myproject). The NDK will be unzipped as d:\myproject\android-ndk-r8. I shall denote the installed directory as <NDK_HOME>.PATH environment variable.chmod a+x on the downloaded package.ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin ndk$ ./android-ndk-r10c-darwin-x86_64.bin
android-ndk-<version>. You can rename the NDK directory if necessary and you can move it to any location on your computer. This documentation refers to the NDK directory as <ndk>.docs" sub-directory.jni" and place all the native sources here.Android.mk" to describe your native sources to the NDK build system.ndk-build" (in NDK installed directory) script from your project's directory. The build tools copy the stripped, shared libraries needed by your application to the proper location in the application's project directory..apk" file.samples" directory, in particular the "hello-jni".TextView.AndroidHelloJNI", with application name "Hello JNI" and package "com.mytest". Create an activity called "JNIActivity" with Layout name "activity_jni" and Title "Hello JNI".JNIActivity.java" as follows:package com.mytest;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class JNIActivity extends Activity {
static {
System.loadLibrary("myjni"); // "myjni.dll" in Windows, "libmyjni.so" in Unixes
}
// A native method that returns a Java String to be displayed on the
// TextView
public native String getMessage();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a TextView.
TextView textView = new TextView(this);
// Retrieve the text from native method getMessage()
textView.setText(getMessage());
setContentView(textView);
}
}
static initializer to load a shared library ("myjni.dll" in Windows or "libmyjni.so" in Unixes). It declares a native method called getMessage(), which returns aString to be as the TextView's message. The onCreate() method declares a TextView, and invokes the native method getMessage() to set its text.jni" under the project's root (right-click on the project ⇒ New ⇒ Folder). Create a sub-folder "include" under "jni" for storing the header files.javah" utility (from a CMD shell) to create C/C++ header called "HelloJNI.h":// Change directory to <project-root>/jni/include
> javah -classpath ../../bin/classes;<ANDROID_SDK_HOME>\platforms\android-<xx>\android.jar
-o HelloJNI.h com.mytest.JNIActivity
// For Ubuntu
// Change directory to <project-root>/jni/include
> javah -classpath ../../bin/classes:<ANDROID_SDK_HOME>\platforms\android-<xx>\android.jar:.: -o HelloJNI.h com.mytest.JNIActivity
-classpath: in our case, we need the JNIActivity.class which is kept in "<project-root>\bin\classes"; and its superclass Android.app.Activity.class which is kept inandroid.jar under the Android SDK.-o: to set the output filename.com.mytest.JNIActivity".JNIEXPORT jstring JNICALL Java_com_mytest_JNIActivity_getMessage(JNIEnv *, jobject);
getMessage() maps to the above header in the native code, in the form of Java_<fully-qualified-name>_methodName, with dots replaced by underscores.HelloJNI.c" under the "jni" directory (right-click on the "jni" folder ⇒ New ⇒ File):#include <jni.h>
#include "include/HelloJNI.h"
JNIEXPORT jstring JNICALL Java_com_mytest_JNIActivity_getMessage
(JNIEnv *env, jobject thisObj) {
return (*env)->NewStringUTF(env, "Hello from native code!");
}
jstring via JNI environment interface function NewStringUTF() with an input C-string "Hello from native code!". Read "Java Native Interface (JNI)" for details.Android.mk" under the "jni" directory (right-click on "jni" folder ⇒ New ⇒ File), as follows:LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myjni LOCAL_SRC_FILES := HelloJNI.c include $(BUILD_SHARED_LIBRARY)
myjni" is the name of our shared library (used in System.loadLibrary()), and "HelloJNI.c" is the source file.ndk-build" script provided by Android NDK (the Android NDK installed directory shall be in the PATH).// Change directory to <project-root>
> ndk-build
Compile thumb : myjni <= HelloJNI.c
SharedLibrary : libmyjni.so
Install : libmyjni.so => libs/armeabi/libmyjni.so
ndk-build --help" to display the command-line options.ndk-build V=1" to display the build messages.ndk-build -B" to perform a force re-built.libmyjni.so" is loaded....: Trying to load lib /data/data/com.example.androidhellojni/lib/libmyjni.so ... ...: Added shared lib /data/data/com.example.androidhellojni/lib/libmyjni.so ...
Download working source code.
Reference links:
https://www3.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html
http://taylorpeer.com/hello-world-cpp-android-ndk/