Wednesday, September 17, 2014

Android NDK 예제

1. 위치 /Users/duongame/devtools/android-ndk
  1) .bash_profile에 패스를 추가해준다.
$ cat .bash_profile
export ANDROID_NDK_ROOT=/Users/duongame/devtools/android-ndk
export ANDROID_SDK_ROOT=/Users/duongame/devtools/android-sdk
export NDK_ROOT=$ANDROID_NDK_ROOT
export PATH=$PATH:$ANDROID_NDK_ROOT
  2) source .bash_profile
  3) ndk-build 실행 테스트

2. 방법
  1) 소스에 jni폴더를 만든다.
  2) 아래와 같이 소스(jni-sample1.c)를 만드는데 소스에서 함수 명은 Java_(package_name)_className_functionName으로 정한다
#include<string.h>
#include<jni.h>
jstring
Java_com_example_jnisample1_JNISample1_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
__android_log_print(ANDROID_LOG_DEBUG, "JNI", "Hello World");
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}
  3) jni폴더에 Android.mk를 만든다.
LOCAL_PATH := $(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE    := jni-sample1
LOCAL_SRC_FILES := jni-sample1.c
include$(BUILD_SHARED_LIBRARY)
  4) Terminal을 열어서 해당 프로젝트의 디렉토리로 가서 ndk-build를 실행한다. 그러면 jni-sample1.so 파일이 libs 폴더 아래에 만들어 진다.
  5) 소스에서 다음과 같이 설정하면 사용할수 있다.
publicclass JNISample1 extends Activity {
    static {
        System.loadLibrary("jni-sample1");
    }
    public native String  stringFromJNI();

No comments:

Post a Comment