TestDevice
public
class
TestDevice
extends NativeDevice
java.lang.Object | ||
↳ | com.android.tradefed.device.NativeDevice | |
↳ | com.android.tradefed.device.TestDevice |
为完整堆栈 Android 设备实现 ITestDevice
摘要
嵌套类 | |
---|---|
class |
TestDevice.MicrodroidBuilder
用于创建 Microdroid TestDevice 的构建器。 |
字段 | |
---|---|
public
static
final
String |
DISMISS_KEYGUARD_CMD
可用于关闭屏幕锁定功能的命令。 |
公共构造函数 | |
---|---|
TestDevice(IDevice device, IDeviceStateMonitor stateMonitor, IDeviceMonitor allocationMonitor)
|
公共方法 | |
---|---|
boolean
|
canSwitchToHeadlessSystemUser()
返回是否允许切换到无头 SYSTEM 用户。 |
boolean
|
clearErrorDialogs()
尝试关闭设备界面上当前显示的所有错误对话框。 |
int
|
createUser(String name)
创建一个具有给定名称和默认标志 0 的用户。 |
int
|
createUser(String name, boolean guest, boolean ephemeral, boolean forTesting)
使用指定的名称和提供的标志创建用户 |
int
|
createUser(String name, boolean guest, boolean ephemeral)
使用指定的名称和提供的标志创建用户 |
int
|
createUserNoThrow(String name)
创建一个具有给定名称和默认标志 0 的用户。 |
void
|
disableKeyguard()
尝试停用屏幕锁定功能。 |
boolean
|
doesFileExist(String deviceFilePath)
用于确定设备上是否存在文件的辅助方法。 |
boolean
|
doesFileExist(String deviceFilePath, int userId)
用于确定给定用户是否在设备上有文件的辅助方法。 |
File
|
dumpHeap(String process, String devicePath)
尝试从 system_server 转储堆。 |
|
getActiveApexes()
提取有关设备上已激活的 APEX 的信息。 |
|
getAllSettings(String namespace)
返回请求的命名空间的键值对。 |
String
|
getAndroidId(int userId)
查找并返回与 userId 关联的 android-id,如果未找到,则返回 null。 |
|
getAndroidIds()
创建一个包含匹配用户 ID 的 Android ID 的 Map。 |
PackageInfo
|
getAppPackageInfo(String packageName)
提取设备上安装的软件包的相关信息。 |
|
getAppPackageInfos()
提取设备上安装的软件包的信息。 |
InputStreamSource
|
getBugreport()
从设备检索 bug 报告。 |
InputStreamSource
|
getBugreportz()
从设备检索 bugreportz。 |
DeviceFoldableState
|
getCurrentFoldableState()
返回设备的当前可折叠状态;如果发生了一些问题,则返回 null。 |
int
|
getCurrentUser()
返回当前运行用户的 ID。 |
|
getFoldableStates()
返回设备上的可折叠状态列表。 |
|
getInstalledPackageNames()
提取设备上存在的应用软件包名称。 |
KeyguardControllerState
|
getKeyguardState()
返回一个对象以获取屏幕锁定功能的当前状态,如果不受支持,则返回 null。 |
Integer
|
getMainUserId()
返回主要用户 ID。 |
|
getMainlineModuleInfo()
获取设备上安装的 Mainline 模块的相关信息。 |
int
|
getMaxNumberOfRunningUsersSupported()
获取支持的并发运行用户数上限。 |
int
|
getMaxNumberOfUsersSupported()
获取支持的用户数量上限。 |
Integer
|
getPrimaryUserId()
返回主要用户 ID。 |
InputStreamSource
|
getScreenshot()
从设备截取屏幕截图。 |
InputStreamSource
|
getScreenshot(String format, boolean rescale)
从设备截取屏幕截图。 |
InputStreamSource
|
getScreenshot(long displayId)
从指定显示屏 ID 的设备抓取屏幕截图。 |
InputStreamSource
|
getScreenshot(String format)
从设备截取屏幕截图。 |
String
|
getSetting(String namespace, String key)
请参阅 |
String
|
getSetting(int userId, String namespace, String key)
返回请求的设置的值。 |
|
getUninstallablePackageNames()
提取可卸载的应用软件包名称。 |
int
|
getUserFlags(int userId)
查找并返回指定用户的标志。 |
|
getUserInfos()
获取设备上 useId 与 |
int
|
getUserSerialNumber(int userId)
返回与 userId 关联的序列号(如果有),在任何其他情况下均返回 -10000。 |
boolean
|
hasFeature(String feature)
检查设备上是否提供某项功能。 |
String
|
installPackage(File packageFile, boolean reinstall, String... extraArgs)
在设备上安装 Android 软件包。 |
String
|
installPackage(File packageFile, boolean reinstall, boolean grantPermissions, String... extraArgs)
在设备上安装 Android 软件包。 |
String
|
installPackage(File packageFile, File certFile, boolean reinstall, String... extraArgs)
在设备上安装 Android 软件包。 |
String
|
installPackageForUser(File packageFile, boolean reinstall, boolean grantPermissions, int userId, String... extraArgs)
在设备上为指定用户安装 Android 软件包。 |
String
|
installPackageForUser(File packageFile, boolean reinstall, int userId, String... extraArgs)
在设备上为指定用户安装 Android 软件包。 |
String
|
installPackages(
|
String
|
installPackages(
|
String
|
installPackagesForUser(
|
String
|
installPackagesForUser(
|
String
|
installRemotePackages(
|
String
|
installRemotePackages(
|
boolean
|
isAppEnumerationSupported()
检查设备上的平台是否支持应用枚举 |
boolean
|
isHeadlessSystemUserMode()
返回设备是否使用无头系统用户模式。 |
boolean
|
isMainUserPermanentAdmin()
返回主用户是否为永久性管理员,并且无法删除或降级为非管理员状态。 |
boolean
|
isMultiUserSupported()
确定是否支持多用户。 |
boolean
|
isPackageInstalled(String packageName)
查询设备上的给定软件包名称,以检查其当前是否已安装。 |
boolean
|
isPackageInstalled(String packageName, String userId)
查询设备中是否存在给定的软件包名称和给定的用户 ID,以检查该软件包当前是否已为该用户安装。 |
boolean
|
isUserRunning(int userId)
检查指定用户是否正在运行。 |
boolean
|
isUserSecondary(int userId)
根据指定用户的标志返回该用户是否为次要用户。 |
boolean
|
isUserVisible(int userId)
检查指定用户是否可见。 |
boolean
|
isUserVisibleOnDisplay(int userId, int displayId)
检查指定用户是否在指定显示屏中显示。 |
boolean
|
isVisibleBackgroundUsersOnDefaultDisplaySupported()
返回设备是否允许在 |
boolean
|
isVisibleBackgroundUsersSupported()
返回设备是否允许用户在后台启动时保持可见状态。 |
|
listDisplayIds()
收集“dumpsys SurfaceFlinger”报告的设备上可用显示屏 ID 的列表。 |
|
listDisplayIdsForStartingVisibleBackgroundUsers()
获取可用于 |
|
listUsers()
获取设备上的用户列表。 |
boolean
|
logBugreport(String dataName, ITestLogger listener)
用于获取 bugreport 并将其记录到报告程序的辅助方法。 |
void
|
notifySnapuserd(SnapuserdWaitPhase waitPhase)
|
void
|
postInvocationTearDown(Throwable exception)
针对设备专用所需清理操作的额外步骤,将在调用完成后执行。 |
boolean
|
removeAdmin(String componentName, int userId)
移除指定用户中的指定设备管理员,如果成功,则返回 |
void
|
removeOwners()
尽最大努力移除所有现有的设备个人资料所有者。 |
boolean
|
removeUser(int userId)
从设备中移除指定用户。 |
boolean
|
setDeviceOwner(String componentName, int userId)
在指定用户中将设备管理组件设为设备所有者。 |
void
|
setFirstBootloaderReboot()
|
void
|
setSetting(String namespace, String key, String value)
请参阅 |
void
|
setSetting(int userId, String namespace, String key, String value)
向给定用户的命名空间添加设置值。 |
void
|
shutdownMicrodroid(ITestDevice microdroidDevice)
关闭 microdroid 设备(如果有)。 |
boolean
|
startUser(int userId)
如果给定用户当前处于停止状态,则在后台启动该用户。 |
boolean
|
startUser(int userId, boolean waitFlag)
如果给定用户当前处于停止状态,则在后台启动该用户。 |
boolean
|
startVisibleBackgroundUser(int userId, int displayId, boolean waitFlag)
在后台启动给定用户,在给定显示屏中显示(即允许用户在该显示屏中启动 activity)。 |
boolean
|
stopUser(int userId, boolean waitFlag, boolean forceFlag)
停止给定用户。 |
boolean
|
stopUser(int userId)
停止给定用户。 |
boolean
|
supportsMicrodroid()
检查运行 microdroid 的前提条件。 |
boolean
|
supportsMicrodroid(boolean protectedVm)
检查运行 microdroid 的前提条件。 |
boolean
|
switchUser(int userId)
切换到另一个 userId(默认超时)。 |
boolean
|
switchUser(int userId, long timeout)
将其他 userId 作为截止期限切换到其他 userId。 |
Bugreport
|
takeBugreport()
获取 bugreport 并将其返回到 |
String
|
uninstallPackage(String packageName)
从设备中卸载 Android 软件包。 |
String
|
uninstallPackageForUser(String packageName, int userId)
为指定用户从设备上卸载 Android 软件包。 |
void
|
waitForSnapuserd(SnapuserdWaitPhase currentPhase)
|
受保护的方法 | |
---|---|
AaptParser
|
createParser(File appFile)
|
void
|
doAdbReboot(NativeDevice.RebootMode rebootMode, String reason)
执行 adb 重启。 |
InputStreamSource
|
getBugreportInternal()
|
File
|
getBugreportzInternal()
用于将 bugreportz ZIP 文件作为 |
long
|
getCheckNewUserSleep()
公开以供测试。 |
long
|
getHostCurrentTime()
公开以供测试 |
void
|
prePostBootSetup()
允许每种设备类型(AndroidNativeDevice、TestDevice)替换此方法以进行特定的启动后设置。 |
字段
DISMISS_KEYGUARD_CMD
public static final String DISMISS_KEYGUARD_CMD
可用于关闭屏幕锁定功能的命令。
公共构造函数
TestDevice
public TestDevice (IDevice device, IDeviceStateMonitor stateMonitor, IDeviceMonitor allocationMonitor)
公共方法
canSwitchToHeadlessSystemUser
public boolean canSwitchToHeadlessSystemUser ()
返回是否允许切换到无头 SYSTEM 用户。
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
clearErrorDialogs
public boolean clearErrorDialogs ()
尝试关闭设备界面上当前显示的所有错误对话框。
返回 | |
---|---|
boolean |
如果没有对话框或对话框已成功清除,则为 true 。
否则为 false 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
createUser
public int createUser (String name)
创建一个具有给定名称和默认标志 0 的用户。
参数 | |
---|---|
name |
String :要在设备上创建的用户 |
返回 | |
---|---|
int |
创建的用户 ID 对应的整数 |
抛出 | |
---|---|
DeviceNotAvailableException |
createUser
public int createUser (String name, boolean guest, boolean ephemeral, boolean forTesting)
使用指定的名称和提供的标志创建用户
参数 | |
---|---|
name |
String :要在设备上创建的用户 |
guest |
boolean :在创建期间启用用户标志 --guest |
ephemeral |
boolean :在创建时启用用户标志 --ephemeral |
forTesting |
boolean :在创建过程中启用测试标志 --for-testing |
返回 | |
---|---|
int |
所创建用户的 ID |
抛出 | |
---|---|
DeviceNotAvailableException |
createUser
public int createUser (String name, boolean guest, boolean ephemeral)
使用指定的名称和提供的标志创建用户
参数 | |
---|---|
name |
String :要在设备上创建的用户 |
guest |
boolean :在创建期间启用用户标志 --guest |
ephemeral |
boolean :在创建时启用用户标志 --ephemeral |
返回 | |
---|---|
int |
所创建用户的 ID |
抛出 | |
---|---|
DeviceNotAvailableException |
createUserNoThrow
public int createUserNoThrow (String name)
创建一个具有给定名称和默认标志 0 的用户。
参数 | |
---|---|
name |
String :要在设备上创建的用户 |
返回 | |
---|---|
int |
创建的用户 ID 对应的整数,如果出错,则为 -1。 |
抛出 | |
---|---|
DeviceNotAvailableException |
disableKeyguard
public void disableKeyguard ()
尝试停用屏幕锁定功能。
首先等待输入调度准备就绪,这大约与设备报告 BOOT_COMPLETE 的时间同时发生,显然是异步的,因为当前框架实现偶尔会出现竞态条件。然后,系统会发送命令来关闭屏幕锁定(仅适用于非安全屏幕锁定)
抛出 | |
---|---|
DeviceNotAvailableException |
doesFileExist
public boolean doesFileExist (String deviceFilePath)
用于确定设备上是否存在文件的辅助方法。
参数 | |
---|---|
deviceFilePath |
String :要检查的设备上文件的绝对路径 |
返回 | |
---|---|
boolean |
如果文件存在,则为 true ;否则为 false 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
doesFileExist
public boolean doesFileExist (String deviceFilePath, int userId)
用于确定给定用户是否在设备上存在文件的辅助方法。
参数 | |
---|---|
deviceFilePath |
String :要检查的设备上文件的绝对路径 |
userId |
int :用于检查文件是否存在的用户 ID |
返回 | |
---|---|
boolean |
如果文件存在,则为 true ;否则为 false 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
dumpHeap
public File dumpHeap (String process, String devicePath)
尝试从 system_server 转储堆。清理转储的文件是调用者的责任。
参数 | |
---|---|
process |
String :要转储堆的设备进程的名称。 |
devicePath |
String :设备上用于放置转储文件的路径。此位置必须是权限允许的。 |
返回 | |
---|---|
File |
包含报告的 ERROR(/File) 。如果失败,则为 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getActiveApexes
publicgetActiveApexes ()
提取有关设备上已启用的 APEX 的信息。
返回 | |
---|---|
|
目前在设备上激活的 ApexInfo 中,ERROR(/Set) 个 |
抛出 | |
---|---|
DeviceNotAvailableException |
getAllSettings
publicgetAllSettings (String namespace)
返回请求的命名空间的键值对。
参数 | |
---|---|
namespace |
String :必须是 {"system", "secure", "global"} 之一 |
返回 | |
---|---|
|
键值对的映射。如果不支持命名空间,则为 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getAndroidId
public String getAndroidId (int userId)
查找并返回与 userId 关联的 android-id,如果未找到,则返回 null。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
getAndroidIds
publicgetAndroidIds ()
创建一个包含找到的与用户 ID 匹配的 Android ID 的 Map。我们无法保证每个用户 ID 都能在此函数中找到关联的 Android ID,因此某些用户 ID 可能会与 null 匹配。
返回 | |
---|---|
|
找到与用户 ID 匹配的 Android ID 的映射。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getAppPackageInfo
public PackageInfo getAppPackageInfo (String packageName)
提取设备上安装的软件包的相关信息。
参数 | |
---|---|
packageName |
String |
返回 | |
---|---|
PackageInfo |
PackageInfo 或 null (如果无法检索到信息) |
抛出 | |
---|---|
DeviceNotAvailableException |
getAppPackageInfos
publicgetAppPackageInfos ()
提取设备上安装的软件包的信息。
返回 | |
---|---|
|
设备上安装的 PackageInfo 的 ERROR(/List) 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getBugreport
public InputStreamSource getBugreport ()
从设备检索 bug 报告。
此实现保证在没有 SD 卡(或 SD 卡尚未挂载)的设备上继续正常运行。
返回 | |
---|---|
InputStreamSource |
一个 InputStreamSource ,用于按需生成 bugreport 内容。如果失败了,InputStreamSource 将生成一个空的 ERROR(/InputStream) 。 |
getBugreportz
public InputStreamSource getBugreportz ()
从设备检索 bugreportz。Zip 格式的 bugreport 包含主要 bugreport 和其他对调试有用的日志文件。
仅适用于“adb 版本”高于 1.0.36 的设备
返回 | |
---|---|
InputStreamSource |
包含 bugreportz 的 ZIP 文件的 InputStreamSource ,失败时返回 null。 |
getCurrentFoldableState
public DeviceFoldableState getCurrentFoldableState ()
返回设备的当前可折叠状态;如果发生某些问题,则返回 null。
返回 | |
---|---|
DeviceFoldableState |
抛出 | |
---|---|
DeviceNotAvailableException |
getCurrentUser
public int getCurrentUser ()
返回当前运行用户的 ID。如果发生错误,则返回 -10000。
返回 | |
---|---|
int |
抛出 | |
---|---|
DeviceNotAvailableException |
getFoldableStates
publicgetFoldableStates ()
返回设备上的可折叠状态列表。可以使用“cmd device_state print-states”获取。
返回 | |
---|---|
|
抛出 | |
---|---|
DeviceNotAvailableException |
getInstalledPackageNames
publicgetInstalledPackageNames ()
提取设备上存在的应用软件包名称。
返回 | |
---|---|
|
设备上当前安装的 String 软件包名称的 ERROR(/Set) 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getKeyguardState
public KeyguardControllerState getKeyguardState ()
返回一个对象以获取屏幕锁定功能的当前状态,如果不受支持,则返回 null。
返回 | |
---|---|
KeyguardControllerState |
一个 KeyguardControllerState ,其中包含屏幕锁定状态的快照;如果不支持屏幕锁定查询,则返回 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getMainUserId
public Integer getMainUserId ()
返回主要用户 ID。
返回 | |
---|---|
Integer |
主要用户的 userId(如果有),如果没有主要用户,则返回 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getMainlineModuleInfo
publicgetMainlineModuleInfo ()
获取设备上安装的 Mainline 模块的相关信息。
返回 | |
---|---|
|
设备上当前安装的 String Mainline 模块的 ERROR(/Set) 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getMaxNumberOfRunningUsersSupported
public int getMaxNumberOfRunningUsersSupported ()
获取支持的并发运行用户数上限。默认设置为 0。
返回 | |
---|---|
int |
一个整数,表示同时运行的用户数 |
抛出 | |
---|---|
DeviceNotAvailableException |
getMaxNumberOfUsersSupported
public int getMaxNumberOfUsersSupported ()
获取支持的用户数量上限。默认设置为 0。
返回 | |
---|---|
int |
一个整数,表示支持的用户数 |
抛出 | |
---|---|
DeviceNotAvailableException |
getPrimaryUserId
public Integer getPrimaryUserId ()
返回主要用户 ID。
返回 | |
---|---|
Integer |
主要用户的 userId(如果有),如果没有主要用户,则为 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getScreenshot
public InputStreamSource getScreenshot ()
从设备截取屏幕截图。
返回 | |
---|---|
InputStreamSource |
屏幕截图的 InputStreamSource (采用 PNG 格式),如果屏幕截图未成功,则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getScreenshot
public InputStreamSource getScreenshot (String format, boolean rescale)
从设备截取屏幕截图。建议改用 getScreenshot(String)
并采用 JPEG 编码,以缩减大小。
参数 | |
---|---|
format |
String :支持 PNG、JPEG |
rescale |
boolean :确定是否应重新缩放屏幕截图以减小生成图片的大小 |
返回 | |
---|---|
InputStreamSource |
屏幕截图的 InputStreamSource (采用 .jpg 格式),如果屏幕截图未成功,则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getScreenshot
public InputStreamSource getScreenshot (long displayId)
从指定显示屏 ID 的设备抓取屏幕截图。格式为 PNG。
TODO:扩展上述实现以支持“format”和“rescale”
参数 | |
---|---|
displayId |
long :要获取屏幕截图的屏幕的显示 ID。 |
返回 | |
---|---|
InputStreamSource |
屏幕截图的 InputStreamSource (采用 .jpg 格式),如果屏幕截图未成功,则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getScreenshot
public InputStreamSource getScreenshot (String format)
从设备截取屏幕截图。 建议改用 getScreenshot(format) 并采用 JPEG 编码,以缩减文件大小
参数 | |
---|---|
format |
String :支持 PNG、JPEG |
返回 | |
---|---|
InputStreamSource |
屏幕截图的 InputStreamSource (采用 .jpg 格式),如果屏幕截图未成功,则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getSetting
public String getSetting (String namespace, String key)
请参阅 getSetting(int, String, String)
,并在系统用户上执行。
参数 | |
---|---|
namespace |
String |
key |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
getSetting
public String getSetting (int userId, String namespace, String key)
返回请求的设置的值。 命名空间必须为以下各项之一:{"system", "secure", "global"}
参数 | |
---|---|
userId |
int |
namespace |
String |
key |
String |
返回 | |
---|---|
String |
与用户的命名空间:键关联的值。如果未找到,则为 null。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getUninstallablePackageNames
publicgetUninstallablePackageNames ()
提取可卸载的应用软件包名称。目前,这定义为非系统软件包和更新后的系统软件包。
返回 | |
---|---|
|
设备上当前安装的不可卸载的 String 软件包名称的 ERROR(/Set) 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getUserFlags
public int getUserFlags (int userId)
查找并返回指定用户的标志。 标志在 Android 开源项目的“android.content.pm.UserInfo”类中定义。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
int |
与所提供的 userId 相关联的标志(如果有),在任何其他情况下均为 -10000。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getUserInfos
publicgetUserInfos ()
获取设备上 useId 与 UserInfo
的映射。如果设备的输出不符合预期,则会抛出 DeviceRuntimeException
。
返回 | |
---|---|
|
UserInfo 对象列表。 |
抛出 | |
---|---|
DeviceNotAvailableException |
getUserSerialNumber
public int getUserSerialNumber (int userId)
返回与 userId 关联的序列号(如果有),在任何其他情况下均返回 -10000。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
int |
抛出 | |
---|---|
DeviceNotAvailableException |
hasFeature
public boolean hasFeature (String feature)
检查设备上是否提供某项功能。
参数 | |
---|---|
feature |
String :格式应为“feature: |
返回 | |
---|---|
boolean |
如果找到地图项,则返回 true;否则,返回 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackage
public String installPackage (File packageFile, boolean reinstall, String... extraArgs)
在设备上安装 Android 软件包。
参数 | |
---|---|
packageFile |
File :要安装的 apk 文件 |
reinstall |
boolean :true (如果应执行重新安装) |
extraArgs |
String :可选的额外参数。如需了解可用选项,请参阅“adb shell pm -h”。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackage
public String installPackage (File packageFile, boolean reinstall, boolean grantPermissions, String... extraArgs)
在设备上安装 Android 软件包。
注意:只有需要在安装时明确控制授予运行时权限的用例才应调用此函数。
参数 | |
---|---|
packageFile |
File :要安装的 apk 文件 |
reinstall |
boolean :true (如果应执行重新安装) |
grantPermissions |
boolean :是否应在安装时授予所有运行时权限 |
extraArgs |
String :可选的额外参数。如需了解可用选项,请参阅“adb shell pm -h”。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackage
public String installPackage (File packageFile, File certFile, boolean reinstall, String... extraArgs)
在设备上安装 Android 软件包。
注意:只有需要在安装时明确控制授予运行时权限的用例才应调用此函数。
参数 | |
---|---|
packageFile |
File :要安装的 apk 文件 |
certFile |
File :true (如果应执行重新安装) |
reinstall |
boolean :是否应在安装时授予所有运行时权限 |
extraArgs |
String :可选的额外参数。如需了解可用选项,请参阅“adb shell pm -h”。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackageForUser
public String installPackageForUser (File packageFile, boolean reinstall, boolean grantPermissions, int userId, String... extraArgs)
在设备上为指定用户安装 Android 软件包。
注意:只有需要在安装时明确控制授予运行时权限的用例才应调用此函数。
参数 | |
---|---|
packageFile |
File :要安装的 apk 文件 |
reinstall |
boolean :true (如果应执行重新安装) |
grantPermissions |
boolean :是否应在安装时授予所有运行时权限 |
userId |
int :要为其安装的整数用户 ID。 |
extraArgs |
String :可选的额外参数。如需了解可用选项,请参阅“adb shell pm -h”。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackageForUser
public String installPackageForUser (File packageFile, boolean reinstall, int userId, String... extraArgs)
在设备上为指定用户安装 Android 软件包。
参数 | |
---|---|
packageFile |
File :要安装的 apk 文件 |
reinstall |
boolean :true (如果应执行重新安装) |
userId |
int :要为其安装的整数用户 ID。 |
extraArgs |
String :可选的额外参数。如需了解可用选项,请参阅“adb shell pm -h”。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackages
public String installPackages (packageFiles, boolean reinstall, String... extraArgs)
参数 | |
---|---|
packageFiles |
|
reinstall |
boolean |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackages
public String installPackages (packageFiles, boolean reinstall, boolean grantPermissions, String... extraArgs)
参数 | |
---|---|
packageFiles |
|
reinstall |
boolean |
grantPermissions |
boolean |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackagesForUser
public String installPackagesForUser (packageFiles, boolean reinstall, boolean grantPermissions, int userId, String... extraArgs)
参数 | |
---|---|
packageFiles |
|
reinstall |
boolean |
grantPermissions |
boolean |
userId |
int |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
installPackagesForUser
public String installPackagesForUser (packageFiles, boolean reinstall, int userId, String... extraArgs)
参数 | |
---|---|
packageFiles |
|
reinstall |
boolean |
userId |
int |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
installRemotePackages
public String installRemotePackages (remoteApkPaths, boolean reinstall, String... extraArgs)
参数 | |
---|---|
remoteApkPaths |
|
reinstall |
boolean |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
installRemotePackages
public String installRemotePackages (remoteApkPaths, boolean reinstall, boolean grantPermissions, String... extraArgs)
参数 | |
---|---|
remoteApkPaths |
|
reinstall |
boolean |
grantPermissions |
boolean |
extraArgs |
String |
返回 | |
---|---|
String |
抛出 | |
---|---|
DeviceNotAvailableException |
isAppEnumerationSupported
public boolean isAppEnumerationSupported ()
检查设备上的平台是否支持应用枚举
返回 | |
---|---|
boolean |
如果支持应用枚举,则为 true;否则为 false |
抛出 | |
---|---|
DeviceNotAvailableException |
isHeadlessSystemUserMode
public boolean isHeadlessSystemUserMode ()
返回设备是否使用无头系统用户模式。
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
isMainUserPermanentAdmin
public boolean isMainUserPermanentAdmin ()
返回主用户是否为永久性管理员,并且无法删除或降级为非管理员状态。
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
isMultiUserSupported
public boolean isMultiUserSupported ()
确定是否支持多用户。
返回 | |
---|---|
boolean |
如果支持多用户,则为 true,否则为 false |
抛出 | |
---|---|
DeviceNotAvailableException |
isPackageInstalled
public boolean isPackageInstalled (String packageName)
查询设备上的给定软件包名称,以检查其当前是否已安装。
参数 | |
---|---|
packageName |
String |
返回 | |
---|---|
boolean |
如果软件包被报告为已安装,则为 true。否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
isPackageInstalled
public boolean isPackageInstalled (String packageName, String userId)
查询设备中是否存在给定的软件包名称和给定的用户 ID,以检查该软件包当前是否已为该用户安装。
参数 | |
---|---|
packageName |
String :我们要检查是否已安装的软件包。 |
userId |
String :我们要检查为哪位用户安装了软件包的用户 ID。如果为 null,则使用主要用户的零。 |
返回 | |
---|---|
boolean |
如果软件包被报告为已安装,则为 true。否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
isUserRunning
public boolean isUserRunning (int userId)
检查指定用户是否正在运行。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
boolean |
如果用户正在运行,则为 true;在所有其他情况下,则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
isUserSecondary
public boolean isUserSecondary (int userId)
根据标志返回指定用户是否为次要用户。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
boolean |
如果用户是辅助用户,则为 true;否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
isUserVisible
public boolean isUserVisible (int userId)
检查指定用户是否可见。
“可见”用户是指与“真人”用户互动,因此能够启动启动 activity(通常在默认显示屏中)的用户。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
isUserVisibleOnDisplay
public boolean isUserVisibleOnDisplay (int userId, int displayId)
检查指定用户是否在指定显示屏中显示。
“可见”用户是指与“真人”用户互动,因此能够在该显示屏中启动 activity 的用户。
参数 | |
---|---|
userId |
int |
displayId |
int |
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
isVisibleBackgroundUsersOnDefaultDisplaySupported
public boolean isVisibleBackgroundUsersOnDefaultDisplaySupported ()
返回设备是否允许在 ERROR(/java.android.view.Display#DEFAULT_DISPLAY)
中在后台启动可见的用户。
如果是,您可以调用 startVisibleBackgroundUser(int, int, boolean)
,并传递 listDisplayIdsForStartingVisibleBackgroundUsers()
返回的显示屏(应包含 ERROR(/java.android.view.Display#DEFAULT_DISPLAY)
)。
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
isVisibleBackgroundUsersSupported
public boolean isVisibleBackgroundUsersSupported ()
返回设备是否允许用户在后台启动时保持可见状态。
如果是,您可以调用 startVisibleBackgroundUser(int, int, boolean)
,并传递 listDisplayIdsForStartingVisibleBackgroundUsers()
返回的显示屏。
返回 | |
---|---|
boolean |
抛出 | |
---|---|
DeviceNotAvailableException |
listDisplayIds
publiclistDisplayIds ()
收集“dumpsys SurfaceFlinger”报告的设备上可用显示屏 ID 的列表。
返回 | |
---|---|
|
显示屏列表。默认值始终返回默认显示 0。 |
抛出 | |
---|---|
DeviceNotAvailableException |
listDisplayIdsForStartingVisibleBackgroundUsers
publiclistDisplayIdsForStartingVisibleBackgroundUsers ()
获取可用于 start a user visible in the background
的显示屏列表。
返回 | |
---|---|
|
抛出 | |
---|---|
DeviceNotAvailableException |
listUsers
publiclistUsers ()
获取设备上的用户列表。如果设备的输出不符合预期,则会抛出 DeviceRuntimeException
。
返回 | |
---|---|
|
用户 ID 列表。 |
抛出 | |
---|---|
DeviceNotAvailableException |
logBugreport
public boolean logBugreport (String dataName, ITestLogger listener)
用于获取 bugreport 并将其记录到报告程序的辅助方法。
参数 | |
---|---|
dataName |
String :用于报告 bug 报告的名称。 |
listener |
ITestLogger :用于记录 bugreport 的 ITestLogger 。 |
返回 | |
---|---|
boolean |
如果日志记录成功,则为 true,否则为 false。 |
notifySnapuserd
public void notifySnapuserd (SnapuserdWaitPhase waitPhase)
参数 | |
---|---|
waitPhase |
SnapuserdWaitPhase |
postInvocationTearDown
public void postInvocationTearDown (Throwable exception)
针对设备专用所需清理操作的额外步骤,将在调用完成后执行。
参数 | |
---|---|
exception |
Throwable :调用失败引发的最终异常(如果有)。 |
removeAdmin
public boolean removeAdmin (String componentName, int userId)
移除指定用户中的指定设备管理员,如果成功,则返回 true
;否则,返回 false
。
参数 | |
---|---|
componentName |
String :要移除的设备管理员的 ID。 |
userId |
int :设备管理员所在的用户账号。 |
返回 | |
---|---|
boolean |
如果成功,则为 true,否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
removeUser
public boolean removeUser (int userId)
从设备中移除指定用户。
参数 | |
---|---|
userId |
int :要移除的用户 |
返回 | |
---|---|
boolean |
如果成功移除用户,则为 true,否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
setDeviceOwner
public boolean setDeviceOwner (String componentName, int userId)
在指定用户中将设备管理组件设为设备所有者。
参数 | |
---|---|
componentName |
String :将设备管理员设为设备所有者。 |
userId |
int :设备所有者的居住地。 |
返回 | |
---|---|
boolean |
如果成功,则为 true,否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
setFirstBootloaderReboot
public void setFirstBootloaderReboot ()
setSetting
public void setSetting (String namespace, String key, String value)
请参阅 setSetting(int, String, String, String)
,并在系统用户上执行。
参数 | |
---|---|
namespace |
String |
key |
String |
value |
String |
抛出 | |
---|---|
DeviceNotAvailableException |
setSetting
public void setSetting (int userId, String namespace, String key, String value)
向给定用户的命名空间添加设置值。部分设置只有在重新启动后才可用。命名空间必须为以下各项之一:{"system", "secure", "global"}
参数 | |
---|---|
userId |
int |
namespace |
String |
key |
String |
value |
String |
抛出 | |
---|---|
DeviceNotAvailableException |
shutdownMicrodroid
public void shutdownMicrodroid (ITestDevice microdroidDevice)
关闭 microdroid 设备(如果有)。
参数 | |
---|---|
microdroidDevice |
ITestDevice |
抛出 | |
---|---|
|
com.android.tradefed.device.DeviceNotAvailableException |
DeviceNotAvailableException |
startUser
public boolean startUser (int userId)
如果给定用户当前处于停止状态,则在后台启动该用户。如果用户已在后台运行,此方法将执行无操作。
参数 | |
---|---|
userId |
int :要后台启动的用户 |
返回 | |
---|---|
boolean |
如果用户已成功在后台启动,则为 true。 |
抛出 | |
---|---|
DeviceNotAvailableException |
startUser
public boolean startUser (int userId, boolean waitFlag)
如果给定用户当前处于停止状态,则在后台启动该用户。如果用户已在后台运行,此方法将执行无操作。可以提供额外的标志来等待操作生效。
参数 | |
---|---|
userId |
int :要后台启动的用户 |
waitFlag |
boolean :会让命令等待用户启动并解锁。 |
返回 | |
---|---|
boolean |
如果用户已成功在后台启动,则为 true。 |
抛出 | |
---|---|
DeviceNotAvailableException |
startVisibleBackgroundUser
public boolean startVisibleBackgroundUser (int userId, int displayId, boolean waitFlag)
在后台启动给定用户,并在给定显示屏中显示(即允许用户在该显示屏中启动 activity)。
注意 :此命令不会检查用户是否存在、显示是否可用、device supports such feature
等。
参数 | |
---|---|
userId |
int :要后台启动的用户 |
displayId |
int :用户开始可见的显示屏 |
waitFlag |
boolean :会让命令等待用户启动并解锁。 |
返回 | |
---|---|
boolean |
true ,如果用户已成功启动并在后台显示。 |
抛出 | |
---|---|
DeviceNotAvailableException |
stopUser
public boolean stopUser (int userId, boolean waitFlag, boolean forceFlag)
停止给定用户。可以提供额外的标志来等待操作生效,并强制终止用户。无法停止当前用户和系统用户。
参数 | |
---|---|
userId |
int :要停止的用户。 |
waitFlag |
boolean :会让命令等待用户停止。 |
forceFlag |
boolean :会强制停止用户。 |
返回 | |
---|---|
boolean |
如果用户已成功停止,则为 true。 |
抛出 | |
---|---|
DeviceNotAvailableException |
stopUser
public boolean stopUser (int userId)
停止给定用户。如果用户已停止,此方法将执行无操作。 无法停止当前用户和系统用户。
参数 | |
---|---|
userId |
int :要停止的用户。 |
返回 | |
---|---|
boolean |
如果用户已成功停止,则为 true。 |
抛出 | |
---|---|
DeviceNotAvailableException |
supportsMicrodroid
public boolean supportsMicrodroid ()
检查运行 microdroid 的前提条件。
返回 | |
---|---|
boolean |
如果满足前提条件,则返回 true;否则,返回 false。 |
supportsMicrodroid
public boolean supportsMicrodroid (boolean protectedVm)
检查运行 microdroid 的前提条件。
参数 | |
---|---|
protectedVm |
boolean :如果 microdroid 打算在受保护的虚拟机上运行,则为 true。 |
返回 | |
---|---|
boolean |
如果满足前提条件,则返回 true;否则,返回 false。 |
switchUser
public boolean switchUser (int userId)
切换到另一个 userId(默认超时)。switchUser(int, long)
。
参数 | |
---|---|
userId |
int |
返回 | |
---|---|
boolean |
如果新 userId 与 userId 提供程序匹配,则为 true。否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
switchUser
public boolean switchUser (int userId, long timeout)
切换到其他 userId,并将所提供的超时时间作为截止期限。 在用户更改成功后尝试停用屏幕锁定。
参数 | |
---|---|
userId |
int |
timeout |
long :在切换用户失败后,等待时间过长才返回 false。 |
返回 | |
---|---|
boolean |
如果新 userId 与 userId 提供程序匹配,则为 true。否则为 false。 |
抛出 | |
---|---|
DeviceNotAvailableException |
takeBugreport
public Bugreport takeBugreport ()
获取 bugreport 并将其返回到 Bugreport
对象中进行处理。如果出现问题,则返回 null。需要通过 Bugreport.close()
清理 Bugreport 对象中引用的文件。
返回 | |
---|---|
Bugreport |
uninstallPackage
public String uninstallPackage (String packageName)
从设备中卸载 Android 软件包。
参数 | |
---|---|
packageName |
String :要卸载的 Android 软件包 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
uninstallPackageForUser
public String uninstallPackageForUser (String packageName, int userId)
为指定用户从设备上卸载 Android 软件包。
参数 | |
---|---|
packageName |
String :要卸载的 Android 软件包 |
userId |
int :要为其卸载的整数用户 ID。 |
返回 | |
---|---|
String |
包含错误代码的 String ,如果成功则为 null 。 |
抛出 | |
---|---|
DeviceNotAvailableException |
waitForSnapuserd
public void waitForSnapuserd (SnapuserdWaitPhase currentPhase)
参数 | |
---|---|
currentPhase |
SnapuserdWaitPhase |
抛出 | |
---|---|
DeviceNotAvailableException |
受保护的方法
doAdbReboot
protected void doAdbReboot (NativeDevice.RebootMode rebootMode, String reason)
执行 adb reboot。
参数 | |
---|---|
rebootMode |
NativeDevice.RebootMode :此重新启动的模式。 |
reason |
String :针对此次重新启动。 |
抛出 | |
---|---|
|
com.android.tradefed.device.DeviceNotAvailableException |
DeviceNotAvailableException |
getBugreportzInternal
protected File getBugreportzInternal ()
用于将 bugreportz ZIP 文件作为 ERROR(/File)
获取的内部辅助方法。
返回 | |
---|---|
File |
getCheckNewUserSleep
protected long getCheckNewUserSleep ()
公开以供测试。
返回 | |
---|---|
long |
getHostCurrentTime
protected long getHostCurrentTime ()
公开以供测试
返回 | |
---|---|
long |
prePostBootSetup
protected void prePostBootSetup ()
允许每种设备类型(AndroidNativeDevice、TestDevice)替换此方法以进行特定的启动后设置。
抛出 | |
---|---|
DeviceNotAvailableException |