맞춤 기기 개발

이 페이지에서는 자체 기기용 빌드를 설정할 때 실행해야 할 수 있는 몇 가지 작업을 설명합니다.

맞춤 플래시 구성 만들기

빠른 부팅 안내는 fastboot-info.txt라는 아티팩트에 정의되어 있습니다. 여러 대상을 빌드하면 $OUT_DIR에 여러 개의 fastboot-info.txt 파일이 생깁니다. $ANDROID_PRODUCT_OUT는 빌드한 가장 최신 타겟을 가리킵니다. 이 페이지에는 빠른 부팅에서 실행할 작업이 나열되어 있으며 m fastboot_info를 사용하여 재생성할 수 있습니다. fastboot-info.txt 파일을 수정하여 맞춤 플래싱 로직을 도입할 수 있습니다.

fastboot-info.txt 파일은 다음 명령어를 지원합니다.

  • flash %s: 지정된 파티션을 플래시합니다. 선택적 인수에는 --slot-other,filename_path, and--apply-vbmeta`가 포함됩니다.
  • update-super: super 파티션을 업데이트합니다.
  • if-wipe: wipe가 지정된 경우 조건부로 다른 구성요소를 실행합니다.
  • erase %s: 지정된 파티션을 삭제합니다 (if-wipe와 함께만 사용할 수 있음 -> 예: if-wipe erase cache)에 복사합니다.

플래시 잠금 상태 확인

기기용 맞춤 플래시부트 데몬 (flashbootd)을 빌드하는 경우 부트로더 및 부트로더 잠금 상태를 가져올 수 있어야 합니다. getFlashLockState() @SystemApi는 부트로더 상태를 전송하고 PersistentDataBlockManager.getFlashLockState() 시스템 API는 호환되는 기기에서 부트로더의 잠금 상태를 반환합니다.

반환 값 조건
FLASH_LOCK_UNKNOWN 이전에 플래시 잠금/잠금 해제 기능을 지원한 경우 플래시 잠금 상태를 얻는 데 필요한 부트로더 변경을 지원하지 않은 Android 7.x 이상으로 업그레이드한 기기에서만 반환함
  • Android 7.x 이상을 실행하는 새 기기는 FLASH_LOCK_LOCKED 또는 FLASH_LOCK_UNLOCKED 상태이어야 함
  • 플래시 잠금 해제 또는 잠금 기능을 지원하지 않는 Android 7.x 이상으로 업그레이드하는 기기는 FLASH_LOCK_LOCKED 상태를 반환함
FLASH_LOCK_LOCKED 플래시 잠금/잠금 해제를 지원하지 않는 기기(항상 잠겨 있는 기기) 또는 플래시 잠금/잠금 해제를 지원하고 잠금 상태인 기기에서 반환함
FLASH_LOCK_UNLOCKED 플래시 잠금 또는 잠금 해제를 지원하고 잠금 해제 상태인 모든 기기에서 반환함

제조업체는 잠금 및 잠금 해제된 부트로더가 있는 기기에서 반환된 값을 테스트해야 합니다. 예를 들어 AOSP에는 ro.boot.flash.locked 부팅 속성에 기반한 값을 반환하는 참조 구현이 포함되어 있습니다. 예제 코드는 다음 디렉터리에 있습니다.

  • frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
  • frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java