728x90
반응형
Android AOSP에서 Framework Service와 System Service의 차이
Android AOSP에서 서비스는 크게 Framework Service와 System Service로 구분할 수 있습니다. 두 서비스 유형은 모두 Android 시스템 내부에서 동작하며, 시스템의 핵심 기능을 담당하지만, 각각의 역할과 위치, 접근 방식에서 차이가 있습니다.
1. Framework Service란?
Framework Service는 Android Application Framework 레이어에서 실행되는 서비스로, 주로 앱 개발자가 사용할 수 있는 API를 제공합니다.
특징
- Application Framework 계층에서 동작하며, 앱이 직접 호출할 수 있음
frameworks/base/services/java/com/android/server/
경로에 존재- Java 언어로 작성되며,
SystemService
클래스를 상속하여 구현 - Binder IPC를 통해 앱과 통신하며,
IBinder
인터페이스를 사용하여 서비스 제공 - 예제:
PowerManagerService
,ActivityManagerService
,WindowManagerService
주요 예제
public class ExampleService extends SystemService {
public ExampleService(Context context) {
super(context);
}
@Override
public void onStart() {
// 서비스 초기화 로직
}
}
2. System Service란?
System Service는 Native System 레이어에서 실행되는 서비스로, 주로 하드웨어 및 저수준 시스템과 직접 상호작용합니다.
특징
- Native(C/C++) 레이어에서 실행, 주로
system_server
프로세스에서 관리됨 frameworks/native/services/
경로에 존재하며, C++ 언어로 작성됨- 직접 HAL (Hardware Abstraction Layer) 및 Kernel Layer와 통신
- Binder IPC를 통해 Framework Service 및 앱과 통신
- 예제:
SurfaceFlinger
,AudioFlinger
,InputFlinger
주요 예제
class ExampleService : public BnExampleService {
public:
static void instantiate() {
defaultServiceManager()->addService(
String16("example"), new ExampleService());
}
virtual void someFunction() {
// 서비스 동작 구현
}
};
3. Framework Service vs. System Service 비교
비교 항목 | Framework Service | System Service |
---|---|---|
개발 언어 | Java | C/C++ |
위치 | Application Framework | Native System |
역할 | 앱과 시스템 간 인터페이스 제공 | 하드웨어 및 저수준 시스템 제어 |
예제 서비스 | ActivityManagerService |
SurfaceFlinger |
파일 경로 | frameworks/base/services/ |
frameworks/native/services/ |
HAL 접근 | 직접 접근 불가 (System Service를 통해 접근) | 직접 HAL과 통신 |
4. 서비스 간 연계
Framework Service는 보통 System Service를 호출하여 기능을 수행하며, System Service는 HAL 및 Kernel을 통해 실제 동작을 수행합니다. 이러한 구조를 통해 Android 시스템은 모듈화되고 보안성이 강화된 계층 구조를 유지할 수 있습니다.
예제: Display 관련 동작 흐름
- 앱 →
WindowManagerService
(Framework Service 호출) WindowManagerService
→SurfaceFlinger
(System Service 호출)SurfaceFlinger
→ HAL을 통해 화면 출력
5. 결론
Android에서 Framework Service와 System Service는 각각 앱과 시스템을 연결하는 역할과 하드웨어 및 저수준 시스템을 직접 제어하는 역할을 담당합니다. 개발 목적에 따라 적절한 서비스 계층을 선택하여 구현해야 합니다.
반응형
'Android > Custom Framework' 카테고리의 다른 글
Android 사용자 정의 Framework Service 만들기 - AOSP 빌드 및 테스트 (1) | 2025.05.27 |
---|---|
Android 사용자 정의 Framework Service 만들기 (0) | 2025.05.26 |
Android 사용자 정의 Framework Service 만들기 (0) | 2025.05.24 |
AOSP에서 Framework Service가 동작하는 방식 (0) | 2025.05.23 |
Android 사용자 정의 Framework Service 만들기 (0) | 2025.05.22 |