Android/Custom Framework

Android AOSP에서 Framework Service와 System Service의 차이

임베디드 친구 2025. 5. 20. 21:47
728x90
반응형

Android AOSP에서 Framework Service와 System Service의 차이

Android AOSP에서 서비스는 크게 Framework ServiceSystem 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 ServiceNative 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 관련 동작 흐름

  1. 앱 → WindowManagerService (Framework Service 호출)
  2. WindowManagerServiceSurfaceFlinger (System Service 호출)
  3. SurfaceFlinger → HAL을 통해 화면 출력

5. 결론

Android에서 Framework ServiceSystem Service는 각각 앱과 시스템을 연결하는 역할하드웨어 및 저수준 시스템을 직접 제어하는 역할을 담당합니다. 개발 목적에 따라 적절한 서비스 계층을 선택하여 구현해야 합니다.

반응형