전키의 방황일지
article thumbnail

 

안드로이드 프로젝트를 진행하던 도중, C언어로 작성된 코드를 활용해야 하는 이슈가 발생했다.

구글링을 해보니 JNI를 사용하면 자바 언어에서 C나 C++ 소스 파일을 가져와 사용할 수 있다고 하길래 테스트를 해보면서 포스팅을 올리게 되었다.

 

NDK, JNI란?

 

NDK (Native Development Kit) 

안드로이드에서 제공하는 ndk는 C, C++ 로 구성된 네이티브 코드로 앱의 일부를 구현할 수 있게 해주는 도구이다.

 

 

JNI (Java Native Interface)

자바와 네이티브 언어를 연결해주는 인터페이스를 말한다.

안드로이드의 NDK를 이용해서 JNI를 구현하게 될 것이다.

 

 

개발환경

 

C/ C++ 소스 코드가 필요하다는 생각이 들자마자 지레 겁을 먹었다. 나는 아직까지 unmanged 언어에 익숙하지 않은가보다...

하지만 안드로이드의 NDK를 사용하면서 가장 편했던 부분은 별도로 C/C++ 소스 코드를 짜지 않아도 된다는 것이었다.

내가 작업한 개발 환경은 다음과 같다.

 

Android Studio : 2020.3.1 Arctic Fox

JDK(java) : 안드로이드 내장 jdk 11버전

NDK : latest 버전 (작성일 기준 : 22.xx)

 

 

작업 순서

 

안드로이드에서 JNI를 사용하기 위한 작업 순서는 다음과 같다.

 

  1. NDK 설치
  2. NDK 환경 설정
  3. 자바 코드에 네이티브 메서드 선언
  4. C/C++파일 생성
  5. 헤더파일 생성
  6. Android.mk / Application.mk 생성

중간에 알 수 없는 오류때문에 많이 헤맸지만, 그 과정까지 자세히 적어보도록 할 것이다.

 

 

JNI를 추가하자!

 

Task1. NDK 설치

작업 중인 프로젝트 기준, [Tools - SDK Manager]를 클릭하고 SDK Tools탭을 보면 NDK가 딱 보인다.

묻지도 말고 따지지도 말고, 체크해주고 바로 설치한다. (패키지 용량이 커서 그런지, 설치 시간이 조금 걸린다.)

설치 완료됐다하면 1단계는 끝.

 

 

Task2. NDK 환경 설정

 [File - Project Structure] 를 클릭해 SDK 경로 설정 창을 들어간다.

NDK가 설치되면 보통 저기에 경로가 세팅된다고 하던데 나는 빈칸으로 되어있고 설정 버튼도 비활성화 되어 있었다.

따라서, NDK 경로를 설정해주기 위해 프로젝트에서 별도로 세팅을 해주어야 했다.

 

프로젝트의 local.properties 파일을 들어가서 다음처럼 ndk 경로 설정을 직접 해주면 된다.

 

 

Task3. 자바 코드에 네이티브 메서드 선언

이제 JNI를 사용하기 위한 C/C++ 네이티브 코드를 프로젝트에 추가해주면 된다.

static{
	System.loadLibrary("jniCalculator");
}

public native int getSum(int num1, int num2);

 

외부 라이브러리를 불러오기 위해서 System클래스의 메서드인 loadLibrary를 사용한다.

 

Task4. C/C++ 파일 생성

 

Task5. 헤더파일 생성

 

Task6. Android.mk/ Application.mk 파일 생성

 

 

 

 

 

 


 포스팅을 마치며...

--


👀 Reference

여름숲님의 블로그 : 안드로이드 스튜디오에서 JNI 사용하기

 


 

'Programming > Java' 카테고리의 다른 글

[Java/ Android] Bluetooth 페어링 및 연결하기  (0) 2021.12.02
profile

전키의 방황일지

@전키

인테리어와 운동에 관심이 많은 개발자입니다 :)