FastbootDeviceFlasher
public class FastbootDeviceFlasher
extends Object
implements IDeviceFlasher
对象 | |
↳ | 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 | setDataWipeSkipList ( dataWipeSkipList) setDataWipeSkipList ( dataWipeSkipList) 设置下的路径列表 /data 。 |
void | setFlashOptions ( flashOptions) setFlashOptions ( flashOptions) 设置要通过 flash/update 命令传递的选项列表。 |
void | setFlashingResourcesRetriever ( IFlashingResourcesRetriever retriever) 设置 flasher 可以检索用于 flash 的资源文件的机制。 |
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 () 检查 flasher 是否设置为有一个额外的 ramdisk 应该在通过 image 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) 创建一个工厂方法 |
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) 执行长时间运行的 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 () 获取此设备 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 | verifyRequiredBoards (ITestDevice device, IFlashingResourcesParser resourceParser, String deviceProductType) 验证设备的产品类型是否支持待烧写版本。 |
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 |
获取用户数据Flash选项
public IDeviceFlasher.UserDataFlashOption getUserDataFlashOption ()
获取是否应刷写、擦除或保留用户数据图像
退货 | |
---|---|
IDeviceFlasher.UserDataFlashOption | 是否应该刷写、擦除或保留用户数据图像 |
覆盖设备选项
public void overrideDeviceOptions (ITestDevice device)
覆盖设备的选项。如果特定设备不支持默认值,则用于覆盖默认选项值。
setDataWipeSkipList
public void setDataWipeSkipList (dataWipeSkipList)
设置下的路径列表/data
使用时避免清算ITestsZipInstaller
/data
。参数 | |
---|---|
dataWipeSkipList |
设置Flash选项
public void setFlashOptions (flashOptions)
设置要通过 flash/update 命令传递的选项列表。
setFlashingResourcesRetriever
public void setFlashingResourcesRetriever (IFlashingResourcesRetriever retriever)
设置 flasher 可以检索用于 flash 的资源文件的机制。
参数 | |
---|---|
retriever | IFlashingResourcesRetriever :在IFlashingResourcesRetriever 来使用 |
setForceSystemFlash
public void setForceSystemFlash (boolean forceSystemFlash)
设置系统是否应该始终闪烁,即使正在运行当前构建
设置随机磁盘分区
public void setRamdiskPartition (String ramdiskPartition)
设置 ramdisk 分区
setShouldFlashRamdisk
public void setShouldFlashRamdisk (boolean shouldFlashRamdisk)
设置是否在通过映像 zip 更新设备后刷新额外的 ramdisk
设置用户数据Flash选项
public void setUserDataFlashOption (IDeviceFlasher.UserDataFlashOption flashOption)
切换用户数据图像是否应刷写、擦除或保留
设置擦除超时
public void setWipeTimeout (long timeout)
设置擦除数据的超时时间。
参数 | |
---|---|
timeout | long |
应该是闪存盘
public boolean shouldFlashRamdisk ()
检查 flasher 是否设置为有一个额外的 ramdisk 应该在通过 image 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 | 如果闪存引导加载程序失败 |
检查和闪光系统
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 | 如果闪存引导加载程序失败 |
checkShouldFlashBaseband
protected boolean checkShouldFlashBaseband (ITestDevice device, IDeviceBuildInfo deviceBuild)
检查所提供设备上的基带是否需要刷机。
参数 | |
---|---|
device | ITestDevice :在ITestDevice 要检查 |
deviceBuild | IDeviceBuildInfo :在IDeviceBuildInfo 包含基带图片签 |
退货 | |
---|---|
boolean |
投掷 | |
---|---|
DeviceNotAvailableException | 如果设备不可用 |
TargetSetupError | 如果刷基带失败 |
创建闪烁资源解析器
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)
执行长时间运行的 fastboot 命令的辅助方法。
注:大多数FASTBOOT命令通常所允许的超时时间内执行INativeDevice.executeFastbootCommand(String)
。但是,当多个设备同时刷新设备时,fastboot 命令可能需要比正常情况更长的时间。
参数 | |
---|---|
device | ITestDevice :在ITestDevice 上执行命令 |
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 | 如果刷机失败 |
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 |
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 | 如果无法提取或闪存用户数据 |
获取引导分区名称
protected String getBootPartitionName ()
获取此设备 flasher 的启动分区名称。
默认为“引导加载程序”。如有必要,子类应覆盖。
退货 | |
---|---|
String |
获取引导加载程序文件前缀
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 |
预闪存设置
protected void preFlashSetup (ITestDevice device, IDeviceBuildInfo deviceBuild)
执行所需的任何其他预闪设置。除非被覆盖,否则无操作。
参数 | |
---|---|
device | ITestDevice :在ITestDevice 准备 |
deviceBuild | IDeviceBuildInfo :在IDeviceBuildInfo 包含构建文件 |
投掷 | |
---|---|
| com.android.tradefed.device.DeviceNotAvailableException |
TargetSetupError | |
DeviceNotAvailableException |
验证必需板
protected void verifyRequiredBoards (ITestDevice device, IFlashingResourcesParser resourceParser, String deviceProductType)
验证设备的产品类型是否支持待烧写版本。
基本实现将验证deviceProductType包括在IFlashingResourcesParser.getRequiredBoards()
集合。子类可以根据需要覆盖。
参数 | |
---|---|
device | ITestDevice :在ITestDevice 将闪现 |
resourceParser | IFlashingResourcesParser :在IFlashingResourcesParser |
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 |