Android Studio Dolphin | 1/3/2021 (set 2022)

Di seguito sono riportate le nuove funzionalità di Android Studio Dolphin.

Novità in Scrivi

Di seguito sono riportati le nuove funzionalità e i miglioramenti a Jetpack Compose in Android Studio.

Componi coordinazione dell'animazione

Se le animazioni sono descritte in un'anteprima componibile, ora puoi utilizzare l'anteprima dell'animazione per ispezionarle e coordinarle tutte contemporaneamente. Puoi anche bloccare un'animazione specifica.

GIF che mostra l'ispezione con l'interfaccia utente Tutte le animazioni

Crea annotazioni multianteprima

Ora puoi definire una classe di annotazione che include più definizioni di anteprima e utilizzare la nuova annotazione per generare le anteprime contemporaneamente. Utilizza questa nuova annotazione per visualizzare l'anteprima di più dispositivi, caratteri e temi contemporaneamente, senza ripetere le definizioni per ogni singola composizione.

UI annotazioni multianteprima

Crea conteggi di ricomposizione in Controllo layout

Durante il debug dei layout di Scrivi, sapere quando i componibili vengono o meno ricomposti è importante per capire se la tua UI è implementata correttamente. Ad esempio, se ricompone troppe volte, l'app potrebbe svolgere più lavoro del necessario. D'altra parte, i componenti che non si ricompongono quando prevediamo che possano causare comportamenti imprevisti.

Ora lo strumento Controllo layout consente di vedere quando i componenti componibili discreti nella gerarchia di layout sono stati ricomposti o ignorati. Queste informazioni vengono mostrate in tempo reale mentre interagisci con l'app. Per iniziare, assicurati che l'app utilizzi Scrivi 1.2.0-alpha03 o versioni successive. quindi esegui il deployment dell'app come faresti normalmente.

Nuova composizione e contatore degli skip in Controllo layout

Apri la finestra Controllo layout e connettiti al processo dell'app. Nella struttura ad albero dei componenti, dovrebbero essere visualizzate due nuove colonne accanto alla gerarchia del layout. La prima colonna mostra il numero di composizioni per ciascun nodo. La seconda colonna mostra il numero di ignoramenti per ciascun nodo. Puoi visualizzare informazioni simili anche nel riquadro Attributi quando selezioni una componibile dalla struttura ad albero dei componenti o dalla visualizzazione del layout.

Per reimpostare il conteggio, fai clic su Reimposta nella parte superiore del riquadro Struttura ad albero dei componenti. Reimpostare il conteggio può aiutarti a comprendere le ricomposizioni o i salti durante un'interazione specifica con la tua app.

Attivazione della composizione e del conteggio degli skip in Controllo layout

Assistente di accoppiamento emulatore Wear OS aggiornato

A partire da Android Studio Dolphin Canary 3, l'assistente di accoppiamento dell'emulatore Wear OS ha funzionalità migliorate che semplificano la gestione e la connessione degli emulatori di Wear. Ora puoi effettuare le seguenti operazioni:

  • Visualizza i dispositivi Wear in Gestione dispositivi.
  • Accoppia più dispositivi Wear a un singolo telefono virtuale o fisico.
  • Ricollega automaticamente i dispositivi accoppiati in precedenza quando vengono avviati. Android Studio ora memorizza e riaccoppia l'ultima coppia configurata.

Per utilizzare queste nuove funzionalità, assicurati che gli emulatori di telefoni abbiano un livello API 30 o successivo e che abbiano installato Google Play Store. Inoltre, assicurati che gli emulatori di Wear siano API di livello 28 o successivi. Per eseguire l'upgrade alle immagini di sistema più recenti per i dispositivi emulati, vai a Strumenti > SDK Manager.

Per ulteriori informazioni, consulta la pagina Utilizzare l'assistente di accoppiamento dell'emulatore Wear OS.

Barra degli strumenti dell'emulatore Wear OS aggiornata

A partire da Android Studio Dolphin Canary 2, per gli emulatori di Wear con livello API 28 o successivo, la barra degli strumenti dell'emulatore include pulsanti che simulano i pulsanti fisici e le azioni comuni sul dispositivo. I nuovi pulsanti sono: il pulsante 1 e il pulsante 2 (il pulsante 2 è disponibile solo con l'API di livello 30 o superiore), il pulsante con il palmo e il pulsante di inclinazione. Di seguito sono riportate alcune azioni che puoi eseguire utilizzando i nuovi pulsanti nell'emulatore Wear:

  • Per impostare il dispositivo in modalità Ambient, fai clic sul pulsante con il palmo.
  • Per ripristinare la schermata precedente in cui il dispositivo era acceso prima della modalità Ambient, fai clic sul pulsante Inclina.

Per maggiori informazioni, vedi Eseguire azioni comuni nell'emulatore.

emulatore Wear con pulsanti specifici per Wear

Nuove configurazioni di esecuzione per Wear OS

Sono state aggiunte nuove configurazioni di esecuzione per eseguire rapidamente il debug di superfici specifiche per Wear OS, come quadranti, schede e complicazioni. Puoi creare queste nuove configurazioni dalla finestra di dialogo Esegui/configura configurazioni di debug quando esegui l'applicazione.

Per maggiori informazioni, consulta l'articolo Configurazioni di esecuzione/debug Wear OS.

Nuove configurazioni del lancio di WearOS

Nuovo Logcat

Logcat è stato aggiornato per semplificare l'analisi, l'esecuzione di query e il monitoraggio dei log.

Nuovo formattatore

Logcat ora formatta i log per semplificare la scansione di informazioni utili, come tag e messaggi, e identificare diversi tipi di log, come avvisi ed errori.

Nuova formattazione per i log in Logcat

Crea più finestre Logcat

Ora puoi creare più schede all'interno di Logcat, in modo da poter passare facilmente tra i diversi dispositivi o query. Facendo clic con il pulsante destro del mouse su una scheda, puoi rinominarla, quindi trascinarla per riorganizzarle.

Inoltre, per semplificare il confronto tra due set di log, ora puoi suddividere la visualizzazione all'interno di una scheda facendo clic con il tasto destro del mouse nella visualizzazione log e selezionando Dividi a destra o Dividi. Per chiudere una suddivisione, fai clic con il tasto destro del mouse e seleziona Chiudi. Ogni suddivisione consente di impostare la connessione del dispositivo, le opzioni di visualizzazione e la query.

Crea più finestre logcat utilizzando le suddivisioni

Passare da una visualizzazione preimpostata all'altra

Logcat ora consente di passare rapidamente da una modalità di visualizzazione all'altra (Standard, Compatta e Personalizzata) facendo clic su Selettore modalità di visualizzazione. Ogni modalità di visualizzazione fornisce un'impostazione predefinita diversa per mostrare più o meno informazioni, ad esempio timestamp, tag e ID di processo (PID). Puoi anche personalizzare ciascuna di queste modalità di visualizzazione predefinite e una modalità di visualizzazione personalizzata selezionando Modifica visualizzazione.

Screenshot del passaggio da una modalità di visualizzazione all'altra

Nella versione precedente di Logcat avevi la possibilità di utilizzare la ricerca per stringhe (con supporto per le espressioni regolari) o di creare un nuovo filtro compilando vari campi con l'interfaccia utente di Logcat. La prima opzione rendeva la ricerca più complessa, la seconda la seconda rendeva più difficili la condivisione e l'impostazione delle query. Ora abbiamo semplificato l'esperienza introducendo ricerche per coppie chiave-valore direttamente dal campo della query principale.

Screenshot della nuova sintassi delle query con completamento automatico

Questo nuovo sistema di query fornisce l'accuratezza delle query desiderate, senza fare affidamento su espressioni regolari, con la possibilità di ricordare le query passate dalla cronologia e di condividerle con altri. Inoltre, puoi comunque utilizzare le espressioni regolari ed escludere i log in base alle coppie chiave-valore. Di seguito sono riportati alcuni esempi di come utilizzare il nuovo sistema di query, ma puoi anche iniziare semplicemente a digitare nel campo della query per visualizzare i suggerimenti:

  • PID per il progetto di app locale: package:mine
  • Valori specifici:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Escludi un valore specifico facendo precedere la chiave dal simbolo -:
    • -tag:<exclude-tag>
  • Utilizza espressioni regolari con una determinata chiave inserendo ~ dopo la chiave:
    • tag~:<regular-expression-tag>
    • Combina con il tag di esclusione: -tag~:<exclude-regular-expression-tag>

Puoi anche visualizzare una cronologia delle query facendo clic su Selettore della cronologia delle query nel campo delle query e selezionandole dal menu a discesa. Per aggiungere una query ai preferiti in modo che rimanga in cima all'elenco in tutti i progetti di Studio, fai clic sulla Query preferita alla fine del campo della query.

Screenshot della cronologia delle query con i preferiti

Monitorare i log relativi ad arresti anomali/riavvii delle app

Il nuovo Logcat ora semplifica il monitoraggio dei log della tua app in caso di arresti anomali e riavvii dell'app, in modo da non perdere log importanti per questi eventi. Quando un Logcat rileva che il processo dell'app è stato interrotto e riavviato, viene visualizzato un messaggio nell'output, ad esempio PROCESS ENDED e PROCESS STARTED, come mostrato di seguito:

Screenshot di riavvii del processo in logcat

Il riavvio di Logcat conserva la configurazione della sessione, ad esempio suddivisioni di schede, filtri e opzioni di visualizzazione, per consentirti di continuare facilmente la sessione.

Dispositivi gestiti da Gradle

Per migliorare coerenza, prestazioni e affidabilità quando si utilizzano dispositivi virtuali Android per i test strumentati automatizzati, stiamo introducendo i dispositivi gestiti da Gradle. Questa funzionalità, disponibile per i livelli API 27 e successivi, consente di configurare dispositivi di test virtuali nei file Gradle del progetto. Il sistema di compilazione utilizza le configurazioni per gestire completamente (ovvero creare, eseguire il deployment ed eliminare) i dispositivi durante l'esecuzione dei test automatici.

Questa funzionalità garantisce a Gradle visibilità non solo sui test in esecuzione, ma anche sul ciclo di vita dei dispositivi, migliorando così la qualità dell'esperienza di test nei seguenti modi:

  • Gestisce i problemi relativi ai dispositivi per garantire l'esecuzione dei test
  • Utilizza gli snapshot degli emulatori per migliorare i tempi di avvio e l'utilizzo della memoria dei dispositivi, nonché per ripristinare lo stato di pulizia dei dispositivi tra un test e l'altro
  • Memorizza nella cache i risultati dei test ed esegue nuovamente solo i test che potrebbero fornire risultati diversi
  • Fornisce un ambiente coerente per l'esecuzione dei test tra test locali e remoti

Inoltre, Gradle Managed Devices introduce un nuovo tipo di emulatore, chiamato Automated Test Devices (ATD), ottimizzato per migliorare le prestazioni durante l'esecuzione dei test di strumentazione. Se abbinato al supporto dello partizionamento orizzontale di test, puoi sperimentare la suddivisione della suite di test in più istanze ATD al fine di ridurre il tempo complessivo di esecuzione del test. Per saperne di più sui dispositivi gestiti da Gradle e sulle sue funzionalità associate, consulta Scalare i test con i dispositivi gestiti da Gradle.

Supporto di R8 tramite l'utilizzo di file di mappatura basati su offset dell'istruzione DEX

Durante l'ottimizzazione delle informazioni di riga, R8 ora può codificare le informazioni negli oggetti di informazioni di debug condivisi con tabelle a linee in base agli offset delle istruzioni. Questo riduce sostanzialmente l'overhead delle informazioni. Il risultato è che le righe nei metodi non sono più consecutive, ma potrebbero saltare a intervalli a seconda della dimensione delle istruzioni. Tieni presente che alcuni strumenti non prendono in considerazione questa codifica condivisa.

Inoltre, le VM Android a partire da O (livello API 26) supportano gli offset delle istruzioni di stampa nelle analisi dello stack se il metodo non contiene informazioni sul numero di riga. Quando si compila con minSdk 26 o versioni successive e senza informazioni sui file di origine, R8 rimuove completamente le informazioni relative al numero di riga.

Le lambda stateless non sono più desugurate come singleton

Le lambda stateless non vengono più assegnate come singleton durante il desugaring. La rappresentazione come singleton aggiunge un overhead per le dimensioni del codice a causa dell'aggiunta di campi e inizializzazione della classe, nonché dell'overhead all'avvio, dovuto all'inizializzazione della classe statica. Le lambda stateless vengono ora assegnate nei siti di utilizzo allo stesso modo delle lambda stateful (lambda con acquisizioni).

R8 evita il rallentamento della verifica sui runtime di Android

Per eliminare i problemi di prestazioni sui runtime di Android (Dalvik e ART), R8 (non D8) ora introduce stub di libreria e delinea le chiamate ai metodi di libreria per le classi e i metodi di libreria che potrebbero non esistere in fase di runtime. In questo modo vengono eliminati molti problemi di verifica e migliora le prestazioni di runtime. Questa funzionalità è sempre attiva.

Supporto per le API JDK-11 con desugaring dell'API Java 8 e versioni successive

Quando si utilizza la dipendenza coreLibraryDesugaring, ora è disponibile il supporto per una libreria di implementazione basata su JDK-11. Per ulteriori informazioni, consulta ildesugar_jdk_libs log delle modifiche.

Release delle patch

Di seguito è riportato un elenco delle release delle patch in Android Studio Dolphin.

Android Studio Dolphin | Patch 1.3.1 2021 (ottobre 2022)

Con la release Patch 1, Android Studio Dolphin supporta ora il plug-in Kotlin 1.7.20. Questo piccolo aggiornamento include anche le seguenti correzioni di bug:

Problemi risolti
Plugle Android per Gradle
L'esecuzione dei test Android strumentati tramite Gradle non consente di applicare correttamente il deprovisioning
AGP 7.3.0 interrompe la sincronizzazione Gradle per i progetti della piattaforma Gradle
Dexer (D8)
Aggiungi un'API pubblica per la risoluzione dei conflitti durante l'unione di file DEX (per consentire a Bazael di consentire classi duplicate)
Importazione/sincronizzazione
L'importazione del progetto Gradle non riesce dopo l'upgrade dalla patch 2 di Chipmunk (2021.2.1)
Risorse
NPE in AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Shrinker (R8)
I metadati Kotlin non vengono copiati durante la sostituzione dei campi del tipo
Conversione imprevista di tipo impreciso: TOP (tutto)
Gradle 7.3.0 causa errore di build dell'APK com.android.tools.r8.CompilationFailedException
Elimina i costruttori predefiniti inattivi in modalità compat.
Conflitto con Markdown JetBrains
Supporto per ThreadLocal.withInitial(java.util.function.Fornitore
AGP 7.3 genera dex per classi con costruttore danneggiato
Tentativo imprevisto di determinare se il codice non CF deve essere rimosso
Errore di verifica ktor
Valore indefinito rilevato durante la compilazione generato durante l'elaborazione di okio-jvm 3.2.0
Errore di compilazione dall'oggetto incorporato della classe con un'istanza indiretta di utenti
java.lang.IllegalAccessError con R8 3.3.75