Android/Framework

Android Framework의 개념 및 역할

임베디드 친구 2025. 4. 7. 09:22
728x90
반응형

Android Framework의 개념 및 역할

1. Android Framework이란?

Android Framework은 Android 운영체제에서 애플리케이션을 개발하고 실행하는 데 필요한 핵심 소프트웨어 계층입니다. Android 애플리케이션은 Java, Kotlin 또는 C++ 등의 언어로 작성되며, Android Framework을 통해 시스템 자원에 접근하고 UI를 관리할 수 있습니다.

Android는 Linux 커널 위에 여러 계층으로 구성되어 있으며, Android Framework은 그중에서도 애플리케이션과 시스템을 연결하는 중요한 역할을 합니다. 이를 통해 개발자는 하드웨어와 운영체제의 복잡성을 직접 다루지 않고도 다양한 기능을 구현할 수 있습니다.

Android Framework은 다음과 같은 주요 기능을 제공합니다.

  • UI 구성 요소(View, Layout 등)
  • 리소스 관리 (String, Drawable, XML 레이아웃 등)
  • Activity, Fragment 등의 애플리케이션 수명 주기 관리
  • 백그라운드 서비스 및 브로드캐스트 리시버 관리
  • 콘텐츠 제공자(Content Provider)를 통한 데이터 공유
  • 네트워크 및 저장소 관리
  • 멀티미디어 및 그래픽 처리 기능
  • 보안 및 권한 관리

2. 주요 Framework 서비스 개요

Android Framework은 다양한 서비스 모듈로 구성되어 있으며, 대표적인 서비스는 다음과 같습니다.

2.1 ActivityManagerService (AMS)

ActivityManagerService(AMS)는 애플리케이션의 실행 및 상태를 관리하는 핵심 서비스입니다. Android의 주요 컴포넌트인 Activity, Service, BroadcastReceiver의 생명 주기를 제어하며, 프로세스 관리, 메모리 관리 및 작업(task) 스위칭 등의 역할을 수행합니다.

주요 기능

  • Activity의 시작, 중지, 재시작 관리
  • 애플리케이션 프로세스 관리 및 메모리 정리
  • 시스템 리소스 최적화 및 백그라운드 앱 제어

AOSP 코드 예시 (Activity 관리)

// Activity 시작 요청 처리 (ActivityStack.java)
void startActivityLocked(ActivityRecord r, boolean newTask) {
    // 새로운 Task인지 확인
    if (newTask) {
        createNewTask(r);
    } else {
        addToExistingTask(r);
    }
    resumeTopActivity();
}

2.2 WindowManagerService (WMS)

WindowManagerService(WMS)는 Android의 화면을 구성하고 관리하는 서비스로, 애플리케이션의 창(Window) 배치와 크기 조정, 입력 이벤트 처리를 담당합니다.

주요 기능

  • 화면 배치 및 조정
  • 다중 윈도우 모드 지원
  • 애플리케이션 창의 포커스 관리

AOSP 코드 예시 (윈도우 추가)

// 새 윈도우 추가 (WindowManagerService.java)
void addWindow(Session session, IWindow client, int type) {
    WindowState win = new WindowState(session, client, type);
    mWindowList.add(win);
    updateLayout();
}

2.3 PackageManagerService (PMS)

PackageManagerService(PMS)는 Android에서 애플리케이션의 설치, 업데이트 및 삭제를 관리하는 서비스입니다. 또한 애플리케이션의 권한 및 사용자 데이터를 관리하는 역할도 수행합니다.

주요 기능

  • 애플리케이션 패키지 관리 (설치/삭제/업데이트)
  • 권한 관리
  • 사용자 데이터 보호 및 애플리케이션 무결성 검사

AOSP 코드 예시 (패키지 설치 처리)

// 패키지 설치 요청 처리 (PackageManagerService.java)
void installPackage(String packagePath) {
    if (verifyPackage(packagePath)) {
        installToSystem(packagePath);
    } else {
        throw new SecurityException("Invalid package");
    }
}

2.4 ContentProviderService (CPS)

ContentProviderService(CPS)는 애플리케이션 간 데이터 공유를 위해 사용되는 서비스입니다. Android의 데이터 저장 방식 중 하나인 ContentProvider를 통해 데이터를 안전하게 관리할 수 있습니다.

주요 기능

  • 데이터 공유 (예: 연락처, 미디어 파일, 설정값 등)
  • SQL 기반 데이터베이스(SQLite)와의 연동 지원
  • 보안 및 접근 권한 관리

AOSP 코드 예시 (데이터 조회)

// 데이터 조회 요청 처리 (ContentProvider.java)
Cursor query(Uri uri, String[] projection) {
    SQLiteDatabase db = getReadableDatabase();
    return db.query("table_name", projection, "id=?", new String[]{uri.getLastPathSegment()});
}

2.5 TelephonyManagerService (TMS)

TelephonyManagerService(TMS)는 전화 통화 및 네트워크 연결 관련 기능을 제공하는 서비스입니다.

주요 기능

  • 전화 걸기 및 받기
  • SIM 카드 정보 조회
  • 네트워크 상태 모니터링

AOSP 코드 예시 (전화 걸기)

// 전화 걸기 요청 처리 (TelephonyManager.java)
void dial(String number) {
    Intent intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:" + number));
    startActivity(intent);
}

2.6 AudioFlinger

AudioFlinger는 Android의 오디오 시스템을 관리하는 서비스로, 사운드 출력 및 입력을 제어합니다.

주요 기능

  • 오디오 믹싱 및 출력 관리
  • 음량 조절 및 오디오 포커스 관리
  • 블루투스 및 헤드폰 오디오 라우팅 지원

AOSP 코드 예시 (오디오 믹싱)

// 오디오 믹싱 처리 (AudioFlinger.cpp)
void AudioFlinger::processAudio() {
    mixTracks();
    outputToHardware();
}

3. 결론

Android Framework은 Android 애플리케이션 개발의 핵심 요소로, 다양한 시스템 서비스를 통해 애플리케이션이 원활하게 동작할 수 있도록 지원합니다. ActivityManagerService, WindowManagerService, PackageManagerService 등 여러 핵심 서비스가 애플리케이션과 시스템을 연결하는 역할을 하며, 개발자는 이를 활용하여 효율적인 Android 애플리케이션을 개발할 수 있습니다.

AOSP 코드를 분석하면 Android 시스템이 실제로 동작하는 방식과 내부 구조를 이해하는 데 큰 도움이 됩니다. 이를 바탕으로 커스텀 Android 기능을 개발하거나 시스템 최적화를 진행할 수도 있습니다.

반응형