JNI를 이용한 NDK 연동
테스트 환경 : Android Studio 2.3 (2.2버전 이상부터 JNI 연동 방식 변경)
안드로이드 프로젝트를 새로 만들어 줍니다. New Project 에서 어플리케이션 이름입력 후 아래 CheckBox Include C++ support를 체크하고 Next로 넘어갑니다. 다음 설정방법은 동일하며 Next로 끝까지 넘어가 Customize C++ Support 부분에서 디폴트 상태로 Finish 해줍니다. 프로젝트 로딩시간이 다소 길어 기다려주시면 됩니다.
기존의 프로젝트와 동일하지만 cpp라는 폴더와 CMakeLists.txt가 추가 되었습니다.
제가 기존에 셋팅을 해 두어서 자동으로 설정이 된 것인지 확인이 안되어,
SDK Tools에서 CMake, LLDB, NDK 를 설치합니다.
CMake : Gradle과 함께 작동하여 네이티브 라이브러리를 빌드하는 외부 빌드 도구.
LLDB : Android Studio가 네이티브 코드를 디버그하는데 사용하는 디버거.
기본설정을 완료하였습니다. 이제 테스트 해 봅시다.
package com.yoohyeok.ndk_test;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Example of a call to a native method
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}
native-lib.cpp
#include <jni.h>
#include <string>
extern "C"
JNIEXPORT jstring JNICALL
Java_com_yoohyeok_ndk_1test_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
출처: https://yoo-hyeok.tistory.com/72 [유혁의 엉터리 개발]
설명입니다. 기본적으로 만들어진 어플리케이션을 실행하면 native-lib.cpp 내의 c++ 코드 std::string hello = "Hello from C++" 이 출력됩니다. native-lib.cpp 에서 C++ 작업을 진행합니다. cpp 폴더에 원하는 cpp 파일을 생성 후 작업을 진행하면 되고 MainAcitivity.class 에서 public native String stringFromJNI();를 선언하여 네이티브 코드를 사용할 수 있도록 선언해 줍니다. TevtView setText 메소드를 이용하여 네이티브 코드를 적용합니다.
C에 최적화되어 있는 알고리즘이나 영상처리 오픈소스 등등 안드로이드에서 NDK를 통해 연동개발이 가능합니다
출처: https://yoo-hyeok.tistory.com/72 [유혁의 엉터리 개발]
출처: https://yoo-hyeok.tistory.com/72 [유혁의 엉터리 개발]
'Android NDK' 카테고리의 다른 글
Android OCR (0) | 2021.11.16 |
---|---|
Android NDK 빌드툴인 NDK-Build 와 CMake 정리 (0) | 2020.11.16 |
안드로이드 윈도우에서 ffmpeg 설치 (0) | 2019.09.14 |
Cygwin 설치하기 - 윈도우에서 리눅스 개발환경 구축 (0) | 2019.09.14 |
안드로이드 NDK 란? (0) | 2019.09.09 |