안드로이드에서는 오디오 재생을 위해 android.media API를 제공합니다.

기본적인 플레이만 필요하다면 패키지 안에 있는 미디어플레이어 클래스를 활용하면 됩니다.


하지만 기본적인 미디어플레이어를 사용할 경우 레이턴시가 존재하기 때문에 빠른 반응속도를 요구하는 앱을 개발하기 위해서는 NDK를 사용해 볼 필요가 있어 보입니다.


NDK에 대한 내용은 아래 링크를 클릭하면 됩니다.

https://developer.android.com/ndk/guides/?hl=ko


이 글을 읽고 과연 NDK가 필요할지에 대한 고민은 직접 해보시기 바랍니다.


NDK에서 재공되는 기본 샘플 "native-audio" 를 실행해 보기 위해 NDK를 설치해 보고 안드로이드 스튜디오에서 실행해 보겠습니다.


우선 NDK를 다운로드 받아 봅니다.


아래 링크에서 자신의 컴퓨터 사양에 맞는 버전을 다운로드 합니다.

https://developer.android.com/ndk/downloads/?hl=ko


설치 방법은 Apache Maven 설치 방법과 비슷합니다.

1) zip 파일을 다운로드 받아서 프로그램 폴더에 압축을 해제합니다.

ex) "C:\Program Files\android-ndk-r17"

2) 해당 경로를 환경변수 path에 추가합니다.


설치가 완료되면 샘플 파일을 다운로드 받습니다.

아래 링크를 클릭해서 zip 파일을 다운로드 받은 후 적당한 폴더에 풀어주세요.

https://github.com/googlesamples/android-ndk


안드로이드 스튜디오에서 native audio 프로젝트를 열어봅니다.


열어보면 아래와 같은 오류 메시지가 나타나면서 실행이 되지 않습니다.


Migrate Project to Gradle?

This project does not use the Gradle build system.

We recommend that you migrate to using the Gradle build system.

More Information about migrating to Gradle

Don't show this message again.


인터넷으로 찾아보니 Gradle 형식이 아니기 때문에 나타나는 문제라고 하네요.

프로젝트를 닫고 open project가 아닌 import project로 해당 폴더를 선택해서 열어봅니다.


이번엔 다른 메시지가 나타납니다.


Error:Could not find com.android.tools.build:gradle:3.1.2.

Searched in the following locations:

https://jcenter.bintray.com/com/android/tools/build/gradle/3.1.2/gradle-3.1.2.pom

https://jcenter.bintray.com/com/android/tools/build/gradle/3.1.2/gradle-3.1.2.jar

Required by:

project :

<a href="add.google.maven.repository">Add Google Maven repository and sync project</a><a href="openFile:P:\Programming2018\AndroidStudioProjects\AIJTestProjects\native-audio\build.gradle">Open File</a>

<a href="enable.embedded.maven.repository">Enable embedded Maven repository and sync project</a>


위에 있는 Add Google Maven repository and sync project 글씨를 클릭하면 다시 빌드가 되면서 오류메시지가 사라집니다.


이제 앱 실행이 가능하게 됬네요.


하지만 실행하면 다른 오류가 발생합니다.


Error: Your project contains C++ files but it is not using a supported native build system.

Consider using CMake or ndk-build integration. For more information, go to:

 https://d.android.com/r/studio-ui/add-native-code.html

Alternatively, you can use the experimental plugin:

 https://developer.android.com/r/tools/experimental-plugin.html


SDK Manager 에서 SDK Tools 탭에 있는 CMake LLDB NDK 3가지를 설치해야 된다고 나와있네요. 3가지를 선택하고 OK 버튼을 클릭하면 안드로이드 스튜디오에 해당 Tool이 설치됩니다.


그리고 마지막으로 "Link C++ Project with Gradle" 옵션을 선택해 줘야 합니다.

새 프로젝트 생성때는 체크박스를 선택하면 되지만 기존 예제를 가져온 경우에는 

상단메뉴 File - Link C++ Project with Gradle 메뉴에서 Build System을 ndk-build를 선택한 후에 cpp 파일이 있는 폴더안에 있는 "Android.mk" 파일을 선택하고 OK버튼을 클릭하면 선택이 완료됩니다.

+ Recent posts