Android/Custom Framework

Android 사용자 정의 Framework Service 만들기 - AOSP 빌드 및 테스트

임베디드 친구 2025. 5. 27. 19:40
728x90
반응형

Android 사용자 정의 Framework Service 만들기 - AOSP 빌드 및 테스트

Android Open Source Project(AOSP)에 새로운 Framework Service를 추가한 후, 이를 빌드하고 테스트하는 과정은 Android 플랫폼 개발에서 필수적인 작업입니다. 이번 포스팅에서는 다음과 같은 내용을 다룹니다.

  • 새로운 Framework Service 추가 후 빌드 방법
  • 빌드한 AOSP 이미지를 실제 기기 또는 에뮬레이터에 플래싱
  • logcat을 활용한 서비스 로그 확인
  • dumpsys를 이용한 서비스 정상 동작 여부 확인

1. 새로운 Framework Service 추가 후 빌드 방법

사용자 정의 Framework Service를 추가했다면, 이를 정상적으로 빌드할 수 있도록 AOSP 빌드 시스템을 설정해야 합니다. 기본적으로 다음과 같은 작업이 필요합니다.

(1) Android.bp 파일 구성

AOSP에서 빌드 시스템은 Android.bp 파일을 통해 빌드를 수행합니다. 새롭게 추가한 서비스가 정상적으로 포함되도록 frameworks/base/services/custom/ 경로에 Android.bp 파일을 생성합니다.

예제 Android.bp 파일은 다음과 같습니다.

cc_library_shared {
    name: "libcustomservice",
    srcs: ["CustomService.cpp"],
    shared_libs: [
        "libbinder",
        "libutils",
        "liblog",
    ],
    sdk_version: "current",
}

(2) ServiceManager에 등록

AOSP SystemServer.java에서 새로운 서비스가 등록되었는지 확인하고, 필요하면 SystemServer.java에 추가해야 합니다.

private void startCustomService() {
    Slog.i(TAG, "Starting Custom Service");
    ServiceManager.addService("custom", new CustomService());
}

그리고 onStart() 메서드에서 호출합니다.

public void onStart() {
    startCustomService();
}

(3) 빌드 실행

서비스 추가 후, AOSP 전체 빌드를 수행해야 합니다. 빌드는 다음 명령어를 사용합니다.

source build/envsetup.sh
lunch aosp_arm64-userdebug
m -j8

2. 빌드한 AOSP 이미지를 실제 기기 또는 에뮬레이터에 플래싱

AOSP 빌드가 완료되면, 해당 이미지를 테스트할 기기 또는 에뮬레이터에 플래싱해야 합니다.

(1) 에뮬레이터에서 테스트하는 경우

emulator -avd aosp_arm64 -writable-system

(2) 실제 기기에 플래싱하는 경우

기기가 fastboot 모드에 있는지 확인한 후, 다음 명령어를 실행합니다.

fastboot flashall

이후, 기기가 정상적으로 부팅되었는지 확인합니다.

3. logcat을 활용한 서비스 로그 확인

서비스가 정상적으로 실행되었는지 확인하려면 logcat을 사용하여 로그를 출력할 수 있습니다.

adb logcat -s CustomService

예를 들어, CustomService에서 로그를 남기는 경우, 다음과 같은 코드가 필요합니다.

Slog.i("CustomService", "Custom Service Started Successfully");

서비스가 정상적으로 실행되었는지 로그를 확인하면서 디버깅할 수 있습니다.

4. dumpsys를 이용한 서비스 정상 동작 여부 확인

dumpsys 명령어를 사용하면 등록된 서비스의 상태를 확인할 수 있습니다.

adb shell dumpsys customservice

정상적으로 등록되지 않았다면 다음과 같은 오류 메시지가 표시될 수 있습니다.

Can't find service: customservice

이 경우, ServiceManager.addService() 호출을 다시 확인하고, SystemServer에서 서비스가 정상적으로 초기화되었는지 점검해야 합니다.

5. 마무리

이 포스팅에서는 AOSP에서 새로운 Framework Service를 추가한 후, 이를 빌드하고 테스트하는 과정을 정리했습니다. 주요 과정은 다음과 같습니다.

  1. Android.bp 파일을 생성하여 빌드 시스템에 서비스 포함시키기
  2. SystemServer에서 새로운 서비스 등록
  3. 전체 AOSP 빌드 수행
  4. 에뮬레이터 또는 실제 기기에 빌드된 이미지를 플래싱하여 테스트
  5. logcat을 이용한 서비스 로그 확인
  6. dumpsys 명령어로 서비스 정상 동작 여부 점검

이 과정을 따라가면 새로운 Framework Service를 정상적으로 추가하고 테스트할 수 있습니다.

반응형