Android 11은 소스 트리의 Android 버전과 관계없이 vendor.img
를 빌드하는 데 사용할 수 있는 VNDK 스냅샷 빌드 아티팩트 및 공급업체 스냅샷을 지원합니다. 따라서 이전 공급업체 및 최신 시스템 이미지와 같은 혼합된 버전의 이미지를 사용할 수 있습니다.
다음과 같은 혼합 이미지 버전은 지원되지 않습니다.
Android.mk.
Soong은 공급업체 스냅샷을 생성하므로Android.mk
에 정의된 모듈은 공급업체 스냅샷으로 캡처되지 않습니다(Android.mk
의 SoC 독점 모듈도 작동하지 않을 수 있음).새니타이저. 공급업체 및 VNDK 스냅샷은 새니타이저를 지원하지 않습니다. 새니타이저 변형이 별도로 빌드되어야 하기 때문입니다.
공급업체 스냅샷 정보
공급업체 스냅샷은 OEM 소유 스냅샷입니다. /vendor
에 설치되었지만 AOSP에서 유지되는 사전 빌드된 C++ 모듈 집합입니다. 이전 Android 버전의 공급업체 스냅샷을 캡처하지 않고 새 Android 버전으로 업그레이드하면 공급업체 파티션이 중단될 수 있습니다. 공급업체 스냅샷 모듈이 API 또는 ABI 호환성 없이 삭제되거나 변경될 수 있기 때문입니다.
공급업체 스냅샷에는 AOSP의 다음 모듈이 포함되어 있습니다.
vendor: true
나vendor_available: true
가 있는 공유, 정적 및 헤더 라이브러리vendor_available: true
가 있는 VNDK 정적 라이브러리vendor: true
나vendor_available: true
가 있는 실행 파일과 객체 파일
다음 디렉터리 아래의 모듈은 SoC 소유 하드웨어 코드로 간주되고 무시됩니다.
device/
vendor/
hardware/
. 다음은 제외hardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
SoC 소유 하드웨어 코드는 다른 디렉터리에도 있을 수 있습니다. 현재 공급업체 스냅샷은 이러한 구성을 지원하지 않습니다.
공급업체 스냅샷 빌드
다음 명령어를 사용하여 공급업체 스냅샷을 빌드합니다.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
이러한 명령어는 $DIST_DIR
에 vendor-$(TARGET_DEVICE).zip
파일을 만듭니다. 아래 예는 공급업체 스냅샷 ZIP 파일을 보여 줍니다.
vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│ ├── binary -> binary files, *.json files
│ ├── header -> *.json files
│ ├── object -> *.o files, *.json files
│ ├── shared -> *.so files, *.json files
│ └── static -> *.a files, *.json files
├── arch-arm-armv8-a -> (arch-arm64-armv8-a)
├── configs -> *.rc files, *.xml files
├── include -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES -> license txt files
- JSON 파일에는 모듈 이름, 내보낸 디렉터리,
init_rc
파일,vintf_fragments
파일과 같은 플래그가 포함됩니다. configs
디렉터리에는init_rc
및vintf_fragments
플래그의.rc
및.xml
파일이 포함됩니다.
공급업체 스냅샷 설치
공급업체 스냅샷을 설치하려면 대상 디렉터리로 이동하여 다음 명령어를 사용하세요.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
이 명령어는 /vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
를 생성합니다.
다음 예는 공급업체 스냅샷의 디렉터리 구조를 보여 줍니다.
vendor/vendor name/vendor_snapshot/
├── v30
│ ├── arm64
│ │ ├── arch-arm64-armv8-a
│ │ │ ├── binary -> (prebuilt libs)
│ │ │ ├── object -> (prebuilt libs)
│ │ │ ├── shared -> (prebuilt libs)
│ │ │ └── static -> (prebuilt libs)
│ │ ├── arch-arm-armv8-a -> (same as above)
│ │ ├── configs -> (config files)
│ │ ├── include -> (exported header files)
│ │ ├── NOTICE_FILES -> (license files)
│ │ └── Android.bp -> (snapshot modules)
│ ├── arm -> (same as above)
│ ├── x86_64 -> (same as above)
│ └── x86 -> (same as above)
└── (other vendor versions) -> (same as above)
공급업체 이미지 빌드
VNDK 스냅샷 빌드 아티팩트와 공급업체 스냅샷을 사용하면 소스 트리의 Android 버전과 관계없이 vendor.img
를 빌드할 수 있어 혼합 버전의 이미지를 만들 수 있습니다. VNDK 스냅샷과 공급업체 스냅샷을 모두 설치한 후 BOARD_VNDK_VERSION
을 공급업체의 버전으로 설정합니다. 예:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
BOARD_VNDK_VERSION
이 current
가 아닌 값으로 설정되면 빌드 시스템이 다음을 실행합니다.
BOARD_VNDK_VERSION
의 VNDK 스냅샷 모듈 및 공급업체 스냅샷 모듈을 사용 설정합니다. 각 스냅샷 모듈은 이름이 같은 C++ 소스 모듈을 재정의합니다.ro.vndk.version
을BOARD_VNDK_VERSION
으로 설정합니다.BOARD_VNDK_VERSION
의 VNDK 스냅샷 모듈을system_ext
에 설치합니다.