공급업체 API 수준 은 공급업체 파티션에서 지원하는 인터페이스 버전을 나타냅니다. 인터페이스는 양방향입니다. 공급업체 파티션이 시스템 파티션에 제공하는 API (하드웨어 추상화 계층 또는 HAL 인터페이스)와 공급업체 파티션이 시스템 파티션에 요구하는 API (하위 수준 네이티브 개발자 키트 또는 LLNDK 인터페이스)를 설명합니다.
공급업체 API 수준은 공급업체 파티션의 소프트웨어가 충족해야 하는 기능 및 비기능 요구사항 모음인 공급업체 소프트웨어 요구사항(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.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 | ro.product.first_api_level에 해당하는 공급업체 API 수준입니다. SoC 칩셋이 공급업체 고정 자격 요건을 충족하는 경우에만 ro.board.api_level이 ro.product.first_api_level의 공급업체 API 수준보다 작은 경우 ro.vendor.api_level을 ro.board.api_level의 값으로 설정합니다. |
이 표 다음에 설명되어 있습니다. |
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 수준이며, 현재 공급업체 API 수준이 설정된
Android 14-QPR3의 대략적인 날짜인 202404를 반환합니다.
공급업체 API 수준 결정 (Android 13)
공급업체 API 수준은 앱-OS 인터페이스용이며 새 Android 플랫폼이 AOSP에 출시될 때 1년에 한 번 업데이트되는 SDK API 수준을 따릅니다.
Android 13에는 공급업체 API 수준과 관련된 다음과 같은 시스템 속성이 포함되어 있습니다.
| 시스템 속성 | 형식 | 설명 | 초기 설정 |
|---|---|---|---|
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 수준입니다. |