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 기능을 개발하거나 시스템 최적화를 진행할 수도 있습니다.
'Android > Framework' 카테고리의 다른 글
Android WindowManagerService 이해하기 (0) | 2025.04.09 |
---|---|
ActivityManagerService 이해하기 (0) | 2025.04.08 |
Native 코드와 Android Framework 연동 (0) | 2025.04.06 |
Android NDK(Native Development Kit) 개요 및 활용 (0) | 2025.04.05 |
JNI(Java Native Interface) 개념 및 사용법 (0) | 2025.04.04 |