

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Device Farm の Android アプリケーションテストのトラブルシューティング
<a name="troubleshooting-android-applications"></a>

次のトピックでは、Android アプリケーションテストのアップロード中に発生するエラーメッセージを挙げ、各エラーを解決するための推奨回避策を伝えます。

**注記**  
以下の手順は Linux x86\$164 および Mac を対象にしています。

## ANDROID\$1APP\$1UNZIP\$1FAILED
<a name="ANDROID_APP_UNZIP_FAILED"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
アプリケーションを開けませんでした。ファイルが有効であることを確認して、もう一度お試しください。

エラーなしでアプリケーションパッケージを解凍できることを確かめてください。次の例では、パッケージ名は **app-debug.apk** です。

1. テストパッケージを作業ディレクトリにコピーし、次のコマンドを実行します:

   ```
   $ unzip app-debug.apk
   ```

1. 正常にパッケージを解凍したら、次のコマンドを実行して作業ディレクトリのツリー構造を見つけることができます:

   ```
   $ tree .
   ```

   有効な Android アプリケーションパッケージでは、次のような出力が生成されます:

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

   詳細については、「[AWS Device Farm での Android テスト](test-types-android-tests.md)」を参照してください。

## ANDROID\$1APP\$1AAPT\$1DEBUG\$1BADGING\$1FAILED
<a name="ANDROID_APP_AAPT_DEBUG_BADGING_FAILED"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
アプリケーションに関する情報を抽出できませんでした。`aapt debug badging <path to your test package>` コマンドを実行してアプリケーションが有効であることを確認し、コマンドがエラーを出力しなくなってからもう一度試してください。

アップロード検証プロセス中に、AWS Device 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 テスト](test-types-android-tests.md)」を参照してください。

## ANDROID\$1APP\$1PACKAGE\$1NAME\$1VALUE\$1MISSING
<a name="ANDROID_APP_PACKAGE_NAME_VALUE_MISSING"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
アプリケーション内にパッケージ名の値が見つかりませんでした。`aapt debug badging <path to your test package>` コマンドを実行してアプリケーションが有効であることを確認し、キーワード "package: name" の後にパッケージ名の値を見つけてからもう一度試して下さい。

アップロード検証プロセス中に、AWS Device 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 テスト](test-types-android-tests.md)」を参照してください。

## ANDROID\$1APP\$1SDK\$1VERSION\$1VALUE\$1MISSING
<a name="ANDROID_APP_SDK_VERSION_VALUE_MISSING"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
アプリケーション内に SDK バージョンの値が見つかりませんでした。`aapt debug badging <path to your test package>` コマンドを実行してアプリケーションが有効であることを確認し、キーワード `sdkVersion` の後ろに SDK バージョンの値を見つけた後にもう一度試して下さい。

アップロード検証プロセス中に、AWS Device 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 テスト](test-types-android-tests.md)」を参照してください。

## ANDROID\$1APP\$1AAPT\$1DUMP\$1XMLTREE\$1FAILED
<a name="ANDROID_APP_AAPT_DUMP_XMLTREE_FAILED"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
有効な AndroidManifest.xml がアプリケーション内に見つかりませんでした。コマンド `aapt dump xmltree <path to your test package> AndroidManifest.xml` を実行してテストパッケージが有効であることを確認し、コマンドがエラーを出力しなくなってからもう一度試してください。

アップロード検証プロセス中に、AWS Device Farm はコマンド `aapt dump xmltree <path to your package> AndroidManifest.xml` を使用してパッケージに含まれる XML ファイルの 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 テスト](test-types-android-tests.md)」を参照してください。

## ANDROID\$1APP\$1DEVICE\$1ADMIN\$1PERMISSIONS
<a name="ANDROID_APP_DEVICE_ADMIN_PERMISSIONS"></a>

次のメッセージが表示された場合は、下の手順に従って問題を解決してください。

**警告**  
アプリケーションにデバイス管理者権限が必要なことが見つかりました。`aapt dump xmltree <path to your test package> AndroidManifest.xml` コマンドを実行して権限が必要ないことを確認して、キーワード `android.permission.BIND_DEVICE_ADMIN` が出力に含まれていないことを確かめてからもう一度試してください。

アップロード検証プロセス中に、AWS Device Farm はコマンド `aapt dump xmltree <path to your package> AndroidManifest.xml` を使用してパッケージに含まれる XML ファイルの 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 テスト](test-types-android-tests.md)」を参照してください。

## Android アプリケーションの特定ウィンドウに真っ白または真っ黒の画面が表示される
<a name="flag-secure-screen-issue"></a>

Android アプリケーションをテストしていて、テストにおける Device Farm のビデオ録画でアプリケーション内の特定ウィンドウが真っ黒の画面となる場合は、アプリケーションが Android の `FLAG_SECURE` 機能を使用している可能性があります。このフラグ ([Android の公式ドキュメンテーション](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE)に記載) は、画面記録ツールがアプリケーションの特定ウィンドウに記録を行わないようにするため使用されます。そのため、Device Farm の画面記録機能 (自動化テストとリモートアクセステストの両方) により、このフラグを使用するアプリケーションウィンドウで真っ黒の画面が表示されることがあります。

このフラグは、開発者がログインページなどの機密情報を含むアプリケーション内のページによく使用します。ログインページなどの特定ページでアプリケーションの画面が真っ黒になる場合は、開発者と協力して、テストにこのフラグを使用しないアプリケーションのビルドを入手してください。

また、Device Farm は、このフラグが設定されているアプリケーションウィンドウに引き続き双方向対応できることに注意してください。そのため、アプリケーションのログインページが真っ黒の画面になっても、認証情報を入力してアプリケーションにログインできます (これにより、`FLAG_SECURE` フラグでブロックされていないページを表示できます)。