Android Daemon을 위한 Android.mk 및 CMakeLists.txt 구성
Android에서 NDK를 활용하여 사용자 정의 Daemon을 개발할 때, 네이티브 코드를 빌드하기 위한 Android.mk 및 CMakeLists.txt 설정이 필요합니다. 본 글에서는 Android.mk와 CMakeLists.txt를 이용한 빌드 설정 방법을 설명하고, 이를 활용하여 네이티브 코드를 빌드하고 디버깅하는 과정을 상세히 다룹니다.
1. Android.mk를 이용한 빌드 설정
Android.mk는 Android의 기존 NDK 빌드 시스템에서 Make 기반으로 네이티브 라이브러리를 빌드하는 데 사용됩니다. Android.mk 파일을 생성하고 필요한 설정을 추가하는 방법을 살펴보겠습니다.
1.1 Android.mk 파일 구조
Android.mk 파일은 보통 다음과 같은 구조를 가집니다.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_daemon
LOCAL_SRC_FILES := daemon.c
LOCAL_LDLIBS := -llog
include $(BUILD_EXECUTABLE)
1.2 주요 항목 설명
LOCAL_PATH
: 현재 Android.mk 파일의 경로를 설정합니다.CLEAR_VARS
: 변수 충돌을 방지하기 위해 초기화합니다.LOCAL_MODULE
: 빌드할 실행 파일(또는 라이브러리)의 이름을 지정합니다.LOCAL_SRC_FILES
: 컴파일할 소스 파일 목록을 지정합니다.LOCAL_LDLIBS
: 추가적으로 필요한 라이브러리를 링크합니다.BUILD_EXECUTABLE
: 실행 가능한 바이너리를 빌드하는 명령어입니다.
1.3 Application.mk 파일 설정 (선택 사항)
Application.mk는 빌드 설정을 보다 세부적으로 조정하는 데 사용됩니다. 예를 들어, 여러 개의 ABI를 지원하려면 다음과 같이 설정할 수 있습니다.
APP_ABI := armeabi-v7a arm64-v8a
APP_PLATFORM := android-21
2. CMakeLists.txt 설정 방법
Android.mk 대신 CMake를 사용하는 경우, CMakeLists.txt
파일을 설정해야 합니다.
2.1 CMakeLists.txt 기본 구조
cmake_minimum_required(VERSION 3.10)
project(my_daemon)
add_library(my_daemon SHARED daemon.c)
find_library(log-lib log)
target_link_libraries(my_daemon ${log-lib})
2.2 주요 항목 설명
cmake_minimum_required(VERSION 3.10)
: 최소 CMake 버전을 지정합니다.project(my_daemon)
: 프로젝트 이름을 설정합니다.add_library(my_daemon SHARED daemon.c)
: 네이티브 라이브러리를 생성합니다.find_library(log-lib log)
: Android의 로그 라이브러리를 찾습니다.target_link_libraries(my_daemon ${log-lib})
: 로그 라이브러리를 링크합니다.
2.3 Gradle과의 연동
CMake를 사용하는 경우 build.gradle
파일에 다음과 같은 내용을 추가해야 합니다.
android {
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
}
}
}
3. NDK를 활용한 네이티브 코드 빌드 및 디버깅
3.1 네이티브 코드 예제 (daemon.c)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <android/log.h>
#define LOG_TAG "NativeDaemon"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
int main() {
LOGI("Daemon started");
while (1) {
sleep(10);
LOGI("Daemon is running");
}
return 0;
}
3.2 빌드 실행 (Android.mk 사용 시)
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_ABI=armeabi-v7a
3.3 빌드 실행 (CMake 사용 시)
mkdir -p build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-21
make
3.4 네이티브 코드 디버깅
NDK의 ndk-gdb
또는 lldb
를 사용하여 네이티브 코드 디버깅이 가능합니다.
ndk-gdb --launch
또는 LLDB를 사용하는 경우:
lldb-server platform --listen "*:5039" --server
결론
본 글에서는 Android NDK에서 Daemon을 개발하기 위해 필요한 Android.mk 및 CMakeLists.txt 설정 방법을 설명하였습니다. 또한, 네이티브 코드 빌드 및 디버깅 과정도 다루었습니다. 이를 통해 Android 환경에서 C/C++ 기반의 백그라운드 서비스를 효과적으로 개발할 수 있습니다.
'Android > User Daemon' 카테고리의 다른 글
Android Daemon과 Java/Kotlin 인터페이스 연결 (0) | 2025.06.19 |
---|---|
Android에서 사용자 정의 Daemon 등록 및 실행 방법 (0) | 2025.06.18 |
Android Daemon을 위한 기본 C/C++ 코드 작성 (0) | 2025.06.16 |
Android에서 Daemon이란? (0) | 2025.06.15 |
개발 환경 준비: Android NDK를 이용한 사용자 정의 Android Daemon 구축 (0) | 2025.06.14 |