본문 바로가기

개발/android

안드로이드 카메라 공부 6

반응형

JNI: Java Native INterface - 네이티브 라이브러리에 포함된 함수 호출 가능하게 해줌

CMake :네이티브 라이브러리용 Android Studio Build Tool (NDK 빌드만 할 경우에는 노필요)

Android NDK : 안드로이드에서  C, C++ 코드 쓰게 지원 및 센서, 터치등 물리 기기 접근 할 수 있는 플랫폼 라이브러리를 제공 해주는 Toolbar


https://developer.android.com/studio/projects/add-native-code?utm_source=android-studio#existing-project


cpp 폴더 : 프로젝트에 포함된 모든 네이티브 소스 파일, 헤더, 빌드 라이브러리들을 찾게 해준다

안드로이드 스튜디오 새프로젝트로 만드는 경우 샘플 C++ 파일인 native-lib.app 파일을 만들어서 src/main/app에 위치해준다 

External Build Files : Cmake, ndk- build 빌드 스크립트 확인 

CMakeLists.txt : 새 프로젝트로 생성 한 프로젝트의 경우, 안드로이드 스튜디오에서 기본 생성해주는 CMake 빌드 스크립트 


기본 프로젝트 돌아가는 순서

Gradle - CMakeLists.txt 호출 - CMake가 동작하고, 내부 빌드 스크립트에 따라 C++소스 파일인 native-lib.app 을 libnative-lib.so로 컴파일하면 

Grable이 apk로 패키징 - 런타임시 앱의 MainActivity가 System.loadLibrary() 사용해서 네이티브 라이브러리 로드 - native 함수 stringFromJIN() 자바코드에서 사용 가능

(참고 : Instant Run은 네이티브 코드 플젝에서는 호환 안된다고 한다)


안드로이드 스튜디오 도구에서 Build/Analyze APK  사용시, libnative-lib.so(컴파일 된 C++ 소스 파일) 을 확인 가능하다


(참고 :CMake 빌드 스크립트 생성시, 만약 프로젝트 내에서 ndk-build를 사용하면 CMake 빌드 스크립트를 만들 필요가 없다고 한다)


ndk-build: NDK Make 기반 빌드 시스템을 사용하는 프로젝트를 빌드


https://developer.android.com/ndk/guides/ndk-build.html


CMake 내부에서 네이티브 라이브러리 만드는 것을 명령하려면 cmake_minimum_required(), add_library() 명령을 쓰면 된다고 한다


add_library()로 소스파일, 라이브러리 CMake 빌드 스크립트에 추가하려고 할 때에는 프로젝트 동기화 한번 해주어야 함

컴파일시 헤더 파일을 찾게 하기 위해서 include_directories()로 헤더 경로 지정해줘야 함 


자바 코드에서 라이브러리를 불러 올 때에는 

static{

System.loadLibrary("native-lib")

}


을 통해 불러온다 


NDK API를 추가하려면

CMakeLists.txt에 find_library 해주고 target_link_libraries()까지 해주어 APK로 패키징해주고

add_library 해주어야 하지만,

미리 빌드된 라이브러리를 추가 할때는, add_library만 해주면 된다

반응형