기기 플래시

이 페이지에서는 특정 기기에서의 빌드 실행에 관한 세부정보를 제공합니다. 이러한 세부정보는 Android 빌드의 내용을 보완합니다.

빠른 부팅 및 adb 빌드

아직 fastbootadb가 없는 경우 일반 빌드 시스템으로 빌드하면 됩니다. Android 빌드의 안내에 따라 기본 make 명령어를 이 명령어로 대체합니다.

make fastboot adb

Android 디버그 브리지(adb)에 관한 자세한 내용은 Android 디버그 브리지(adb)를 참고하세요.

빠른 부팅 모드(Fastboot mode)로 부팅

기기가 fastboot 부트로더 모드에 있을 때 기기를 플래시할 수 있습니다. 기기가 콜드 부팅 중일 때 fastboot 모드로 전환하려면 빠른 부팅 키 조합에 나열된 키 조합을 사용하세요.

adb reboot bootloader 명령어를 사용하여 부트로더로 직접 재부팅할 수도 있습니다. 자세한 내용은 플래시 안내를 참고하세요.

부트로더 잠금 해제

부트로더가 허용하는 경우에만 맞춤 시스템을 플래시할 수 있습니다. 하지만 부트로더는 기본적으로 잠겨 있습니다. 부트로더를 잠금 해제할 수 있지만 그렇게 하면 개인 정보 보호를 위해 사용자 데이터가 삭제됩니다. 잠금 해제하면 기기의 전체 데이터가 삭제됩니다. 즉, USB를 통해 액세스할 수 있는 비공개 앱 데이터와 공유 데이터가 모두(사진 및 영화 포함) 삭제됩니다. 따라서 부트로더 잠금 해제를 시도하기 전에 기기에 있는 중요한 파일을 백업합니다.

부트로더는 한 번만 잠금 해제해야 하며 필요한 경우 다시 잠글 수 있습니다.

최근 기기 잠금 해제

2014년 이후 출시된 모든 Nexus 및 Pixel 기기(Nexus 6 및 Nexus 9 이후)는 초기화 보호가 설정되어 있어 부트로더 잠금을 해제하려면 여러 단계의 절차가 필요합니다.

  1. 기기에서 OEM 잠금 해제를 사용 설정하려면 다음 단계를 따르세요.
    1. 설정에서 휴대전화 정보를 탭한 후 빌드 번호를 7번 탭합니다.
    2. 개발자가 되셨습니다.라는 메시지가 표시되면 뒤로 버튼을 탭합니다.
    3. 설정에서 시스템, 개발자 옵션을 차례로 탭하고 OEM 잠금 해제USB 디버깅을 사용 설정합니다. (OEM 잠금 해제가 사용 중지되었다면 기기가 한 번 이상 체크인할 수 있도록 기기를 인터넷에 연결합니다. 여전히 잠금 해제가 사용 중지되어 있다면 이동통신사에서 기기의 SIM을 잠갔을 수 있으며 부트로더를 잠금 해제할 수 없습니다.)
  2. 부트로더로 재부팅하고 fastboot를 사용하여 잠금 해제합니다.
    • 최신 기기(2015년 출시 버전 이상):
      fastboot flashing unlock
    • 이전 기기(2014년 출시 버전 이하):
      fastboot oem unlock
    도움말: 재부팅 전에 'adb devices' 출력은 표시되지만 빠른 부팅 또는 플래시 스크립트가 오작동하는 경우 USB 케이블 문제일 수 있습니다. 다른 포트나 전환 커넥터를 사용해 보세요. 컴퓨터에서 USB-C 포트를 사용하는 경우 USB-A 포트를 사용해 보세요.
  3. 화면에서 잠금 해제를 확인합니다.

부트로더 다시 잠금

부트로더를 다시 잠그려면 다음 단계를 따르세요.

  • 최신 기기(2015년 출시 버전 이상):
    fastboot flashing lock
  • 이전 기기(2014년 출시 버전 이하):
    fastboot oem lock

플래시 잠금 상태 사용

getFlashLockState() 시스템 API는 부트로더 상태를 전송하고 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 플래시 잠금 또는 잠금 해제를 지원하고 잠금 해제 상태인 모든 기기에서 반환함

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

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

기기 빌드 선택

추천 기기 빌드는 인수 없이 lunch 명령어를 실행할 때 lunch 메뉴에서 이용할 수 있습니다. lunch 명령어에 관한 자세한 내용은 타겟 선택을 참고하세요. 빌드 타겟 목록은 빌드 타겟을 참고하세요.

developers.google.com에서 Pixel 및 Nexus 기기의 공장 출고 시 이미지 및 바이너리를 다운로드할 수 있습니다. 다운로드에 관해서는 기기 바이너리를 참고하세요. 자세한 내용 및 추가 리소스는 독점 바이너리 가져오기를 참고하세요.

기기 코드명 빌드 구성
Pixel 7 Pro cheetah aosp_cheetah-userdebug
Pixel 7 panther aosp_panther-userdebug
Pixel 6 Pro raven aosp_raven-userdebug
Pixel 6 oriole aosp_oriole-userdebug
Pixel 5 redfin aosp_redfin-userdebug
Pixel 4a 5G bramble aosp_bramble-userdebug
Pixel 4a sunfish aosp_sunfish-userdebug
Pixel 4 XL coral aosp_coral-userdebug
Pixel 4 flame aosp_flame-userdebug
Pixel 3a XL bonito aosp_bonito-userdebug
Pixel 3a sargo aosp_sargo-userdebug
Pixel 3 XL crosshatch aosp_crosshatch-userdebug
Pixel 3 blueline aosp_blueline-userdebug
Pixel 2 XL taimen aosp_taimen-userdebug
Pixel 2 walleye aosp_walleye-userdebug
Pixel XL marlin aosp_marlin-userdebug
Pixel sailfish aosp_sailfish-userdebug
HiKey hikey hikey-userdebug
Nexus 6P angler aosp_angler-userdebug
Nexus 5X bullhead aosp_bullhead-userdebug
Nexus 6 shamu aosp_shamu-userdebug
Nexus Player fugu aosp_fugu-userdebug
Nexus 9 volantis(flounder) aosp_flounder-userdebug
Nexus 5(GSM/LTE) hammerhead aosp_hammerhead-userdebug
Nexus 7(Wi-Fi) razor(flo) aosp_flo-userdebug
Nexus 7(Mobile) razorg(deb) aosp_deb-userdebug
Nexus 10 mantaray(manta) full_manta-userdebug
Nexus 4 occam(mako) full_mako-userdebug
Nexus 7(Wi-Fi) nakasi(grouper) full_grouper-userdebug
Nexus 7(Mobile) nakasig(tilapia) full_tilapia-userdebug
Galaxy Nexus(GSM/HSPA+) yakju(maguro) full_maguro-userdebug
Galaxy Nexus(Verizon) mysid(toro) √aosp_toro-userdebug
Galaxy Nexus(Experimental) mysidspr(toroplus) aosp_toroplus-userdebug
Motorola Xoom(미국 Wi-Fi) wingray full_wingray-userdebug
Nexus S soju(crespo) full_crespo-userdebug
Nexus S 4G sojus(crespo4g) full_crespo4g-userdebug

기기 플래싱

한 번의 명령으로 전체 Android 시스템을 플래시할 수 있습니다. 이렇게 하면 플래시 중인 시스템이 설치된 부트로더 및 라디오와 호환되는지 확인하고 부팅 파티션, 복구 파티션, 시스템 파티션을 모두 쓴 다음 시스템을 재부팅합니다. 또한 fastboot oem unlock과 유사하게 플래싱하면 모든 사용자 데이터가 지워집니다.

기기를 플래싱하려면 다음 단계를 따르세요.

  1. 이미지 파일을 이 파일이 속한 디렉터리에서 압축 해제합니다.
  2. ANDROID_PRODUCT_OUT 환경 변수를 설정하여 1단계에서 사용한 것과 동일한 디렉터리를 가리킵니다.
  3. 부팅 시에 적절한 키 조합을 누르거나 다음 명령어를 사용하여 기기를 fastboot 모드로 전환합니다.
    adb reboot bootloader
  4. 기기가 빠른 부팅 모드(Fastboot mode)에 들어간 후 다음 명령어를 실행합니다.
    fastboot flashall -w
    -w 옵션을 사용하면 기기의 /data 파티션을 완전 삭제합니다. 이 옵션은 특정 기기를 처음으로 플래시할 때 유용하지만 다른 경우에는 불필요합니다.

구성 플래싱

빠른 부팅 안내는 $ANDROID_PRODUCT_OUT/*에 있는 fastboot-info.txt라는 아티팩트에 설명되어 있습니다. 빠른 부팅에서 실행할 작업의 이 .txt 문서 목록은 m fastboot_info를 통해 재생성할 수 있습니다. 맞춤 플래싱 로직은 이 파일을 수정하여 도입할 수 있습니다.

지원되는 명령어

  1. flash %s: 주어진 파티션을 플래시합니다. 선택적 인수에는 --slot-other, {filename_path}, --apply-vbmeta가 포함됩니다.
  2. update-super: super 파티션을 업데이트합니다.
  3. if-wipe: wipe가 지정된 경우 조건부로 다른 기능을 실행합니다.
  4. erase %s: if-wife(예: if-wipe erase cache)를 사용하여 주어진 파티션(함께만 사용할 수 있음)을 삭제합니다.

기기를 초기화 상태로 복원

Nexus 및 Pixel 기기의 공장 출고 시 이미지에서 Google 기기의 공장 출고 시 이미지를 사용할 수 있습니다. Motorola Xoom의 공장 출고 시 이미지는 Motorola에서 직접 배포합니다.

권한 거부 오류 문제 해결

대부분의 Linux 시스템에서는 기본적으로 권한이 없는 사용자가 USB 포트에 액세스할 수 없습니다. 권한 거부 오류가 표시되면 Android 스튜디오의 개발용 기기 설정 안내를 참고하세요.

ADB가 이미 실행 중이고 기기에 연결할 수 없다면 adb kill-server를 사용하여 ADB를 중지할 수 있습니다. 이 명령어를 실행하면 ADB가 새 구성으로 다시 시작됩니다.