[개발환경]
1. Cygwin 설치
가. http://www.cygwin.com 에서 다운받는다.
나. Select package 화면에서 gcc-core, g++, make 패키지를 검색해서 설치한다.
2. NDK 설치
가. http://developer.android.com/sdk/ndk/index.html 에서 다운받아 압축을 푼다.
나. 시스템 변수 path영역에 압축푼 경로를 추가한다.
ex) D:\AndroidNDK\android-ndk-r6b
3. 테스트
가. cygwin을 실행해서 >ndk-build 를 실행하여 관련 메시지가 나타나는지 확인한다.
[개발 테스트]
1. Android 프로젝트를 생성한다.
가. 프로젝트 생성 : NDKExam
// =start=======================================================
package org.example.ndk;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class NDKExam extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
TextView tv = new TextView(this);
int x = 1000;
int y = 42;
System.loadLibrary("ndk-exam");
int z = add(x, y);
tv.setText("The sum of " + x + " and " + y + " is " + z);
setContentView(tv);
}
public native int add(int x, int y);
}
// = end =======================================================
2. 헤더 생성은 링크 클릭 => JNI 네이티브 함수 헤더 생성하기
3. JNI 네이티브 함수 구현하기
가. eclipse 패키지에서 "jni" 폴더 생성한다.
나. second.c 파일을 생성한다.
// =start=======================================================
#include "first.h"
#include <jni.h>
jint Java_org_example_ndk_NDKExam_add(JNIEnv* env,
jobject this, jint x,
jint y)
{
return first(x, y);
}
// = end =======================================================
다. first.c 파일을 생성한다.
// =start=======================================================
// first.c
#include "first.h"
int first(int x, int y)
{
return x + y;
}
// = end =======================================================
라. first.h 파일을 생성한다.
// =start=======================================================
// first.h
#ifndef FIRST_H
#define FIRST_H
extern int first(int x, int y);
#endif /* FIRST_H */
// = end =======================================================
마. jni 폴더에 Android.mk 파일을 생성한다.
// =start=======================================================
# 소스 파일 위치
LOCAL_PATH:= $(call my-dir)
# Make 관련 환경 변수를 초기화
include $(CLEAR_VARS)
# 라이브러리를 빌드하기 위한 정보 생성(라이브러리 이름, 소스 코드등)
LOCAL_MODULE := ndk-exam
LOCAL_SRC_FILES := first.c second.c
# 공유 라이브러리 생성
include $(BUILD_SHARED_LIBRARY)
// = end =======================================================
※ Android.mk 작성 문법 관련해서는 <NDK_HOME>\docs 파일 참조
바. <PROJECT-ROOT>ndk-build 실행
사. eclipse에서 android run하여 에뮬이나 디바이스에서 결과 확인.
댓글 없음:
댓글 쓰기