새로 생성된 모듈인 Android Lib에서, 기존과 동일하게 Java Class를 생성.
이름은 자유로 하되, 예시에서는 NativeCode로 지정.
static { ndklib는 생성한 Android Lib의 이름을 설정. |
public native String nativeString(); 사용할 함수의 설정을하면 된다. 여기서는 String 타입을 리턴하는 Argument가 없는 간단한 코드. |
작성이 완료된 후에 이전에 설정해 둔 External Tools를 사용하려 하면 인식이 안된다.
[Ctrl+Shift+F10]이나 오른쪽 클릭을 통해 build를 하자.
이후 헤더파일을 생성하면 작동이 잘 되는것을 알 수 있다.
Function의 name은 Java_[패키지 명]_[lib 이름을 포함한 클래스 이름]_[native function 이름]
으로 구성된다.
Argument는 다음과 같다.
JNIEnv : JNI의 환경정보가 담긴다.
Jobject : 현재 클래스를 가리킴
이후에 생성되는 Argument는 사용할 함수의 Argument와 동일하다.
헤더파일의 생성이 끝나면, jni 폴더에 .cpp파일을 생성하고 코드를 작성하면 된다.
여기서, 헤더의 include는 방금 생성된 헤더파일, 함수명은 위 헤더의 15-16번째 줄과 동일하게 작성한다.
이후 작업은 gradle과 연동이다.
jni폴더에 Android.mk 라는 File을 생성 후 다음과 같이 작성한다.
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ndklib FILES := NativeCode.cpp LOCAL_SRC_FILES := $(FILES) LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY) |
LOCAL_MODUL에는 생성한 Android Lib의 이름을 작성 FILES에는 작성한 cpp코드의 이름을 작성 |
이후, Java>(lib 이름) 안에있는 Java클래스 파일을 오른쪽 클릭하고, gradle 연동을 한다.
Bulid System은 이전 External Tools인 ndk-build를, Project Path는 방금 작성한 Android.mk파일이다.
이작업을 완료하면, 해당 lib의 gradle에 설정된 것을 알 수 있다.
이후 Java클래스 파일을 오른쪽 클릭하고, External Tools인 ndk-build를 실행한다.
Nation Lib 사용법은 다음과 같다.
방금 만든 Lib 객체를 생성하고, [ALT+ENTER]으로 추가해준다.
여기서 Add dependency on module을 클릭.
app의 gradle에 추가된 것을 볼 수 있다.
'안드로이드' 카테고리의 다른 글
Android NDK Bitmap에 대한 Description (0) | 2020.04.18 |
---|---|
Android NDK 사용법 (0) | 2020.04.14 |