개발 환경 준비: Android NDK를 이용한 사용자 정의 Android Daemon 구축
Android NDK를 활용하여 C/C++ 기반의 사용자 정의 Android Daemon을 개발하기 위해서는 먼저 개발 환경을 올바르게 설정해야 합니다. 본 글에서는 Android NDK 설치 및 설정, CMake 및 Gradle 설정 방법, 그리고 Android Studio 및 CLI(Command Line Interface) 빌드 환경 구성 방법을 다룹니다.
1. Android NDK 설치 및 설정
Android NDK(Native Development Kit)는 Android 애플리케이션에서 C 및 C++ 코드를 활용할 수 있도록 지원하는 개발 도구입니다. 사용자 정의 Daemon을 개발하려면 우선 Android NDK를 설치해야 합니다.
1.1 Android NDK 다운로드 및 설치
Android NDK는 Android Studio의 SDK Manager를 통해 설치할 수 있습니다.
- Android Studio 실행
- [Tools] > [SDK Manager] 이동
- [SDK Tools] 탭으로 이동
- "NDK (Side by side)" 옵션 체크
- "Apply" 버튼 클릭 후 설치 진행
설치가 완료되면, NDK의 설치 경로는 일반적으로 다음과 같습니다:
$ANDROID_SDK/ndk/<version>
만약 CLI를 이용해 설치하고 싶다면, 아래 명령어를 실행하면 됩니다.
sdkmanager --install "ndk;25.1.8937393"
1.2 환경 변수 설정
NDK를 정상적으로 사용하기 위해서는 환경 변수를 설정해야 합니다.
Linux 및 macOS
export ANDROID_NDK_HOME=$ANDROID_SDK/ndk/<version>
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
Windows (PowerShell)
$env:ANDROID_NDK_HOME="C:\Path\To\Android\Sdk\ndk\<version>"
$env:Path += ";$env:ANDROID_NDK_HOME\toolchains\llvm\prebuilt\windows-x86_64\bin"
환경 변수를 설정한 후, 터미널에서 다음 명령어를 실행하여 정상적으로 설정되었는지 확인합니다.
clang --version
2. CMake 및 Gradle 설정 방법
Android NDK 프로젝트에서 CMake 및 Gradle을 적절하게 설정하는 것이 중요합니다.
2.1 CMakeLists.txt 설정
NDK를 이용한 프로젝트에서 CMake를 활용하면 C/C++ 코드를 빌드할 수 있습니다. 프로젝트의 CMakeLists.txt
파일을 다음과 같이 설정합니다.
cmake_minimum_required(VERSION 3.10)
project(my_daemon)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_library(
my_daemon
SHARED
src/main/cpp/daemon.cpp
)
find_library(
log-lib
log
)
target_link_libraries(
my_daemon
${log-lib}
)
이 설정을 통해 daemon.cpp
파일을 컴파일하고 Android의 로그 라이브러리(log
)와 연결합니다.
2.2 Gradle 설정
Gradle 빌드 스크립트에서 NDK 관련 설정을 추가해야 합니다. app/build.gradle
의 android
섹션을 수정합니다.
android {
compileSdkVersion 33
ndkVersion "25.1.8937393"
defaultConfig {
applicationId "com.example.mydaemon"
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
externalNativeBuild {
cmake {
cppFlags "-std=c++17 -frtti -fexceptions"
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
version "3.10.2"
}
}
}
이 설정을 통해 Gradle이 CMakeLists.txt
를 인식하고, NDK 빌드 시스템과 통합됩니다.
3. Android Studio 및 CLI 빌드 환경 구성
3.1 Android Studio에서 NDK 프로젝트 열기
- Android Studio를 실행합니다.
- [File] > [New] > [Import Project] 선택합니다.
CMakeLists.txt
가 포함된 프로젝트 디렉터리를 선택합니다.build.gradle
을 수정한 후,Sync Now
버튼을 클릭하여 변경 사항을 적용합니다.
3.2 CLI에서 빌드하기
Android Studio 없이 CLI에서 NDK 프로젝트를 빌드하려면, 다음 명령어를 실행합니다.
./gradlew assembleDebug
또는, NDK 빌드 시스템을 직접 활용할 수도 있습니다.
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk
빌드가 완료되면, app/build/outputs/apk/debug/
디렉터리에 apk
파일이 생성됩니다.
4. 간단한 Android Daemon 예제
NDK를 이용하여 Android에서 Daemon을 실행하는 간단한 예제 코드를 작성해 보겠습니다.
4.1 C++ Daemon 코드 (daemon.cpp
)
#include <jni.h>
#include <pthread.h>
#include <android/log.h>
#include <unistd.h>
#define LOG_TAG "MyDaemon"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
void* daemon_thread(void* arg) {
while (true) {
LOGI("Daemon is running...");
sleep(5);
}
return nullptr;
}
extern "C" JNIEXPORT void JNICALL
Java_com_example_mydaemon_MainActivity_startDaemon(JNIEnv* env, jobject obj) {
pthread_t daemonThread;
pthread_create(&daemonThread, nullptr, daemon_thread, nullptr);
}
4.2 Java에서 Daemon 호출 (MainActivity.java
)
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("my_daemon");
}
private native void startDaemon();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startDaemon();
}
}
이제 앱을 실행하면 Daemon is running...
로그가 5초마다 출력됩니다.
이 글에서는 Android NDK를 이용해 사용자 정의 Android Daemon을 개발하기 위한 환경 설정과 기본적인 예제 코드를 다뤘습니다.
'Android > Daemon' 카테고리의 다른 글
Android에서 사용자 정의 Daemon 등록 및 실행 방법 (0) | 2025.06.18 |
---|---|
Android Daemon을 위한 Android.mk 및 CMakeLists.txt 구성 (0) | 2025.06.17 |
Android Daemon을 위한 기본 C/C++ 코드 작성 (0) | 2025.06.16 |
Android에서 Daemon이란? (0) | 2025.06.15 |
Android NDK 개요 및 Android Daemon 개념 소개 (0) | 2025.06.13 |