FastbootDeviceFlasher

public class FastbootDeviceFlasher
extends Object implements IDeviceFlasher

java.lang.Object
com.android.tradefed.targetprep.FastbootDeviceFlasher


一個依賴 fastboot 在物理 Android 硬件上刷新圖像的類。

概括

字段

public static final String BASEBAND_IMAGE_NAME

公共構造函數

FastbootDeviceFlasher ()

公共方法

void flash ( ITestDevice device, IDeviceBuildInfo deviceBuild)

閃光燈建立在設備上。

CommandStatus getSystemFlashingStatus ()

檢索刷新主系統分區的命令執行狀態。

IDeviceFlasher.UserDataFlashOption getUserDataFlashOption ()

獲取是否應刷新、擦除或保留用戶數據圖像

void overrideDeviceOptions ( ITestDevice device)

覆蓋設備的選項。

void preFlashOperations ( ITestDevice device, IDeviceBuildInfo deviceBuild)

在實際閃爍關鍵部分之前必須進行的所有設置操作和檢查。

void setDataWipeSkipList ( dataWipeSkipList) setDataWipeSkipList ( dataWipeSkipList)

設置/data下的路徑列表以避免在使用ITestsZipInstaller時清除

請注意,跳過列表的粒度是/data的直接子級。

void setFlashOptions ( flashOptions) setFlashOptions ( flashOptions)

設置要通過 flash/update 命令傳遞的選項列表。

void setFlashingResourcesRetriever ( IFlashingResourcesRetriever retriever)

設置 flasher 檢索資源文件以進行閃爍的機制。

void setForceSystemFlash (boolean forceSystemFlash)

設置系統是否應始終閃爍,即使正在運行當前版本

void setRamdiskPartition (String ramdiskPartition)

設置 ramdisk 分區

void setShouldFlashRamdisk (boolean shouldFlashRamdisk)

設置在通過映像 zip 更新設備後是否應刷新額外的 ramdisk

void setUserDataFlashOption ( IDeviceFlasher.UserDataFlashOption flashOption)

切換是否應刷新、擦除或保留用戶數據圖像

void setWipeTimeout (long timeout)

設置擦除數據的超時時間。

boolean shouldFlashRamdisk ()

檢查刷機是否設置為具有額外的 ramdisk 是否應在通過映像 zip 更新設備後刷機

受保護的方法

void checkAndFlashBaseband ( ITestDevice device, IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新基帶映像。

boolean checkAndFlashBootloader ( ITestDevice device, IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新引導加載程序映像。

boolean checkAndFlashSystem ( ITestDevice device, String systemBuildId, String systemBuildFlavor, IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新系統映像。

boolean checkShouldFlashBaseband ( ITestDevice device, IDeviceBuildInfo deviceBuild)

檢查提供的設備上的基帶是否需要刷機。

IFlashingResourcesParser createFlashingResourcesParser ( IDeviceBuildInfo localBuild, DeviceDescriptor descriptor)

用於創建IFlashingResourcesParser的工廠方法。

void downloadExtraImageFiles ( IFlashingResourcesParser resourceParser, IFlashingResourcesRetriever retriever, IDeviceBuildInfo localBuild)

如果需要,掛鉤以允許子類下載額外的自定義圖像文件。

void downloadFlashingResources ( ITestDevice device, IDeviceBuildInfo localBuild)

下載所需的額外閃爍圖像文件

String executeFastbootCmd ( ITestDevice device, String... cmdArgs)

執行 fastboot 命令的輔助方法。

String executeLongFastbootCmd ( ITestDevice device, String... cmdArgs)

執行長時間運行的快速啟動命令的輔助方法。

String executeLongFastbootCmd ( ITestDevice device, envVarMap, String... cmdArgs) executeLongFastbootCmd ( ITestDevice device, envVarMap, String... cmdArgs)

使用環境變量執行長時間運行的快速啟動命令的輔助方法。

void flashBaseband ( ITestDevice device, File basebandImageFile)

刷新給定的基帶映像並重新啟動到引導加載程序

void flashBootloader ( ITestDevice device, File bootloaderImageFile)

閃爍給定的引導加載程序映像並重新啟動回引導加載​​程序

void flashExtraImages ( ITestDevice device, IDeviceBuildInfo deviceBuild)

在刷新系統和重新啟動之前刷新任何設備特定的分區。

void flashPartition ( ITestDevice device, File imgFile, String partition)

刷寫設備的單個分區

void flashRamdiskIfNeeded ( ITestDevice device, IDeviceBuildInfo deviceBuild)
void flashSystem ( ITestDevice device, IDeviceBuildInfo deviceBuild)

在設備上刷新系統映像。

void flashUserData ( ITestDevice device, IDeviceBuildInfo deviceBuild)

設備上的閃存用戶數據分區。

void flashUserDataFromDeviceImageFile ( ITestDevice device, IDeviceBuildInfo deviceBuild)

從設備映像文件中提取 userdata.img 並將其閃存到設備上

String getBootPartitionName ()

獲取此設備 flasher 的引導分區名稱。

String getBootloaderFilePrefix ( ITestDevice device)

獲取引導加載程序文件前綴。

String getCurrentSlot ( ITestDevice device)

檢索當前插槽的輔助方法(適用於支持 A/B 的設備)。

IFlashingResourcesRetriever getFlashingResourcesRetriever ()
String getImageVersion ( ITestDevice device, String imageName)

獲取設備上當前圖像版本的輔助方法。

IRunUtil getRunUtil ()

暴露用於測試。

void handleUserDataFlashing ( ITestDevice device, IDeviceBuildInfo deviceBuild)

處理用戶數據/緩存分區的刷新

boolean hasPartition ( ITestDevice device, String partition)

使用引導加載程序檢查指定的分區是否存在

void preFlashSetup ( ITestDevice device, IDeviceBuildInfo deviceBuild)

執行所需的任何其他預閃爍設置。

void setSystemBuildInfo (String systemBuildId, String systemBuildFlavor)
void verifyRequiredBoards ( ITestDevice device, IFlashingResourcesParser resourceParser, String deviceProductType)

驗證設備的產品類型是否支持 build-to-be-flashed。

void wipeCache ( ITestDevice device)

擦除設備上的緩存分區。

void wipePartition ( ITestDevice device, String partition)

使用 `fastboot erase <name>` 擦除指定分區

字段

BASEBAND_IMAGE_NAME

public static final String BASEBAND_IMAGE_NAME

公共構造函數

FastbootDeviceFlasher

public FastbootDeviceFlasher ()

公共方法

閃光

public void flash (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

閃光燈建立在設備上。

閃爍完成後立即返回。呼叫者應等待設備在線並可用,然後再進行測試。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :要閃存的IDeviceBuildInfo

投擲
DeviceNotAvailableException
TargetSetupError

獲取系統閃爍狀態

public CommandStatus getSystemFlashingStatus ()

檢索刷新主系統分區的命令執行狀態。

請注意,如果系統分區未刷新(系統已經有要刷新的構建),則命令狀態可能為null

退貨
CommandStatus

獲取用戶數據閃存選項

public IDeviceFlasher.UserDataFlashOption getUserDataFlashOption ()

獲取是否應刷新、擦除或保留用戶數據圖像

退貨
IDeviceFlasher.UserDataFlashOption是否應該刷新、擦除或保留用戶數據圖像

覆蓋設備選項

public void overrideDeviceOptions (ITestDevice device)

覆蓋設備的選項。如果特定設備不支持默認值,則用於覆蓋默認選項值。

preFlashOperations

public void preFlashOperations (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

在實際閃爍關鍵部分之前必須進行的所有設置操作和檢查。這些操作都不會包含在並發控制的關鍵部分中。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :要閃存的IDeviceBuildInfo

投擲
DeviceNotAvailableException
TargetSetupError

setDataWipeSkipList

public void setDataWipeSkipList ( dataWipeSkipList)

設置/data下的路徑列表以避免在使用ITestsZipInstaller時清除

請注意,跳過列表的粒度是/data的直接子級。

參數
dataWipeSkipList

設置FlashOptions

public void setFlashOptions ( flashOptions)

設置要通過 flash/update 命令傳遞的選項列表。

setFlashingResourcesRetriever

public void setFlashingResourcesRetriever (IFlashingResourcesRetriever retriever)

設置 flasher 檢索資源文件以進行閃爍的機制。

參數
retriever IFlashingResourcesRetriever :要使用的IFlashingResourcesRetriever

setForceSystemFlash

public void setForceSystemFlash (boolean forceSystemFlash)

設置系統是否應始終閃爍,即使正在運行當前版本

設置RamdiskPartition

public void setRamdiskPartition (String ramdiskPartition)

設置 ramdisk 分區

setShouldFlashRamdisk

public void setShouldFlashRamdisk (boolean shouldFlashRamdisk)

設置在通過映像 zip 更新設備後是否應刷新額外的 ramdisk

setUserDataFlashOption

public void setUserDataFlashOption (IDeviceFlasher.UserDataFlashOption flashOption)

切換是否應刷新、擦除或保留用戶數據圖像

設置擦除超時

public void setWipeTimeout (long timeout)

設置擦除數據的超時時間。

參數
timeout long

應該閃存盤

public boolean shouldFlashRamdisk ()

檢查刷機是否設置為具有額外的 ramdisk 是否應在通過映像 zip 更新設備後刷機

退貨
boolean

受保護的方法

checkAndFlash基帶

protected void checkAndFlashBaseband (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新基帶映像。如果設備上的當前版本!= 所需版本,則只會刷新基帶

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含要閃存的基帶映像的IDeviceBuildInfo

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果刷基帶失敗

checkAndFlashBootloader

protected boolean checkAndFlashBootloader (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新引導加載程序映像。

如果設備上的當前版本!= 所需版本,則只會刷新引導加載程序。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含要閃存的引導加載程序映像的IDeviceBuildInfo

退貨
boolean如果引導加載程序已刷新,則為true ;如果已跳過,則為false

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果無法刷新引導加載程序

checkAndFlash系統

protected boolean checkAndFlashSystem (ITestDevice device, 
                String systemBuildId, 
                String systemBuildFlavor, 
                IDeviceBuildInfo deviceBuild)

如果需要,請在設備上刷新系統映像。

請看ERROR(/#shouldFlashSystem(String,String,com.android.tradefed.build.IDeviceBuildInfo))

無論選擇何種路徑,在方法執行設備之後應該啟動到用戶空間。

參數
device ITestDevice : 要閃爍的ITestDevice

systemBuildId String : 當前在設備上運行的構建 id

systemBuildFlavor String : 當前在設備上運行的構建風格

deviceBuild IDeviceBuildInfo :包含要刷新的系統映像的IDeviceBuildInfo

退貨
boolean如果系統已閃爍,則為true ,如果已跳過,則為false

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果無法刷新引導加載程序

checkShouldFlash基帶

protected boolean checkShouldFlashBaseband (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

檢查提供的設備上的基帶是否需要刷機。

參數
device ITestDevice :要檢查的ITestDevice

deviceBuild IDeviceBuildInfo :包含要檢查的基帶映像的IDeviceBuildInfo

退貨
boolean

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果刷基帶失敗

createFlashingResourcesParser

protected IFlashingResourcesParser createFlashingResourcesParser (IDeviceBuildInfo localBuild, 
                DeviceDescriptor descriptor)

用於創建IFlashingResourcesParser的工廠方法。

用於單元測試。

參數
localBuild IDeviceBuildInfo :要解析的IDeviceBuildInfo

descriptor DeviceDescriptor :被刷寫的設備的描述符。

退貨
IFlashingResourcesParser由工廠方法創建的IFlashingResourcesParser

投擲
TargetSetupError

下載ExtraImageFiles

protected void downloadExtraImageFiles (IFlashingResourcesParser resourceParser, 
                IFlashingResourcesRetriever retriever, 
                IDeviceBuildInfo localBuild)

如果需要,掛鉤以允許子類下載額外的自定義圖像文件。

參數
resourceParser IFlashingResourcesParserIFlashingResourcesParser

retriever IFlashingResourcesRetrieverIFlashingResourcesRetriever

localBuild IDeviceBuildInfoIDeviceBuildInfo

投擲
TargetSetupError

下載FlashingResources

protected void downloadFlashingResources (ITestDevice device, 
                IDeviceBuildInfo localBuild)

下載所需的額外閃爍圖像文件

參數
device ITestDevice : 下載資源的ITestDevice

localBuild IDeviceBuildInfo :要填充的IDeviceBuildInfo 。假設設備映像文件已設置

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果未能檢索資源

執行FastbootCmd

protected String executeFastbootCmd (ITestDevice device, 
                String... cmdArgs)

執行 fastboot 命令的輔助方法。

參數
device ITestDevice :要在其上執行命令的ITestDevice

cmdArgs String : 提供給 fastboot 的參數

退貨
String如果非空,則將命令的 stderr 輸出字符串化。否則返回標準輸出 一些快速啟動命令很奇怪,因為它們在成功的情況下將輸出轉儲到標準錯誤

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果 fastboot 命令失敗

執行LongFastbootCmd

protected String executeLongFastbootCmd (ITestDevice device, 
                String... cmdArgs)

執行長時間運行的快速啟動命令的輔助方法。

注意:大多數快速啟動命令通常在INativeDevice.executeFastbootCommand(String)允許的超時時間內執行。但是,當多個設備同時刷新設備時,fastboot 命令可能需要比正常時間長得多的時間。

參數
device ITestDevice :要在其上執行命令的ITestDevice

cmdArgs String : 提供給 fastboot 的參數

退貨
String如果非空,則將命令的 stderr 輸出字符串化。否則返回標準輸出 一些快速啟動命令很奇怪,因為它們在成功的情況下將輸出轉儲到標準錯誤

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果 fastboot 命令失敗

執行LongFastbootCmd

protected String executeLongFastbootCmd (ITestDevice device, 
                 envVarMap, 
                String... cmdArgs)

使用環境變量執行長時間運行的快速啟動命令的輔助方法。

注意:大多數快速啟動命令通常在INativeDevice.executeFastbootCommand(String)允許的超時時間內執行。但是,當多個設備同時刷新設備時,fastboot 命令可能需要比正常時間長得多的時間。

參數
device ITestDevice :要在其上執行命令的ITestDevice

envVarMap : map 裡面有運行fastboot命令前需要設置的環境變量

cmdArgs String : 提供給 fastboot 的參數

退貨
String如果非空,則將命令的 stderr 輸出字符串化。否則返回標準輸出 一些快速啟動命令很奇怪,因為它們在成功的情況下將輸出轉儲到標準錯誤

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果 fastboot 命令失敗

閃存基帶

protected void flashBaseband (ITestDevice device, 
                File basebandImageFile)

刷新給定的基帶映像並重新啟動到引導加載程序

參數
device ITestDevice : 要閃爍的ITestDevice

basebandImageFile File : 基帶鏡像ERROR(/File)

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果刷基帶失敗

閃存引導程序

protected void flashBootloader (ITestDevice device, 
                File bootloaderImageFile)

閃爍給定的引導加載程序映像並重新啟動回引導加載​​程序

參數
device ITestDevice : 要閃爍的ITestDevice

bootloaderImageFile File :引導加載程序映像ERROR(/File)

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果閃退失敗

flashExtraImages

protected void flashExtraImages (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

在刷新系統和重新啟動之前刷新任何設備特定的分區。除非被覆蓋,否則無操作。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含構建文件的IDeviceBuildInfo

投擲
com.android.tradefed.device.DeviceNotAvailableException
TargetSetupError
DeviceNotAvailableException

閃存分區

protected void flashPartition (ITestDevice device, 
                File imgFile, 
                String partition)

刷寫設備的單個分區

參數
device ITestDevice : 要閃爍的ITestDevice

imgFile File : 一個ERROR(/File)指向要刷新的圖像

partition String : 要刷入的分區名稱

投擲
DeviceNotAvailableException
TargetSetupError

閃存盤如果需要

protected void flashRamdiskIfNeeded (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

參數
device ITestDevice

deviceBuild IDeviceBuildInfo

投擲
DeviceNotAvailableException
TargetSetupError

閃光系統

protected void flashSystem (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

在設備上刷新系統映像。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :要閃存的IDeviceBuildInfo

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果 fastboot 命令失敗

閃存用戶數據

protected void flashUserData (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

設備上的閃存用戶數據分區。

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含要閃存的文件的IDeviceBuildInfo

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果無法刷新用戶數據

flashUserDataFromDeviceImageFile

protected void flashUserDataFromDeviceImageFile (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

從設備映像文件中提取 userdata.img 並將其閃存到設備上

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含要閃存的文件的IDeviceBuildInfo

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果無法提取或刷新用戶數據

獲取引導分區名稱

protected String getBootPartitionName ()

獲取此設備 flasher 的引導分區名稱。

默認為“引導加載程序”。如有必要,子類應覆蓋。

退貨
String

getBootloaderFilePrefix

protected String getBootloaderFilePrefix (ITestDevice device)

獲取引導加載程序文件前綴。

默認為getBootPartitionName() 。如有必要,子類應覆蓋。

參數
device ITestDevice : 要閃爍的ITestDevice

退貨
String

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果獲取前綴失敗

獲取當前插槽

protected String getCurrentSlot (ITestDevice device)

檢索當前插槽的輔助方法(適用於支持 A/B 的設備)。

參數
device ITestDevice :要在其上執行命令的ITestDevice

退貨
String "a"、"b" 或 null(如果設備不支持 A/B)

投擲
com.android.tradefed.device.DeviceNotAvailableException
TargetSetupError
DeviceNotAvailableException

getFlashingResourcesRetriever

protected IFlashingResourcesRetriever getFlashingResourcesRetriever ()

退貨
IFlashingResourcesRetriever

獲取圖像版本

protected String getImageVersion (ITestDevice device, 
                String imageName)

獲取設備上當前圖像版本的輔助方法。

參數
device ITestDevice :要在其上執行命令的ITestDevice

imageName String : 要獲取的圖像的名稱。

退貨
String將命令的 stdout 輸出字符串化

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果 fastboot 命令失敗或無法確定版本

獲取運行工具

protected IRunUtil getRunUtil ()

暴露用於測試。

退貨
IRunUtil

處理用戶數據閃爍

protected void handleUserDataFlashing (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

處理用戶數據/緩存分區的刷新

參數
device ITestDevice : 要閃爍的ITestDevice

deviceBuild IDeviceBuildInfo :包含要閃存的文件的IDeviceBuildInfo

投擲
com.android.tradefed.device.DeviceNotAvailableException
TargetSetupError
DeviceNotAvailableException

有分區

protected boolean hasPartition (ITestDevice device, 
                String partition)

使用引導加載程序檢查指定的分區是否存在

參數
device ITestDevice :要操作的ITestDevice

partition String : 要檢查的分區名稱

退貨
boolean

投擲
DeviceNotAvailableException

preFlashSetup

protected void preFlashSetup (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

執行所需的任何其他預閃爍設置。除非被覆蓋,否則無操作。

參數
device ITestDevice :要準備的ITestDevice

deviceBuild IDeviceBuildInfo :包含構建文件的IDeviceBuildInfo

投擲
com.android.tradefed.device.DeviceNotAvailableException
TargetSetupError
DeviceNotAvailableException

設置系統構建信息

protected void setSystemBuildInfo (String systemBuildId, 
                String systemBuildFlavor)

參數
systemBuildId String

systemBuildFlavor String

verifyRequiredBoards

protected void verifyRequiredBoards (ITestDevice device, 
                IFlashingResourcesParser resourceParser, 
                String deviceProductType)

驗證設備的產品類型是否支持 build-to-be-flashed。

基本實現將驗證 deviceProductType 是否包含在IFlashingResourcesParser.getRequiredBoards()集合中。子類可以根據需要覆蓋。

參數
device ITestDevice : 要刷新的ITestDevice

resourceParser IFlashingResourcesParserIFlashingResourcesParser

deviceProductType String : device的產品類型

投擲
TargetSetupError如果構建所需的電路板信息與設備不匹配

擦除緩存

protected void wipeCache (ITestDevice device)

擦除設備上的緩存分區。

參數
device ITestDevice : 要閃爍的ITestDevice

投擲
DeviceNotAvailableException如果設備不可用
TargetSetupError如果無法刷新緩存

擦分區

protected void wipePartition (ITestDevice device, 
                String partition)

使用 `fastboot erase <name>` 擦除指定分區

參數
device ITestDevice :要操作的ITestDevice

partition String : 要擦除的分區的名稱

投擲
DeviceNotAvailableException
TargetSetupError