<개발>/<여개지>

[Android] JNI 함수 빌드

gosoeungduk 2023. 5. 30. 15:37
반응형

안까먹으려고 메모

1. Tools - SDK Manager - SDK Platforms 에서 버전에 맞는 SDK 다운

2. SDK Tools 에서 NDK 다운

3. 앱 디렉토리에 jni 관련 코드를 넣을 디렉토리 생성(나의 경우는 jni)

4. jni 코드 파일을 비롯하여 Android.mk, Application.mk 생성

5. Android.mk 정의

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hook-detect
LOCAL_SRC_FILES := hook-detect.cpp
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)

6. Application.mk 정의 => 타겟 아키텍처 정의가능

APP_ABI := all

7. JNI 함수 정의

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_testjni_MainActivity_getget(JNIEnv *env, jclass thiz){
    jstring myname = env->NewStringUTF("jniajni");
    return myname;
}

8. build.gradle 에 체크 표시한 항목 추가

9. External Tools 에 정의한 ndk-build.cmd 로 jni so 라이브러리 빌드

[+] 10. Kotlin 의 경우 아래와 같이 native 함수 불러오면 된다.

init {
        System.loadLibrary("Injector")
    }
    private external fun getget() : String
반응형