对 Dev AWS ice Farm 中的安卓应用程序测试进行故障排除 - AWS Device Farm

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 Dev AWS ice Farm 中的安卓应用程序测试进行故障排除

以下主题列出了在上传 Android 应用程序测试期间出现的错误消息并推荐了解决方法来解决每个错误。

注意

以下说明基于 Linux x86_64 和 Mac。

ANDROID_APP_UNZIP_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法打开您的应用程序。请验证文件是否有效,然后重试。

确保您可以解压应用程序包,而不会出现错误。在以下示例中,程序包的名称为 app-debug.apk

  1. 将您的测试程序包复制到工作目录,然后运行以下命令:

    $ unzip app-debug.apk
  2. 成功解压缩程序包后,您可以通过运行以下命令找到工作目录树结构:

    $ tree .

    有效的 Android 应用程序包应生成类似以下内容的输出:

    . |-- AndroidManifest.xml |-- classes.dex |-- resources.arsc |-- assets (directory) |-- res (directory) `-- META-INF (directory)

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

ANDROID_APP_AAPT_DEBUG_BADGING_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法提取有关您的应用程序的信息。请通过运行命令 aapt debug badging <path to your test package> 来验证应用程序是否有效,并在命令不输出任何错误后重试。

在上传验证过程中,Dev AWS ice Farm 会从aapt debug badging <path to your package>命令的输出中解析出信息。

确保您可以在 Android 应用程序上成功运行此命令。在以下示例中,程序包的名称为 app-debug.apk

  • 将您的应用程序包复制到工作目录,然后运行以下命令:

    $ aapt debug badging app-debug.apk

    有效的 Android 应用程序包应生成类似以下内容的输出:

    package: name='com.amazon.aws.adf.android.referenceapp' versionCode='1' versionName='1.0' platformBuildVersionName='5.1.1-1819727' sdkVersion:'9' application-label:'ReferenceApp' application: label='ReferenceApp' icon='res/mipmap-mdpi-v4/ic_launcher.png' application-debuggable launchable-activity: name='com.amazon.aws.adf.android.referenceapp.Activities.MainActivity' label='ReferenceApp' icon='' uses-feature: name='android.hardware.bluetooth' uses-implied-feature: name='android.hardware.bluetooth' reason='requested android.permission.BLUETOOTH permission, and targetSdkVersion > 4' main supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true' locales: '--_--' densities: '160' '213' '240' '320' '480' '640'

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

ANDROID_APP_PACKAGE_NAME_VALUE_MISSING

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们无法在您的应用程序中找到程序包名称值。请通过运行命令 aapt debug badging <path to your test package> 来验证应用程序是否有效,并在关键字“package: name”后面找到程序包名称值后重试。

在上传验证过程中,Dev AWS ice Farm 会从aapt debug badging <path to your package>命令的输出中解析出软件包名称值。

确保您可以在 Android 应用程序上运行此命令并成功找到程序包名称值。在以下示例中,程序包的名称为 app-debug.apk

  • 将您的应用程序包复制到工作目录,然后运行以下命令:

    $ aapt debug badging app-debug.apk | grep "package: name="

    有效的 Android 应用程序包应生成类似以下内容的输出:

    package: name='com.amazon.aws.adf.android.referenceapp' versionCode='1' versionName='1.0' platformBuildVersionName='5.1.1-1819727'

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

ANDROID_APP_SDK_VERSION_VALUE_MISSING

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们在您的应用程序中找不到SDK版本值。请通过运行命令验证应用程序是否有效aapt debug badging <path to your test package>,并在找到关键字后面的SDK版本值后重试sdkVersion

在上传验证过程中,Dev AWS ice Farm 会从aapt debug badging <path to your package>命令的输出中解析出SDK版本值。

确保您可以在 Android 应用程序上运行此命令并成功找到程序包名称值。在以下示例中,程序包的名称为 app-debug.apk

  • 将您的应用程序包复制到工作目录,然后运行以下命令:

    $ aapt debug badging app-debug.apk | grep "sdkVersion"

    有效的 Android 应用程序包应生成类似以下内容的输出:

    sdkVersion:'9'

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

ANDROID_APP_AAPT_DUMP_XMLTREE_FAILED

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们在您的应用程序中找不到有效的 AndroidManifest .xml。请通过运行命令 aapt dump xmltree <path to your test package> AndroidManifest.xml 验证测试程序包是否有效,然后在该命令未输出任何错误后重试。

在上传验证过程中,De AWS vice Farm 使用命令从XML解析树中解析出包中包含XML的文件的信息。aapt dump xmltree <path to your package> AndroidManifest.xml

确保您可以在 Android 应用程序上成功运行此命令。在以下示例中,程序包的名称为 app-debug.apk

  • 将您的应用程序包复制到工作目录,然后运行以下命令:

    $ aapt dump xmltree app-debug.apk. AndroidManifest.xml

    有效的 Android 应用程序包应生成类似以下内容的输出:

    N: android=http://schemas.android.com/apk/res/android E: manifest (line=2) A: android:versionCode(0x0101021b)=(type 0x10)0x1 A: android:versionName(0x0101021c)="1.0" (Raw: "1.0") A: package="com.amazon.aws.adf.android.referenceapp" (Raw: "com.amazon.aws.adf.android.referenceapp") A: platformBuildVersionCode=(type 0x10)0x16 (Raw: "22") A: platformBuildVersionName="5.1.1-1819727" (Raw: "5.1.1-1819727") E: uses-sdk (line=7) A: android:minSdkVersion(0x0101020c)=(type 0x10)0x9 A: android:targetSdkVersion(0x01010270)=(type 0x10)0x16 E: uses-permission (line=11) A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET") E: uses-permission (line=12) A: android:name(0x01010003)="android.permission.CAMERA" (Raw: "android.permission.CAMERA")

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

ANDROID_APP_DEVICE_ADMIN_PERMISSIONS

如果您看到以下消息,请执行以下步骤来修复此问题。

警告

我们发现,您的应用程序需要设备管理员权限。请通过运行命令 aapt dump xmltree <path to your test package> AndroidManifest.xml 确认不需要此权限,并在确保输出不包含关键字 android.permission.BIND_DEVICE_ADMIN 后重试。

在上传验证过程中,Dev AWS ice Farm 使用命令从包中包含的 xml 文件的 xml 解析树中解析出权限信息。aapt dump xmltree <path to your package> AndroidManifest.xml

请确保您的应用程序不需要设备管理员权限。在以下示例中,程序包的名称为 app-debug.apk

  • 将您的应用程序包复制到工作目录,然后运行以下命令:

    $ aapt dump xmltree app-debug.apk AndroidManifest.xml

    您应找到类似以下内容的输出:

    N: android=http://schemas.android.com/apk/res/android E: manifest (line=2) A: android:versionCode(0x0101021b)=(type 0x10)0x1 A: android:versionName(0x0101021c)="1.0" (Raw: "1.0") A: package="com.amazonaws.devicefarm.android.referenceapp" (Raw: "com.amazonaws.devicefarm.android.referenceapp") A: platformBuildVersionCode=(type 0x10)0x16 (Raw: "22") A: platformBuildVersionName="5.1.1-1819727" (Raw: "5.1.1-1819727") E: uses-sdk (line=7) A: android:minSdkVersion(0x0101020c)=(type 0x10)0xa A: android:targetSdkVersion(0x01010270)=(type 0x10)0x16 E: uses-permission (line=11) A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET") E: uses-permission (line=12) A: android:name(0x01010003)="android.permission.CAMERA" (Raw: "android.permission.CAMERA") ……

    如果 Android 应用程序有效,则输出不应包含以下内容:A: android:name(0x01010003)="android.permission.BIND_DEVICE_ADMIN" (Raw: "android.permission.BIND_DEVICE_ADMIN")

    有关更多信息,请参阅 Dev AWS ice Farm 中的安卓测试

我的 Android 应用程序中的某些窗口显示空白或黑屏

如果您正在测试 Android 应用程序,并且注意到该应用程序中的某些窗口在 Device Farm 的测试视频录制中出现黑屏,则您的应用程序可能正在使用 Android 的 FLAG_SECURE 功能。此标志(如 Android 官方文档中所述)用于防止屏幕录制工具录制应用程序的某些窗口。因此,如果窗口使用此标志,Device Farm 的屏幕录制功能(用于自动化和远程访问测试)可能会在应用程序窗口的位置显示黑屏。

开发人员经常将此标志用于其应用程序中包含敏感信息(例如登录页面)的页面。如果您在某些页面(例如登录页面)上看到应用程序屏幕出现黑屏,请与您的开发人员合作,获取不使用此标志进行测试的应用程序版本。

此外,请注意,Device Farm 仍然可以与带有此标志的应用程序窗口进行交互。因此,如果您的应用程序的登录页面显示为黑屏,您仍然可以输入凭据以登录应用程序(从而查看未被 FLAG_SECURE 标志屏蔽的页面)。