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 フラグでブロックされていないページを表示できます)。