본문 바로가기

공부/NDK

[NDK] 애플리케이션을 C/C++로 만들어보자!

반응형

저는 여태까지 애플리케이션이 자바로만 가능하다고 생각해서 별로 관심이 없었는데..

이제보니까 안드로이드 개발을 위해 두가지의 방법이 있더라구요!


첫번째로 SDK !

SDK는 Software Delvelopment Kit의 약자입니다.

일반적으로 안드로이드 애플리케이션을 개발할 때에는 자바를 통해서 SDK로 개발을 하는것이 보통이죠!


두번째로 NDK !

NDK는 Native Development Kit의 약자입니다.

Native라는 말 그대로 C/C++을 사용할 수 있죠!


NDK는 하드웨어를 직접 조작하거나 이전에 만들었던 코드를 이식하고 싶을 때, 특별한 목적이 있는 경우 많이 사용된다고 하네요! 특히 2D/3D 개발을 할때 많이 사용하는 것 같습니다! (SDK에서도 OpenGL ES를 어느정도 사용가능한 것으로 알고 있습니다.)


역시 C/C++답게 약간의 성능향상도 기대할 수 있다고 합니다.


그리고 자바와 C/C++을 연결하기 위해서는 JNI가 필요합니다!

#include<jni.h>를 하고 아래처럼 적절하게 함수를 만들면 해당 함수를 SDK에서도 사용할 수 있게되는 것이죠!

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_sd_ndk_1practice_NDKPractice_getMyData(
JNIEnv *env, jobject) {
std::string hello = "SangDoLee";
return env->NewStringUTF(hello.c_str());

여기서 볼 수 있듯이, C/C++을 이용하여 만든 함수는 이름마저도 살짝 복잡하네요...


JNI를 이용해서 만든 함수명은


JNIEXPORT <함수타입> JNICALL Java_<패키지명>_<클래스명>_<함수명>


출처: http://lueseypid.tistory.com/229 [감성 개발자!]


위와 같은 양식을 따른다고 합니다!



마지막은 NDK를 이용해서 만든 저의 어플로!


코드는 Git으로 첨부한 뒤에 바로 링크를 올려드리겠습니다!


https://github.com/sangdo913/OpenGLESPractice/tree/master/NDKPractice1

반응형