개발 (develop)

[Android] 기존 프로젝트에 NDK 적용 방법 정리

삽질그만 2021. 9. 10. 10:21

NDK 프로젝트를 매번 진행할때마다 설정을 구글에 검색하고 있는 저를 보며
이번 기회에 정리해야겠다 벼루고 있었는데 게을러서 미루기를 수차례
드디어 칼을 뽑아 정리합니다.
기존 프로젝트에 NDK 를 설정하는 방법을 정리한다고 했으나
내용은 프로젝트 생성부터(Java) 설정으로 정리하려고 노력했습니다.
그리고 정리하다 보니 Mac 과 Window 가 환경이 달라 경로 설정도 다른것을 확인하여
경로는 각각 정리하였습니다.
전반적인 내용은 빌드되는 운영체제 상관없이 같으니 참고해서 봐주세요.
.so 파일만 가지고 연결하는 법은 아래에 포스팅에 설명 되어 있습니다.
[Android/NDK] 기존 프로젝트에 .so 파일 연결하는 법

목적

NDK 프로젝트를 사용하는 목적은 여러가지가 있으나
제가 경험한 사항은 주로 라이브러리를 구성할때 사용되었습니다.
경험 사례를 기초로 목적을 정리해보면 다음과 같습니다.

  1. 빌드되는 .so 확장자 파일에 내용을 구성해서 보안을 높이기 위함
  2. C/C++ 로 구성하여 성능 향상 위함
  3. 고성능의 그래픽 혹은 OpenCV, 머신러닝등의 라이브러리와 연결하기 위함

경험한 사례의 공통적인 사항은
C/C++ 로 프로젝트를 전체적으로 구성하는 사항이 아닌
부분적으로 필요한 기능만 구현했기 때문에
기존 프로젝트에 NDK 환경을 연결하는 경우가 많았습니다.

용어

생소할수 있는 용어를 간단하게 정리하면 다음과 같습니다.

JNI

자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 가상 머신(JVM)위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들) 그리고 C, C++ 그리고 어샘블리 같은 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다. - 위키백과

NDK

NDK(Native Development Kit)는 Android에서 C 및 C++ 코드를 사용할 수 있게 해주는 일련의 도구 모음 - Android 공식홈페이지

.so

so(Shared Objec)는 C/C++ 컴파일 후 빌드를 하기 위한 파일 Run Time에 Linking 이 되며 .a 파일은 자체적으로 실행 할 수 있으나 .so 파일은 자체적으로 실행을 할 수 없고 외부와 Linking 되는 환경이 있어야 실행 가능

과정

간단하게 요약해보면 다음과 같습니다.

  1. NDK 관련 파일 설치
  2. 경로 설정
  3. 폴더 구성
  4. Java 와 NDK 연결을 위한 설정 및 .h 파일 구성
  5. .so 파일 생성 및 .c, .cpp 파일 빌드를 위한 구성
  6. 빌드 후 실행

그리고 이 과정 중 4번과 6번 과정은 cmd 명령어로 대체 할 수도 있습니다.
우선 AndroidStudio IDE 설정을 먼저 소개하고 cmd 명령을 별도로 다루겠습니다.

프로젝트 시작

포스팅 주제가 기존 프로젝트에 NDK 를 설정하는 방법이기 때문에
예제 프로젝트는 Java 나 Kotlin 프로젝트 생성했던 그대로 동일하게 생성합니다.

생성을 다했다면 왼쪽 File Explorer 의 상태바를 기본 설정인 Android 에서 Project 로 변경해줍니다.

설치

AndroidStudio 에서 NDK 를 사용하기 위해서는 SDK Manager 를 통해 관련 파일들을 설치해줘야 합니다.

LLDB, NDK, CMake 를 선택하여 설치합니다.

[ 자세한 개발 방법 및 샘플 ]
더 많은 내용을 보시려면 아래 링크에서 확인 하세요...
https://cafe.naver.com/devms/16

[Android] 기존 프로젝트에 NDK 적용 방법 정리

대한민국 모임의 시작, 네이버 카페

cafe.naver.com


출처 : https://question0.tistory.com/m/39