

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risoluzione dei problemi relativi ai test delle applicazioni Android in AWS Device Farm
<a name="troubleshooting-android-applications"></a>

Il seguente argomento elenca i messaggi di errore che si verificano durante il caricamento dei test di applicazioni Android e consiglia soluzioni alternative per risolvere ogni errore.

**Nota**  
Le seguenti istruzioni si basano su Linux x86\$164 e Mac.

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
Impossibile aprire l'applicazione. Verificare che il file sia valido e riprovare.

Verificare che sia possibile decomprimere il pacchetto dell'applicazione senza errori. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.

1. Copiare il pacchetto di test nella directory di lavoro, quindi eseguire il comando seguente:

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

1. Dopo aver decompresso il pacchetto, è possibile trovare la struttura ad albero della directory di lavoro eseguendo il seguente comando:

   ```
   $ tree .
   ```

   Un pacchetto di un'applicazione Android valido dovrebbe produrre un output come il seguente:

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

   Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
Impossibile estrarre informazioni sull'applicazione. Verificare che l'applicazione sia valida eseguendo il comando `aapt debug badging <path to your test package>` e riprovare quando il comando non stampa più errori. 

Durante il processo di convalida del caricamento, AWS Device Farm analizza le informazioni dall'output di un `aapt debug badging <path to your package>` comando. 

Controllare che questo comando possa essere eseguito correttamente sull'applicazione Android. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.
+ Copiare il pacchetto dell'applicazione nella directory di lavoro, quindi eseguire il comando:

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

  Un pacchetto di un'applicazione Android valido dovrebbe produrre un output come il seguente:

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

  Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
Impossibile trovare il valore del nome del pacchetto nell'applicazione. Verificare che l'applicazione sia valida eseguendo il comando `aapt debug badging <path to your test package>` e riprovare dopo la ricerca del valore del nome del pacchetto con parola chiave "pacchetto: nome".

Durante il processo di convalida del caricamento, AWS Device Farm analizza il valore del nome del pacchetto dall'output di un `aapt debug badging <path to your package>` comando.

Controllare che questo comando possa essere eseguito correttamente sull'applicazione Android e che trovi con successo il valore del nome del pacchetto. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.
+ Copiare il pacchetto dell'applicazione nella directory di lavoro, quindi eseguire il comando seguente:

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

  Un pacchetto di un'applicazione Android valido dovrebbe produrre un output come il seguente:

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

  Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
Impossibile trovare il valore della versione SDK nell'applicazione. Verificare che l'applicazione sia valida eseguendo il comando `aapt debug badging <path to your test package>` e riprovare dopo la ricerca del valore della versione SDK con parola chiave `sdkVersion`.

Durante il processo di convalida del caricamento, AWS Device Farm analizza il valore della versione dell'SDK dall'output di un comando. `aapt debug badging <path to your package>`

Controllare che questo comando possa essere eseguito correttamente sull'applicazione Android e che trovi con successo il valore del nome del pacchetto. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.
+ Copiare il pacchetto dell'applicazione nella directory di lavoro, quindi eseguire il comando seguente:

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

  Un pacchetto di un'applicazione Android valido dovrebbe produrre un output come il seguente:

  ```
  sdkVersion:'9'
  ```

  Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
Non siamo riusciti a trovare il AndroidManifest file.xml valido nella tua applicazione. Verificare che il pacchetto di test sia valido eseguendo il comando `aapt dump xmltree <path to your test package> AndroidManifest.xml` e riprovare quando il comando non stampa più errori.

Durante il processo di convalida del caricamento, AWS Device Farm analizza le informazioni dall'albero di analisi XML per un file XML contenuto nel pacchetto utilizzando il comando. `aapt dump xmltree <path to your package> AndroidManifest.xml`

Controllare che questo comando possa essere eseguito correttamente sull'applicazione Android. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.
+ Copiare il pacchetto dell'applicazione nella directory di lavoro, quindi eseguire il comando seguente:

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

  Un pacchetto di un'applicazione Android valido dovrebbe produrre un output come il seguente:

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

  Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

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

In presenza del seguente messaggio, attenersi alla procedura indicata per risolvere il problema.

**avvertimento**  
L'applicazione richiede autorizzazioni di amministratore del dispositivo. Verificare che le autorizzazioni non siano richieste eseguendo il comando `aapt dump xmltree <path to your test package> AndroidManifest.xml` e riprovare dopo aver controllato che l'output non contenga la parola chiave `android.permission.BIND_DEVICE_ADMIN`.

Durante il processo di convalida del caricamento, AWS Device Farm analizza le informazioni di autorizzazione dall'albero di analisi xml per un file xml contenuto nel pacchetto utilizzando il comando. `aapt dump xmltree <path to your package> AndroidManifest.xml`

Verificare che l'applicazione non richieda autorizzazioni di amministratore per il dispositivo. Nel seguente esempio, il nome del pacchetto è **app-debug.apk**.
+ Copiare il pacchetto dell'applicazione nella directory di lavoro, quindi eseguire il comando seguente:

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

  L'output dovrebbe essere come segue:

  ```
  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 l'applicazione Android è valida, l'output non deve contenere: `A: android:name(0x01010003)="android.permission.BIND_DEVICE_ADMIN" (Raw: "android.permission.BIND_DEVICE_ADMIN")`. 

  Per ulteriori informazioni, consulta [Test Android in AWS Device Farm](test-types-android-tests.md).

## Alcune finestre della mia applicazione Android mostrano una schermata vuota o nera
<a name="flag-secure-screen-issue"></a>

Se state testando un'applicazione Android e notate che alcune finestre dell'applicazione appaiono con una schermata nera nella registrazione video del test effettuata da Device Farm, è possibile che l'applicazione utilizzi la `FLAG_SECURE` funzionalità di Android. Questo flag (come descritto nella [documentazione ufficiale di Android](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE)) viene utilizzato per impedire che determinate finestre di un'applicazione vengano registrate dagli strumenti di registrazione dello schermo. Di conseguenza, la funzione di registrazione dello schermo di Device Farm (sia per l'automazione che per i test di accesso remoto) potrebbe mostrare una schermata nera al posto della finestra dell'applicazione se la finestra utilizza questo flag. 

Questo flag viene spesso utilizzato dagli sviluppatori per le pagine delle loro applicazioni che contengono informazioni sensibili come le pagine di accesso. Se vedi una schermata nera al posto della schermata dell'applicazione in alcune pagine come la pagina di accesso, collabora con i tuoi sviluppatori per ottenere una versione dell'applicazione che non utilizzi questo flag per i test.

Inoltre, tenete presente che Device Farm può ancora interagire con le finestre delle applicazioni che hanno questo flag. Pertanto, se la pagina di accesso dell'applicazione appare come una schermata nera, è comunque possibile inserire le credenziali per accedere all'applicazione (e quindi visualizzare le pagine non bloccate dal `FLAG_SECURE` flag).