본문 바로가기

Andriod

Android NDK(Native Development Kit ) 설치

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Native Development Kit

안드로이드 NDK 설치 및 활용예제 테스트

철저히 내위주임을 밝힘 (내가 자꾸 까먹음)

 

안드로이드 NDK 설치

1. 다운로드

  • NDK

http://developer.android.com/tools/sdk/ndk/index.html

각자에 맞는 OS용 다운

  • Cywin

http://www.cygwin.com/ 여기서 다운로드

 

 

설치시 devel editor 체그만 하고 중간에 서버 선택 하는거 아무거나 하고 넥넥넥

2. 설치




부연 설명을 하자면 첫 번째는 패키지 다운로드 하면서 설치를 하는것이고

2번째는 다운로드만 하는 것이고

3번째는 다운로드만 한것을 설치하는 것이다

참고로 난 2,3번을 이용했다


 

다운로드 받을 주소를 정하는 것인데 아무데나 해도 상관없다

하지만 속도를 위해선 http://ftp.daum.net 등 우리나라 및 가까운 일본을 선택 하는것이 좋다


devel

editors

를 선택하고 넥넥 하고 끝낸다

설치가 완전 오래 걸리면서 뭔가 이상하다....... 싶어서

2,3번을 이용하게 된거다

아이콘 실행하면 도스창? 리눅스 창? 모르겠다 시그윈창 이 뜬다 ㅋㅋㅋㅋㅋ

참고로 dir == ls 도 먹힌다.

Cygwin 이 설치된 폴더 안의 home에 위에서 받은 NDK 파일을 복사한다.

- C:\cygwin\home/계정명/ 여기에다가 ndk.zip 압축을 풀어버린다

요래 되면 설치는 끝난다.

커서에 아래 처럼 명령을 내리면 아래 사진과 같이 텍스트 문서가 나온다

vim .bash_profile

PATH=$HOME/bin:$PATH:/cygdrive/c/cygwin/android-ndk-r8c-windows/

아래 설정은 ndk-build를 아무데서 사용하기 위한 설정

리눅스의 편집기 이므로 못쓰는 사람은 윈도에서 텍스트로 여시길......

3.예제 TEST

그리고 이클립스 시작 ~~







NativeCall.java 에 아래 내용 추가

public class NativeCall
{
static
{
System.loadLibrary("NaviveCall");
}
public native String stringFromJNI();
public native int add(int a, int b);
}

여기 까지 추가한후

MainActivity.java 에 아래 코드를 추가

public class MainActivity extends Activity {
/** Called when the activity is first created. */
private Button bv;
private TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

bv = (Button)findViewById(R.id.callbtn);
tv = (TextView)findViewById(R.id.rettxt);

bv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
NativeCall nativeCall = new NativeCall();
int ret = nativeCall.add(10, 20);
String retStr = nativeCall.stringFromJNI();
Log.i("TAG", retStr + ret);
tv.setText(retStr);
}
});
}
}

실행을 시킨다.

프로젝트에 jni 폴더를 만든다

그리고

난 워크 스페이스가 D: 에 설정이 되있어 경로가 길다

순서는 이렇다.

1. 현재 워크 스페이스 프로젝트 폴더의 bin/classes 로 이동한다.

2. javah 패키지명.클래스명 날린다.

3. dir | ls 로 헤더가 생겼는지 확인

4. 그 헤더를 jni 폴더로 이동 하는데 mv 명령으로 옮겨도 되고 윈도상에서 옮겨도 된다

5. 옮긴뒤 아래 사진과 같이 c파일을 만든다

NativeCall.c 파일 내용

#include "com_example_ndktest_NativeCall.h"

JNIEXPORT jstring JNICALL Java_com_example_ndktest_NativeCall_stringFromJNI
(JNIEnv *env, jobject obj)
{
return (*env)->NewStringUTF(env, "Hello JNI!");

}


JNIEXPORT jint JNICALL Java_com_example_ndktest_NativeCall_add
(JNIEnv *env, jobject obj, jint ntemp1, jint ntemp2)
{

return ntemp1+ntemp2;
}

사진 찍기 귀찮다...

jni 폴더에 Android.mk 파일을 만든다

내용은 아래와 같다

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := NativeCall
LOCAL_SRC_FILES := NativeCall.c

include $(BUILD_SHARED_LIBRARY)

그리고 아래 와 같이 ndk-build 명령을 날린다.

 

 

 

나는 위의 경로 설정 때문에 삽질을 한후 다시 껏다 켜서 다시 디렉토리 이동을 한것임

위와 같은 했다면 이클립스 내부폴더에

생겼을것이외다

물론 실행하면 단순히 버튼누르고 hellojni 란 text만 나올텐데

조금 변형해서 아래 같은 결과를 만듬 ㅎㅎ

안드로이드 NDK 설치 및 활용예제 테스트 끝