

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Solução de problemas de testes de aplicações para Android no AWS Device Farm
<a name="troubleshooting-android-applications"></a>

O tópico a seguir lista mensagens de erro que ocorrem durante o upload de testes de aplicativos Android e recomenda soluções para resolver cada erro.

**nota**  
As instruções a seguir baseiam-se no Linux x86\$164 e Mac.

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Não conseguimos abrir seu aplicativo. Verifique se o arquivo é válido e tente novamente.

Verifique se você consegue descompactar o pacote de aplicativos sem erros. No exemplo a seguir, o nome do pacote é **app-debug.apk**.

1. Copie o pacote de testes para seu diretório de trabalho e execute o comando a seguir:

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

1. Assim que conseguir descompactar o pacote, você poderá encontrar a estrutura de árvore do diretório de trabalho executando o seguinte comando:

   ```
   $ tree .
   ```

   Um pacote de aplicativos Android válido deve gerar um resultado semelhante ao seguinte:

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

   Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Não foi possível extrair informações sobre seu aplicativo. Para verificar se o aplicativo é válido, execute o comando `aapt debug badging <path to your test package>` e tente novamente se o comando não imprimir nenhum erro. 

Durante o processo de validação de upload, o AWS Device Farm analisa as informações da saída de um comando `aapt debug badging <path to your package>`. 

Verifique se você consegue executar esse comando com êxito em seu aplicativo Android. No exemplo a seguir, o nome do pacote é **app-debug.apk**.
+ Copie o pacote do aplicativo para seu diretório de trabalho e, em seguida, execute o comando:

  ```
  $ aapt debug badging app-debug.apk
  ```

  Um pacote de aplicativos Android válido deve gerar um resultado semelhante ao seguinte:

  ```
  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'
  ```

  Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Não foi possível encontrar o valor do nome do pacote em seu aplicativo. Para verificar se o aplicativo é válido, execute o comando `aapt debug badging <path to your test package>` e tente novamente depois de encontrar o valor no nome do pacote subjacente à palavra-chave "package: name".

Durante o processo de validação de upload, o AWS Device Farm analisa o valor do nome do pacote pela saída de um comando `aapt debug badging <path to your package>`.

Verifique se você consegue executar esse comando com êxito em seu aplicativo Android e encontrar o valor do nome do pacote. No exemplo a seguir, o nome do pacote é **app-debug.apk**.
+ Copie o pacote de aplicativos para seu diretório de trabalho e execute o seguinte comando:

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

  Um pacote de aplicativos Android válido deve gerar um resultado semelhante ao seguinte:

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

  Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Não foi possível encontrar o valor da versão do SDK em seu aplicativo. Para verificar se o aplicativo é válido, execute o comando `aapt debug badging <path to your test package>` e tente novamente depois de encontrar o valor de versão do SDK subjacente à palavra-chave `sdkVersion`.

Durante o processo de validação de upload, o AWS Device Farm analisa o valor da versão do SDK pela saída de um comando `aapt debug badging <path to your package>`.

Verifique se você consegue executar esse comando com êxito em seu aplicativo Android e encontrar o valor do nome do pacote. No exemplo a seguir, o nome do pacote é **app-debug.apk**.
+ Copie o pacote de aplicativos para seu diretório de trabalho e execute o seguinte comando:

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

  Um pacote de aplicativos Android válido deve gerar um resultado semelhante ao seguinte:

  ```
  sdkVersion:'9'
  ```

  Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Não foi possível encontrar o AndroidManifest arquivo.xml válido em seu aplicativo. Para verificar se o pacote de testes é válido, execute o comando `aapt dump xmltree <path to your test package> AndroidManifest.xml` e tente novamente se o comando não imprimir nenhum erro.

Durante o processo de validação de upload, o AWS Device Farm analisa as informações da árvore de análise XML para um arquivo XML contido no pacote usando o comando `aapt dump xmltree <path to your package> AndroidManifest.xml`.

Verifique se você consegue executar esse comando com êxito em seu aplicativo Android. No exemplo a seguir, o nome do pacote é **app-debug.apk**.
+ Copie o pacote de aplicativos para seu diretório de trabalho e execute o seguinte comando:

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

  Um pacote de aplicativos Android válido deve gerar um resultado semelhante ao seguinte:

  ```
  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")
  ```

  Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

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

Se você visualizar a mensagem a seguir, siga estas etapas para corrigir o problema.

**Atenção**  
Descobrimos que seu aplicativo requer permissões de administrador do dispositivo. Verifique se as permissões não são necessárias executando o comando `aapt dump xmltree <path to your test package> AndroidManifest.xml` e tente novamente assim que confirmar que a saída não contém a palavra-chave `android.permission.BIND_DEVICE_ADMIN`.

Durante o processo de validação de upload, o AWS Device Farm analisa as informações de permissão da árvore de análise xml para um arquivo xml contido no pacote usando o comando `aapt dump xmltree <path to your package> AndroidManifest.xml`.

Descobrimos que seu aplicativo não requer permissão de administrador do dispositivo. No exemplo a seguir, o nome do pacote é **app-debug.apk**.
+ Copie o pacote de aplicativos para seu diretório de trabalho e execute o seguinte comando:

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

  Você provavelmente chegará a um resultado como o seguinte:

  ```
  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")
          ……
  ```

  Se o aplicativo Android for válido, a saída não deverá conter o seguinte: `A: android:name(0x01010003)="android.permission.BIND_DEVICE_ADMIN" (Raw: "android.permission.BIND_DEVICE_ADMIN")`. 

  Para obter mais informações, consulte [Testes do Android no AWS Device Farm](test-types-android-tests.md).

## Certas janelas do meu aplicativo Android mostram uma tela em branco ou preta
<a name="flag-secure-screen-issue"></a>

Se você estiver testando um aplicativo Android e perceber que determinadas janelas do aplicativo aparecem com uma tela preta na gravação de vídeo do teste do Device Farm, seu aplicativo pode estar usando o recurso `FLAG_SECURE` do Android. Esse sinalizador (conforme descrito na [documentação oficial do Android](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE)) é usado para impedir que determinadas janelas de uma aplicação sejam gravadas por ferramentas de gravação de tela. Como resultado, o recurso de gravação de tela do Device Farm (para testes de automação e acesso remoto) pode mostrar uma tela preta no lugar da janela da sua aplicação se a janela usar esse sinalizador. 

Esse sinalizador é frequentemente usado por desenvolvedores para páginas em suas aplicações que contêm informações sensíveis, como páginas de login. Se você estiver vendo uma tela preta no lugar da tela da sua aplicação para determinadas páginas, como a página de login, trabalhe com seus desenvolvedores para obter uma versão da aplicação que não use esse sinalizador para testes.

Além disso, observe que o Device Farm ainda pode interagir com janelas de aplicações que tenham esse sinalizador. Portanto, se a página de login da aplicação aparecer como uma tela preta, você ainda poderá inserir suas credenciais para fazer login na aplicação (e, assim, visualizar páginas não bloqueadas pelo sinalizador `FLAG_SECURE`).