공급업체 API 수준

공급업체 API 수준은 공급업체 파티션에서 지원하는 인터페이스의 버전을 나타냅니다. 이 인터페이스는 양방향입니다. 공급업체 파티션이 시스템 파티션에 제공하는 API (하드웨어 추상화 계층 또는 HAL 인터페이스)와 공급업체 파티션이 시스템 파티션에 요구하는 API (하위 수준 네이티브 개발자 키트 또는 LLNDK 인터페이스)를 설명합니다.

공급업체 API 수준은 공급업체 소프트웨어 요구사항(VSR)을 결정하는 데도 사용됩니다. VSR은 공급업체 파티션의 소프트웨어가 충족해야 하는 기능적 요구사항과 비기능적 요구사항 모음입니다.

이 페이지의 나머지 부분에서는 Android 버전에 따라 시스템 속성이 사용되어 공급업체 API 수준을 결정하는 방법을 설명합니다.

공급업체 동결

Android를 사용하면 공급업체가 특정 버전의 VSR에서 공급업체 파티션을 동결할 수 있습니다. Android가 공급업체 파티션에서 기대하는 기능 세트는 공급업체 파티션과 연결된 공급업체 API 수준에 따라 결정됩니다. 런타임 시에는 시스템 파티션에서 실행되는 소프트웨어의 동작이 공급업체 파티션의 공급업체 API 수준을 수용하도록 조정됩니다. 예를 들어 시스템 파티션의 소프트웨어는 공급업체 파티션의 API 수준에서 지원되지 않는다면 새 기능을 사용하지 않을 수도 있습니다.

공급업체 동결은 Android 호환 기기를 만드는 경우에만 사용할 수 있습니다.

공급업체 API 수준 확인 (Android 14-QPR3 이상)

Android 14-QPR3 이상의 경우 공급업체 API 수준이 별도로 출시되므로 SDK API 수준과 공급업체 API 수준이 동기화되지 않습니다.

별도의 출시 일정으로 인해 Android 14-QPR3 이상에서는 공급업체 API 수준이 SDK API 수준과 완전히 분리됩니다. 이러한 분리가 명확하게 이루어지도록 공급업체 API 수준의 형식은 YYYYMM (연도 및 월) 형식의 날짜이고 SDK 수준은 정수입니다.

Android 14-QPR3 이상에는 공급업체 API 수준 (ro.vendor.api_level)과 관련된 다음 시스템 속성이 포함되어 있습니다.

시스템 속성 형식 설명 초기 설정
ro.board.api_level YYYYMM 칩셋 소프트웨어가 지원하는 공급업체 API 수준입니다. 이 속성은 모든 칩셋에 설정됩니다. 빌드 시스템에 의해 자동으로 설정됩니다.
ro.board.first_api_level YYYYMM 칩셋의 소프트웨어가 처음 출시된 공급업체 API 수준입니다. 이 속성은 칩셋의 기능으로서 SoC 칩셋이 공급업체 동결을 충족하는 경우 SoC 공급업체가 설정합니다. 초기 설정 후에는 수정하면 안 됩니다. SoC 공급업체는 BOARD_SHIPPING_API_LEVEL를 사용하여 이 설정을 설정합니다.
ro.product.first_api_level 정수 기기가 처음 실행된 SDK API 수준입니다. 이 속성은 OEM에서 설정하며 OS 업그레이드 후에도 업데이트되지 않습니다.
ro.vendor.api_level YYYYMM 기기 전체가 준수해야 하는 공급업체 API 수준입니다. 이 표 다음에 설명되어 있습니다.
ro.board.api_frozen 부울 ro.board.api_level이 나타내는 공급업체 API 수준이 완료되면 이 속성은 true로 설정됩니다. 이 속성을 설정하지 않으면 기본값은 false입니다.
ro.llndk.api_level YYYYMM 시스템 파티션의 현재 LLNDK가 제공하는 YYYYMM 형식의 공급업체 API 수준입니다. LLNDK는 하위 호환되므로 이 API 수준 이하의 모든 공급업체 이미지를 이 시스템 이미지로 플래시할 수 있습니다. 이 속성은 시스템 파티션에 의해 설정됩니다.

ro.vendor.api_level 속성은 다음 두 가지 방법 중 하나로 파생됩니다.

  • 칩셋이 공급업체 동결 요건을 충족하는 경우:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • 칩셋이 공급업체 동결 상태가 아닌 경우:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

AVendorSupport_getVendorApiLevelOf() 메서드는 SDK API 수준에서 상응하는 공급업체 API 수준을 결정합니다. 예를 들어 AVendorSupport_getVendorApiLevelOf(35)(여기서 35는 2024년 주요 Android 출시의 SDK API 수준임)은 202404를 반환합니다. 이는 현재 공급업체 API 수준이 설정된 Android 14-QPR3의 대략적인 날짜입니다.

공급업체 API 수준 확인 (Android 13)

공급업체 API 수준은 app-OS 인터페이스용 SDK API 수준을 따르며 새 Android 플랫폼이 AOSP에 출시될 때 1년에 한 번 업데이트됩니다.

Android 13에는 공급업체 API 수준 (ro.vendor.api_level)과 관련된 다음 시스템 속성이 포함되어 있습니다.

시스템 속성 형식 설명 초기 설정
ro.board.first_api_level 정수 칩셋의 소프트웨어가 처음 출시된 공급업체 API 수준입니다. 이는 칩셋 전용 함수이며 SoC 공급업체 또는 OEM에서 수정할 수 없습니다. 이 속성은 공급업체 동결 요건을 충족하는 칩셋에 대해서만 설정됩니다. 값은 device.mk 파일에서 BOARD_SHIPPING_API_LEVEL를 설정하여 설정됩니다.
ro.board.api_level 정수 칩셋 소프트웨어가 지원하는 공급업체 API 수준입니다. 이 속성은 공급업체 동결 요건을 충족하는 칩셋에 대해서만 설정됩니다. 이 속성은 모든 칩셋에 설정됩니다. 처음에는 이 속성의 값이 빌드 시스템에 의해 ro.board.first_api_level와 동일한 값으로 설정되지만, 공급업체 파티션이 업그레이드되면 업데이트할 수 있습니다.
ro.product.first_api_level 정수 기기가 처음 실행된 SDK API 수준입니다. 이 속성은 OEM에서 설정하고 OS 업그레이드 후에도 업데이트되지 않습니다.
ro.vendor.api_level 정수 기기 전체가 준수해야 하는 공급업체 API 수준입니다. 이 표 다음에 설명되어 있습니다.
ro.vndk.version 정수 공급업체 파티션이 빌드되는 VNDK 버전입니다. 이 속성은 시스템 파티션에 의해 설정됩니다.
ro.vendor.build.version.sdk 정수 공급업체 파티션이 빌드된 소스 트리의 SDK API 수준입니다.
ro.vendor.build.version.release 정수 공급업체 파티션이 빌드된 소스 트리의 플랫폼 버전입니다.
ro.vendor.build.version.release_or_codename 정수 공급업체 파티션이 빌드된 소스 트리의 코드 이름입니다.

ro.vendor.api_level 속성은 최소 ro.board.api_level (ro.board.api_level이 정의되지 않은 경우 ro.board.first_api_level) 및 ro.product.first_api_level로 자동 설정됩니다.