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)

Flash 在設備上構建。

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)

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

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)

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

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 ()

獲取此設備刷寫器的啟動分區名稱。

String getBootloaderFilePrefix ( ITestDevice device)

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

String getCurrentSlot ( ITestDevice device)

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

IFlashingResourcesRetriever getFlashingResourcesRetriever ()
FuseUtil getFuseUtil ()
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)

Flash 在設備上構建。

刷機完成後立即返回。來電者應等待設備在線並可用,然後再繼續進行測試。

參數
device ITestDevice :要閃存的ITestDevice

deviceBuild IDeviceBuildInfo :要刷新的IDeviceBuildInfo

投擲
DeviceNotAvailableException
TargetSetupError

獲取系統閃爍狀態

public CommandStatus getSystemFlashingStatus ()

檢索閃存主系統分區的命令執行狀態。

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

退貨
CommandStatus

getUserDataFlashOption

public IDeviceFlasher.UserDataFlashOption getUserDataFlashOption ()

獲取用戶數據映像是否應閃爍、擦除或保留

退貨
IDeviceFlasher.UserDataFlashOption用戶數據映像是否應閃現、擦除或保留

覆蓋設備選項

public void overrideDeviceOptions (ITestDevice device)

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

預閃操作

public void preFlashOperations (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

必須在實際閃爍臨界區之前發生的所有設置操作和檢查。這些操作都不會包含在並發控制的臨界區中。

參數
device ITestDevice :要閃存的ITestDevice

deviceBuild IDeviceBuildInfo :要刷新的IDeviceBuildInfo

投擲
DeviceNotAvailableException
TargetSetupError

setDataWipeSkipList

public void setDataWipeSkipList ( dataWipeSkipList)

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

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

參數
dataWipeSkipList

設置Flash選項

public void setFlashOptions ( flashOptions)

設置一個選項列表以與 flash/update 命令一起傳遞。

setFlashingResourcesRetriever

public void setFlashingResourcesRetriever (IFlashingResourcesRetriever retriever)

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

參數
retriever IFlashingResourcesRetriever :要使用的IFlashingResourcesRetriever

setForceSystemFlash

public void setForceSystemFlash (boolean forceSystemFlash)

設置系統是否應該始終閃爍,即使運行當前構建

設置Ramdisk分區

public void setRamdiskPartition (String ramdiskPartition)

設置 ramdisk 分區

設置ShouldFlashRamdisk

public void setShouldFlashRamdisk (boolean shouldFlashRamdisk)

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

設置用戶數據閃存選項

public void setUserDataFlashOption (IDeviceFlasher.UserDataFlashOption flashOption)

切換是否應閃爍、擦除或保留用戶數據映像

設置擦除超時

public void setWipeTimeout (long timeout)

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

參數
timeout long

shouldFlashRamdisk

public boolean shouldFlashRamdisk ()

檢查閃存是否設置為有一個額外的 ramdisk 應該在通過圖像 zip 更新設備後閃存

退貨
boolean

受保護的方法

checkAndFlash基帶

protected void checkAndFlashBaseband (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

如果需要,請在設備上閃存基帶映像。如果設備上的當前版本 != 所需版本,將僅閃爍基帶

參數
device ITestDevice :要閃存的ITestDevice

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

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

檢查和FlashBootloader

protected boolean checkAndFlashBootloader (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

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

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

參數
device ITestDevice :要閃存的ITestDevice

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

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

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

checkAndFlashSystem

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如果無法刷新引導加載程序

檢查ShouldFlashBaseband

protected boolean checkShouldFlashBaseband (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

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

參數
device ITestDevice :要檢查的ITestDevice

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

退貨
boolean

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

創建FlashingResourcesParser

protected IFlashingResourcesParser createFlashingResourcesParser (IDeviceBuildInfo localBuild, 
                DeviceDescriptor descriptor)

用於創建IFlashingResourcesParser工廠方法。

公開進行單元測試。

參數
localBuild IDeviceBuildInfo :要解析的IDeviceBuildInfo

descriptor DeviceDescriptor :正在刷新的設備的描述符。

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

投擲
com.android.tradefed.targetprep.TargetSetupError
TargetSetupError

下載ExtraImageFiles

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

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

參數
resourceParser IFlashingResourcesParser : IFlashingResourcesParser

retriever IFlashingResourcesRetriever : IFlashingResourcesRetriever

localBuild IDeviceBuildInfo : IDeviceBuildInfo

投擲
com.android.tradefed.targetprep.TargetSetupError
TargetSetupError

下載刷機資源

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 輸出字符串化。否則返回 stdout 一些 fastboot 命令很奇怪,因為它們在成功的情況下將輸出轉儲到 stderr

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

executeLongFastbootCmd

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

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

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

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

cmdArgs String : 提供給 fastboot 的參數

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

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

executeLongFastbootCmd

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

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

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

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

envVarMap : map 攜帶了運行fastboot命令前需要設置的環境變量

cmdArgs String : 提供給 fastboot 的參數

退貨
String如果非空,則將命令的 stderr 輸出字符串化。否則返回 stdout 一些 fastboot 命令很奇怪,因為它們在成功的情況下將輸出轉儲到 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如果閃爍失敗

閃光ExtraImages

protected void flashExtraImages (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

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

參數
device ITestDevice :要閃存的ITestDevice

deviceBuild IDeviceBuildInfo :包含構建文件的IDeviceBuildInfo

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

閃存分區

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

閃存設備的單個分區

參數
device ITestDevice :要閃存的ITestDevice

imgFile File : ERROR(/File)指向要閃爍的圖像

partition String : 要刷入的分區的名稱

投擲
DeviceNotAvailableException
TargetSetupError

flashRamdiskIfNeeded

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如果無法提取或刷新用戶數據

getBootPartitionName

protected String getBootPartitionName ()

獲取此設備刷寫器的啟動分區名稱。

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

退貨
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
com.android.tradefed.targetprep.TargetSetupError
DeviceNotAvailableException
TargetSetupError

getFlashingResourcesRetriever

protected IFlashingResourcesRetriever getFlashingResourcesRetriever ()

退貨
IFlashingResourcesRetriever

獲取保險絲實用程序

protected FuseUtil getFuseUtil ()

退貨
FuseUtil

獲取圖像版本

protected String getImageVersion (ITestDevice device, 
                String imageName)

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

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

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

退貨
String字符串命令的標準輸出輸出

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

getRunUtil

protected IRunUtil getRunUtil ()

暴露測試。

退貨
IRunUtil

處理用戶數據閃爍

protected void handleUserDataFlashing (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

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

參數
device ITestDevice :要閃存的ITestDevice

deviceBuild IDeviceBuildInfo :包含要刷新的文件的IDeviceBuildInfo

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

有分區

protected boolean hasPartition (ITestDevice device, 
                String partition)

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

參數
device ITestDevice :要操作的ITestDevice

partition String : 要檢查的分區的名稱

退貨
boolean

投擲
DeviceNotAvailableException

預閃設置

protected void preFlashSetup (ITestDevice device, 
                IDeviceBuildInfo deviceBuild)

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

參數
device ITestDevice :要準備的ITestDevice

deviceBuild IDeviceBuildInfo :包含構建文件的IDeviceBuildInfo

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

設置系統構建信息

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 IFlashingResourcesParser : IFlashingResourcesParser

deviceProductType Stringdevice的產品類型

投擲
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