對 AWS Device Farm 中的 Android 應用程式測試進行故障診斷 - AWS Device Farm

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對 AWS Device Farm 中的 Android 應用程式測試進行故障診斷

下列主題會列出在上傳 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)

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

ANDROID_APP_AAPT_DEBUG_BADGING_FAILED

如果您看到下列訊息,請依照以下步驟修復問題。

警告

無法擷取應用程式的相關資訊。請執行命令 aapt debug badging <path to your test package>,確認應用程式是否有效,並在命令未列印任何錯誤後再試一次。

在上傳驗證程序期間,AWSDevice 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'

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

ANDROID_APP_PACKAGE_NAME_VALUE_MISSING

如果您看到下列訊息,請依照以下步驟修復問題。

警告

在應用程式中找不到套件名稱值。請執行命令 aapt debug badging <path to your test package> 驗證應用程式是否有效,並在以關鍵字「package:name」找到套件名稱值後再試一次。

在上傳驗證程序期間,AWSDevice 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'

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

ANDROID_APP_SDK_VERSION_VALUE_MISSING

如果您看到下列訊息,請依照以下步驟修復問題。

警告

我們無法在您的應用程式中找到SDK版本值。請執行命令 來驗證應用程式是否有效aapt debug badging <path to your test package>,並在找到關鍵字 後面的SDK版本值後再試一次sdkVersion

在上傳驗證程序期間,AWSDevice Farm 會從aapt debug badging <path to your package>命令的輸出剖析SDK版本值。

請確認您可以在 Android 應用程式上執行此命令,並成功找到套件名稱值。在下列範例中,套件的名稱是 app-debug.apk

  • 將您的應用程式套件複製到工作目錄,然後執行下列命令:

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

    有效的 Android 應用程式套件應產生輸出如下:

    sdkVersion:'9'

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

ANDROID_APP_AAPT_DUMP_XMLTREE_FAILED

如果您看到下列訊息,請依照以下步驟修復問題。

警告

在您的應用程式中找不到有效的 AndroidManifest.xml。請執行命令 aapt dump xmltree <path to your test package> AndroidManifest.xml,確認測試套件是否有效,並在命令未列印任何錯誤後再試一次。

在上傳驗證程序期間,AWSDevice 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")

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

ANDROID_APP_DEVICE_ADMIN_PERMISSIONS

如果您看到下列訊息,請依照以下步驟修復問題。

警告

您的應用程式需要裝置管理許可。請執行命令 aapt dump xmltree <path to your test package> AndroidManifest.xml,確認是否不需要許可,並在確認輸出不包含關鍵字 android.permission.BIND_DEVICE_ADMIN 後再試一次。

在上傳驗證程序期間,AWSDevice 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")

    如需詳細資訊,請參閱AWS Device Farm 中的 Android 測試

我的 Android 應用程式中的某些視窗顯示空白或黑色畫面

如果您正在測試 Android 應用程式,並注意到應用程式中的某些視窗在 Device Farm 測試的影片錄製中出現黑色畫面,則您的應用程式可能會使用 Android FLAG_SECURE的功能。此旗標 (如 Android 官方文件中所述) 用於防止螢幕錄製工具記錄應用程式的某些時段。因此,如果視窗使用此旗標,Device Farm 的畫面錄製功能 (適用於自動化和遠端存取測試) 可能會顯示黑色畫面,以取代應用程式的視窗。

此旗標通常由開發人員用於應用程式中包含登入頁面等敏感資訊的頁面。如果您看到黑螢幕取代應用程式登入頁面等特定頁面的螢幕,請與您的開發人員一起取得未使用此旗標進行測試的應用程式建置。

此外,請注意 Device Farm 仍可與具有此旗標的應用程式視窗互動。因此,如果您應用程式的登入頁面顯示為黑色畫面,您仍然可以輸入您的憑證,以登入應用程式 (因此檢視未被FLAG_SECURE旗標封鎖的頁面)。