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 설치 및 활용예제 테스트 끝
'Andriod' 카테고리의 다른 글
안드로이드 커널 nfs 설정 (0) | 2013.03.06 |
---|---|
안드로이드 개발 환경 구축 windows 7 64bit (안드로이드 툴바 문제 해결) (0) | 2013.02.19 |