이번 포스팅에서는 NDK와 JNI에 대해 알아본다.
✅ NDK ?
Native Development Kit 의 약자로,
Android에서 C · C++ 코드를 사용할 수 있게 해주는 도구 모음이다.
지난 안드로이드에서의 C언어 사용 관련 포스팅에서도 언급했다시피,
기기의 성능을 최대한 활용해야하는 컴퓨팅 집약 앱을 개발할 때
유용하게 사용할 수 있다며 공식 문서에서 소개되고 있다.
● 조금 더 세부적인 사용 사례
- 게임 개발
- FFmpeg와 같은 라이브러리를 통합하여 비디오 처리
- OpenCV와 같은 고성능 라이브러리를 활용한 이미지 처리
- 그 외 저수준 언어로 작성된 특화된 알고리즘 적용
● 구성 요소
- 헤더 파일 : Android API에 대한 헤더 파일 제공
- 빌드 도구 : ndk-build와 Gradle을 사용하여 네이티브 라이브러리 컴파일
- 디버깅 도구 : LLDB와 같은 디버거 제공
- 샘플 코드 : NDK를 활용하는 예제 제공
● 빌드 방법
NDK로 코드를 빌드하는 방법은 크게 3가지가 있다.
- Make 기반 ndk-build
Android.mk, Application.mk 사용하여 빌드하며, 간단한 프로젝트에 적합한 방식이다.
- CMake
NDK 최신 표준 빌드 도구이며, Gradle 빌드 시스템과 호환이 좋다.
비교적 복잡한 프로젝트나 크로스 플랫폼 프로젝트에 적합한 방식이다.
- 독립 실행형 도구 모음(Standalone Toolchain)
NDK의 크로스 컴파일러와 빌드 도구를 사용하며, 크로스 플랫폼 프로젝트에 적합하다.
주로 외부에서 다른 빌드 시스템을 함께 사용하는 경우 사용한다.
NDK 공식 문서 ↓
✅ JNI ?
Java Native Interface의 약자로,
네이티브 언어로 작성된 코드를 Java에서 사용할 수 있게 해주는 인터페이스다.
즉, C로 작성된 코드와 Java로 작성된 코드를 연결해주는 역할을 한다.
Java 코드가 C 코드를 호출하거나, 그 반대로도 호출할 수 있는 일련의 API를 제공하는 셈이다.
JNI 덕분에 Java와 네이티브 간에 데이터 교환을 할 수 있고,
네이티브 언어로 복잡하게 짜여진 코드도 함수 한 줄로 불러와 Java에서 간편히 사용할 수 있다.
사실상 안드로이드 환경에서 네이티브 언어를 사용할 수 있게 해주는 건 JNI 다.
그리고 JNI를 사용할 수 있게 해주는 도구가 NDK 라고 정리할 수 있겠다.
JNI 공식 문서 ↓
다음 포스팅에서는 JNI를 직접 사용해볼 예정이다.
'Android (안드로이드)' 카테고리의 다른 글
[Android] NDK / JNI (3) - CMake 방식 적용 (1) | 2024.12.09 |
---|---|
[Android] NDK / JNI (2) - 적용해보기 (2) | 2024.12.06 |
[Android] 안드로이드 환경에서 C언어 사용 이유? / Java · C 성능 차이점 (5) | 2024.12.02 |
[Android] libvlc - RTSP 스트리밍 연결 (7) | 2024.11.29 |
[Android] ExoPlayer - RTSP 스트리밍 연결 (0) | 2024.11.28 |