Profilatura delle app Android

Prima di distribuire l'app in un app store, è importante identificare e risolvere eventuali colli di bottiglia delle prestazioni, problemi di utilizzo eccessivo della memoria o uso inefficiente delle risorse di rete. A questo scopo sono disponibili due strumenti del profiler:

  • Xamarin Profiler
  • Android Profiler in Android Studio

Questa guida presenta Xamarin Profiler e fornisce informazioni dettagliate per iniziare a usare Android Profiler.

Xamarin Profiler

Xamarin Profiler è un'applicazione autonoma integrata con Visual Studio e Visual Studio per Mac per la profilatura di app Xamarin dall'interno dell'ambiente di sviluppo integrato (IDE). Per altre informazioni sull'uso di Xamarin Profiler, vedere Xamarin Profiler.

Nota

È necessario disporre di una sottoscrizione per Visual Studio Enterprise per sbloccare la funzionalità Xamarin Profiler in Visual Studio Enterprise in Windows o in Visual Studio per Mac.

Android Studio Profiler

Android Studio 3.0 e versione successiva include lo strumento Android Profiler. È possibile usare Android Profiler per misurare le prestazioni di un'app Xamarin Android compilata con Visual Studio, senza la necessità di una licenza di Visual Studio Enterprise. Tuttavia, a differenza di Xamarin Profiler, Android Profiler non è integrato con Visual Studio e può essere usato solo per profilare un pacchetto dell'applicazione Android (APK) compilato in precedenza e importato in Android Profiler.

Avvio di un'app Xamarin Android in Android Profiler

I passaggi seguenti illustrano come avviare un'applicazione Xamarin Android nello strumento Android Profiler di Android Studio. Negli screenshot di esempio riportati di seguito l'app XamagonXuzzle di Xamarin Forms viene compilata e profilata con Android Profiler:

  1. Nelle opzioni di compilazione del progetto Android disabilitare Use Shared Runtime (Usa runtime condiviso). In questo modo si garantisce che il pacchetto dell'applicazione Android (APK) venga compilato senza una dipendenza dal runtime di Mono in fase di sviluppo condiviso.

    Disabling Use Shared Runtime

  2. Compilare l'app per Debug e distribuirla in un dispositivo fisico o in un emulatore. In questo modo, viene compilata una versione Debug firmata del pacchetto APK. Per l'esempio XamagonXuzzle, il pacchetto APK risultante è denominato com.companyname.XamagonXuzzle-Signed.apk.

  3. Aprire la cartella di progetto e passare a bin/Debug. In questa cartella individuare la versione Signed.apk dell'app e copiarla in una posizione facilmente accessibile (come il desktop). Nello screenshot seguente il file com.companyname.XamagonXuzzle-Signed.apk del pacchetto APK viene individuato e copiato sul desktop:

    Location of the debug signed APK file

  4. Avviare Android Studio e selezionare Profile or debug APK (Profila o esegui il debug del pacchetto APK):

    Starting the profiler from the Android Studio launch screen

  5. Nella finestra di dialogo Select APK File (Seleziona file APK) passare al pacchetto APK compilato e copiato in precedenza. Selezionare il pacchetto APK e fare clic su OK:

    Selecting the APK in the Select APK File dialog

  6. Android Studio caricherà il pacchetto APK e disassemblerà classes.dex:

    Setting up the APK

  7. Al termine del caricamento del pacchetto APK, Android Studio visualizza la schermata di progetto seguente per il pacchetto APK. Fare clic con il pulsante destro del mouse sul nome dell'app nella visualizzazione struttura ad albero a sinistra e selezionare Open Module Settings (Apri impostazioni modulo):

    Location of Open Module Settings menu item

  8. Passare a Project Impostazioni Modules (Progetto Impostazioni > moduli), selezionare il nodo -Signed dell'app e quindi fare clic su <No SDK (Nessun SDK>):

    Navigating to the SDK setting

  9. Nel menu a discesa Module SDK (SDK modulo) selezionare il livello di Android SDK usato per compilare l'app (in questo esempio è stato usato il livello API 26 per compilare XamagonXuzzle):

    Setting the Project SDK level

    Fare clic su Apply (Applica) e su OK per salvare questa impostazione.

  10. Avviare il profiler dall'icona della barra degli strumenti:

    Location of the profiler toolbar icon

  11. Selezionare la destinazione di distribuzione per l'esecuzione/profilatura dell'app e fare clic su OK. La destinazione di distribuzione può essere un dispositivo fisico o un dispositivo virtuale in esecuzione in un emulatore. In questo esempio viene usato un dispositivo Nexus 5X:

    Selecting the deployment target

  12. Dopo l'avvio del profiler, saranno necessari alcuni secondi per la connessione al dispositivo di distribuzione e al processo dell'app. Durante l'installazione del pacchetto APK, Android Profiler segnalerà No connected devices (Nessun dispositivo connesso) e No debuggable processes (Nessun processo sottoponibile a debug).

    The profiler installs the APK

  13. Dopo alcuni secondi, Android Profiler completerà l'installazione del pacchetto APK e lo avvierà, segnalando il nome del dispositivo e il nome del processo dell'app sottoposto a profilatura (in questo esempio, rispettivamente LGE Nexus 5X e com.companyname.XamagonXuzzle):

    Profiler window after start

  14. Dopo avere identificato il dispositivo e il processo sottoponibile a debug, Android Profiler avvia la profilatura dell'app:

    Profiler displays for the running app

  15. Se si tocca il pulsante per la scelta in modo casuale in XamagonXuzzle (che determina la scelta casuale dei riquadri), verrà visualizzato l'aumento dell'utilizzo della CPU durante l'intervallo di scelta casuale dell'app:

    CPU usage when RANDOMIZE button is tapped

Uso di Android Profiler

Informazioni dettagliate per l'uso di Android Profiler sono incluse nella documentazione di Android Studio. Gli argomenti seguenti sono di particolare interesse per gli sviluppatori Xamarin Android:

  • CPU Profiler : spiega come esaminare l'utilizzo della CPU e l'attività del thread dell'app in tempo reale.

  • Memory Profiler : visualizza un grafico in tempo reale dell'utilizzo della memoria dell'app e include un pulsante per registrare le allocazioni di memoria per l'analisi.

  • Network Profiler : visualizza l'attività di rete in tempo reale dei dati inviati e ricevuti dall'app.