

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Solución de problemas de pruebas de aplicaciones Android en AWS Device Farm
<a name="troubleshooting-android-applications"></a>

En el siguiente tema se muestra una lista de mensajes de error que se producen durante la carga de las pruebas de aplicaciones Android y recomienda soluciones para resolver cada error.

**nota**  
Las siguientes instrucciones se basan en Linux x86\$164 y Mac.

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
We could not open your application. Please verify that the file is valid and try again.

Asegúrese de que puede descomprimir el paquete de aplicaciones sin errores. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.

1. Copie el paquete de pruebas a su directorio de trabajo y, a continuación, ejecute el siguiente comando:

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

1. Después de descomprimir correctamente el paquete, ejecute el siguiente comando para que aparezca la estructura de árbol de directorios de trabajo:

   ```
   $ tree .
   ```

   Un paquete de aplicaciones Android válido debería producir una salida similar a esta:

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

   Para obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
We could not extract information about your application. Please verify that the application is valid by running the command `aapt debug badging <path to your test package>`, and try again after the command does not print any error. 

durante el proceso de validación de carga, AWS Device Farm extrae la información de la salida de un comando `aapt debug badging <path to your package>`. 

Asegúrese de que puede ejecutar correctamente este comando en la aplicación Android. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.
+ Copie el paquete de aplicaciones a su directorio de trabajo y, a continuación, ejecute el comando:

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

  Un paquete de aplicaciones Android válido debería producir una salida similar a esta:

  ```
  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 obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
We could not find the package name value in your application. Please verify that the application is valid by running the command `aapt debug badging <path to your test package>`, and try again after finding the package name value behind the keyword "package: name."

durante el proceso de validación de carga, AWS Device Farm extrae el valor del nombre del paquete de la salida de un comando `aapt debug badging <path to your package>`.

Asegúrese de que puede ejecutar este comando en la aplicación Android y encontrar el valor del nombre del paquete de forma correcta. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.
+ Copie el paquete de aplicaciones a su directorio de trabajo y, a continuación, ejecute el siguiente comando:

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

  Un paquete de aplicaciones Android válido debería producir una salida similar a esta:

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

  Para obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
We could not find the SDK version value in your application. Please verify that the application is valid by running the command `aapt debug badging <path to your test package>`, and try again after finding the SDK version value behind the keyword `sdkVersion`.

durante el proceso de validación de carga, AWS Device Farm extrae el valor de la versión de SDK de la salida de un comando `aapt debug badging <path to your package>`.

Asegúrese de que puede ejecutar este comando en la aplicación Android y encontrar el valor del nombre del paquete de forma correcta. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.
+ Copie el paquete de aplicaciones a su directorio de trabajo y, a continuación, ejecute el siguiente comando:

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

  Un paquete de aplicaciones Android válido debería producir una salida similar a esta:

  ```
  sdkVersion:'9'
  ```

  Para obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
No hemos podido encontrar el AndroidManifest archivo.xml válido en su aplicación. Please verify that the test package is valid by running the command `aapt dump xmltree <path to your test package> AndroidManifest.xml`, and try again after the command does not print any error.

durante el proceso de validación de carga, AWS Device Farm extrae información del árbol de análisis de XML para un archivo XML contenido en el paquete mediante el comando `aapt dump xmltree <path to your package> AndroidManifest.xml`.

Asegúrese de que puede ejecutar correctamente este comando en la aplicación Android. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.
+ Copie el paquete de aplicaciones a su directorio de trabajo y, a continuación, ejecute el siguiente comando:

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

  Un paquete de aplicaciones Android válido debería producir una salida similar a esta:

  ```
  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 obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

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

Si aparece el siguiente mensaje, siga estos pasos para solucionar el problema.

**aviso**  
We found that your application requires device admin permissions. Please verify that the permissions are not required by run the command `aapt dump xmltree <path to your test package> AndroidManifest.xml`, and try again after making sure that output does not contain the keyword `android.permission.BIND_DEVICE_ADMIN`.

durante el proceso de validación de carga, AWS Device Farm extrae información de permisos del árbol de análisis de XML para un archivo XML contenido en el paquete mediante el comando `aapt dump xmltree <path to your package> AndroidManifest.xml`.

Asegúrese de que la aplicación no requiere permiso de administración de dispositivos. En el siguiente ejemplo, el nombre del paquete es **app-debug.apk**.
+ Copie el paquete de aplicaciones a su directorio de trabajo y, a continuación, ejecute el siguiente comando:

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

  Debería aparecer una salida como la siguiente:

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

  Si la aplicación Android es válida, la salida no debería contener lo siguiente: `A: android:name(0x01010003)="android.permission.BIND_DEVICE_ADMIN" (Raw: "android.permission.BIND_DEVICE_ADMIN")`. 

  Para obtener más información, consulte [Pruebas de Android en AWS Device Farm](test-types-android-tests.md).

## Algunas ventanas de mi aplicación de Android se muestran en blanco o en negro
<a name="flag-secure-screen-issue"></a>

Si está probando una aplicación de Android y observa que algunas ventanas de la aplicación aparecen en negro en la grabación de video de la prueba realizada por Device Farm, es posible que la aplicación esté utilizando la característica de Android `FLAG_SECURE`. Este indicador (tal y como se describe en [la documentación oficial de Android](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE)) se utiliza para impedir que las herramientas de grabación de pantalla graben determinadas ventanas de una aplicación. Como resultado, es posible que la característica de grabación de pantalla de Device Farm (tanto para las pruebas de automatización como para las de acceso remoto) muestre una pantalla negra en lugar de la ventana de la aplicación, si esta incorpora este indicador. 

Los desarrolladores suelen utilizar este indicador para las páginas de sus aplicaciones que contienen información confidencial, como las páginas de inicio de sesión. Si ve una pantalla negra en lugar de la pantalla de la aplicación en determinadas páginas, como la página de inicio de sesión, hable con los desarrolladores para obtener una versión de la aplicación para las pruebas que no incorpore este indicador.

Además, Device Farm puede interactuar con las ventanas de aplicaciones que tienen este indicador. Por lo tanto, aunque la página de inicio de sesión de su aplicación aparezca en negro, es posible que pueda introducir sus credenciales de registro en la aplicación (y así ver las páginas no bloqueadas por el indicador `FLAG_SECURE`).