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 setDisableRamdump (boolean disableRamdump)
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 ()
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

设置禁用 Ramdump

public void setDisableRamdump (boolean disableRamdump)

参数
disableRamdump boolean

设置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

投掷
TargetSetupError

下载ExtraImageFiles

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

挂钩以允许子类在需要时下载额外的自定义图像文件。

参数
resourceParser IFlashingResourcesParser : IFlashingResourcesParser

retriever IFlashingResourcesRetriever : IFlashingResourcesRetriever

localBuild IDeviceBuildInfo : IDeviceBuildInfo

投掷
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
TargetSetupError
DeviceNotAvailableException

闪存分区

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
TargetSetupError
DeviceNotAvailableException

getFlashingResourcesRetriever

protected IFlashingResourcesRetriever getFlashingResourcesRetriever ()

退货
IFlashingResourcesRetriever

获取图像版本

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
TargetSetupError
DeviceNotAvailableException

有分区

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