Problemi noti relativi ad Android Studio e al plug-in Android per Gradle

In questa pagina vengono monitorati i problemi noti relativi al plug-in Android Studio Koala e Android Gradle 8.5.0. Se riscontri un problema non ancora incluso qui, segnala un bug.

Esegui l'upgrade per visualizzare l'anteprima:ogni release di Android Studio e del plug-in Android Gradle ha lo scopo di migliorare stabilità e prestazioni, nonché aggiungere nuove funzionalità. Per usufruire subito dei vantaggi delle prossime release, scarica e installa Anteprima di Android Studio.

Problemi noti con Android Studio

In questa sezione vengono descritti i problemi noti presenti nell'ultima versione stabile di Android Studio.

Differenze di comportamento di Gemini in Android Studio .aiexclude

Quando configuri la condivisione del contesto per Gemini in Android Studio, i file .aiexclude si comportano come i file .gitignore, con le seguenti eccezioni:

  • Un file .aiexclude vuoto blocca tutti i file nella sua directory e in tutte le sottodirectory. È come un file che contiene soltanto "*".
  • I file .aiexclude non supportano la negazione (preferindo pattern con !).

Nella finestra dell'assistente di Firebase viene visualizzato un messaggio di errore

Se nella finestra di Firebase Assistant (Strumenti > Firebase nel menu principale) viene visualizzato un messaggio di errore, annulla le cache e riavvia Android Studio per correggere l'errore.

Impossibile isolare una vista con Layout Inspector

La possibilità di isolare una vista utilizzando lo strumento Layout Inspector incorporato non è al momento disponibile. Stiamo lavorando per risolvere questo problema in una versione futura.

Non è possibile ispezionare tutti i nodi di scrittura utilizzando Layout Inspector

Se noti che non tutti i nodi di Compose sono controllabili quando utilizzi Layout Inspector, è probabile che la causa sia un bug che è stato corretto in Compose versione 1.5.0-alpha04. Se riscontri questo problema, assicurati di eseguire l'upgrade a Compose versione 1.5.0-alpha04 o successiva.

Errore durante il rendering dell'anteprima di Compose

Iniziando con Chipmunk di Android Studio, se vedi java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner o java.lang.ClassNotFoundException: androidx.savedstate.R$id nel riquadro dei problemi, assicurati di includere una dipendenza debugImplementation per androidx.lifecycle:lifecycle-viewmodel-savedstate nel modulo.

Se visualizzi java.lang.NoSuchFieldError: view_tree_lifecycle_owner nel riquadro Problemi, assicurati di includere una dipendenza debugImplementation per androidx.lifecycle:lifecycle-runtime nel modulo.

Se visualizzi java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer o java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener nel riquadro dei problemi, assicurati di includere una dipendenza debugImplementation per androidx.customview:customview-poolingcontainer nel modulo.

Errore durante l'utilizzo di password diverse per chiavi e archivi chiavi

A partire dalla versione 4.2, Android Studio viene eseguito su JDK 11. Questo aggiornamento causa un cambiamento del comportamento di base relativo alle chiavi di firma.

Quando vai a Crea > Genera bundle / APK firmato e tenti di configurare la firma dell'app per un app bundle o un APK, l'inserimento di password diverse per la chiave e l'archivio chiavi potrebbe causare il seguente errore:

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

Per aggirare questo problema, inserisci la stessa password sia per la chiave che per l'archivio chiavi.

Android Studio non viene avviato dopo l'installazione della versione 4.2

Studio tenta di importare file .vmoptions precedenti e disinfettarli per utilizzarli con il garbage collector utilizzato da JDK 11. Se questo processo non va a buon fine, l'IDE potrebbe non avviarsi per determinati utenti che hanno impostato opzioni per le VM personalizzate nel file .vmoptions.

Per aggirare il problema, ti consigliamo di commentare le opzioni personalizzate in .vmoptions (utilizzando il carattere "#"). Il file .vmoptions è disponibile nelle seguenti posizioni:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

Se Studio continua a non avviarsi dopo aver provato questa soluzione alternativa, consulta la sezione Studio non si avvia dopo l'upgrade di seguito.

App che utilizzano Database Inspector si arresta in modo anomalo sull'emulatore Android 11

Le app che utilizzano Database Inspector potrebbero arrestarsi in modo anomalo quando vengono eseguite sull'emulatore Android 11, con un errore simile al seguente visualizzato in logcat:

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

Per risolvere il problema, esegui l'upgrade dell'emulatore Android 11 alla versione 9 o successive accedendo a Strumenti > SDK Manager. Nella scheda SDK Platforms, seleziona la casella Show Package Details (Mostra dettagli pacchetto) e scegli la revisione 9 o successive dell'emulatore Android 11.

Studio non si avvia dopo l'upgrade

Se Studio non si avvia dopo un upgrade, il problema potrebbe essere dovuto a una configurazione di Android Studio non valida importata da una versione precedente di Android Studio o a un plug-in incompatibile. Come soluzione alternativa, prova a eliminare (o rinominarla, a scopo di backup) della directory di seguito, a seconda della versione e del sistema operativo di Android Studio, quindi riavvia Android Studio. In questo modo verrà ripristinato lo stato predefinito di Android Studio, rimuovendo tutti i plug-in di terze parti.

Per Android Studio 4.1 e versioni successive:

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    Esempio: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    Esempio: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio<version> e ~/.local/share/Google/AndroidStudio<version>
    Esempio: ~/.config/Google/AndroidStudio4.1 e ~/.local/share/Google/AndroidStudio4.1

Per Android Studio 4.0 e versioni precedenti:

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    Esempio: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    Esempio: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    Esempio: ~/.AndroidStudio3.6/config

Tieni presente che la directory di configurazione per le versioni canary e beta di Android Studio è PreviewX.Y anziché X.Y per <version>. Ad esempio, le build canary di Android Studio 4.1 utilizzano AndroidStudioPreview4.1, anziché la directory AndroidStudio4.1 utilizzata per le release candidature alle release e le release stabili.

Problema di compilazione nei progetti multipiattaforma Kotlin

Nel codice MPP Kotlin potrebbero verificarsi errori di compilazione a causa della mancanza di simboli. Il problema dovrebbe risolversi aggiornando il plug-in Kotlin alla versione 1.4.

Conflitti di mappatura delle chiavi su Linux

Su Linux, alcune scorciatoie da tastiera sono in conflitto con le scorciatoie da tastiera predefinite di Linux e con quelle dei gestori di finestre più diffusi, come KDE e GNOME. Queste scorciatoie da tastiera in conflitto potrebbero non funzionare come previsto in Android Studio.

Ulteriori informazioni su questo problema (incluse potenziali soluzioni alternative) sono disponibili nel tracker dei bug di IntelliJ.

Testo piccolo dell'interfaccia utente su ChromeOS

Su ChromeOS, il testo potrebbe apparire molto più piccolo rispetto alle release precedenti. Per risolvere questo problema, procedi nel seguente modo:

  1. Apri la finestra Impostazioni facendo clic su File > Impostazioni
  2. Seleziona Aspetto e comportamento > Aspetto.
  3. Seleziona Usa carattere personalizzato.
  4. Aumenta la dimensione dei caratteri.
  5. Nella finestra Impostazioni, vai a Editor > Carattere.
  6. Aumenta la dimensione dei caratteri.
  7. Fai clic su Ok.

Modifica del codice

Questa sezione descrive i problemi noti relativi all'editor di codice.

Inserimento da tastiera bloccato - problemi "iBus" su Linux

Esistono alcune interazioni note tra il daemon iBus su Linux e Android Studio. In alcuni scenari, l'IDE smette di rispondere all'input da tastiera o inizia a inserire caratteri casuali. Questo bug è causato da un'assenza di sincronizzazione tra iBus e XLib + AWT ed è già stato segnalato a monte a JetBrains e iBus. Al momento esistono tre soluzioni alternative per questo problema:

  • Soluzione alternativa 1: forza iBus in modalità sincrona. Prima di avviare Android Studio, esegui quanto segue nella riga di comando:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • Soluzione alternativa 2: disattiva iBus Input in Android Studio. Per disattivare l'input iBus solo per Android Studio, esegui quanto segue nella riga di comando:
    $ XMODIFIERS= ./bin/studio.sh
    Questa soluzione alternativa disabilita solo i metodi di immissione per Android Studio, non per altre applicazioni in esecuzione. Tieni presente che se riavvii il daemon mentre è in esecuzione Android Studio (ad esempio, eseguendo ibus-daemon -rd), disattivi effettivamente i metodi di input per tutte le altre applicazioni e potresti anche causare l'arresto anomalo della JVM di Android Studio con un errore di segmentazione.
  • Soluzione 3: ricontrolla le associazioni di scorciatoie per assicurarti che la scorciatoia di input successiva non sia impostata su Ctrl + Spazio, poiché è anche la scorciatoia per il completamento del codice in Android Studio. In Ubuntu 14.04 (Trusty), Super + Spazio è la scorciatoia predefinita, ma le impostazioni delle versioni precedenti potrebbero essere ancora disponibili. Per controllare le associazioni di scorciatoie, esegui ibus-setup sulla riga di comando per aprire la finestra Preferenze IBus. In Scorciatoie da tastiera, seleziona Metodo di immissione successivo. Se è impostato su Ctrl + Barra spaziatrice, modificalo in Super + Barra spaziatrice o un'altra scorciatoia a tua scelta.

Configurazione progetto

Questa sezione descrive i problemi noti relativi alla configurazione del progetto e alla sincronizzazione Gradle.

Sincronizzazione Gradle non riuscita: tubo rotto

Il problema è che il daemon Gradle sta tentando di utilizzare IPv4 anziché IPv6.

  • Soluzione 1: su Linux, inserisci quanto segue in ~/.profile o ~/.bash_profile:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • Soluzione 2: nel file vmoptions di Android Studio, modifica la riga -Djava.net.preferIPv4Addresses=true in -Djava.net.preferIPv6Addresses=true Per ulteriori informazioni, consulta la Guida dell'utente di IPv6 di networking.

Errori "non autenticati" dalla sincronizzazione Gradle o SDK Manager

La causa principale di questi errori è un certificato mancante in $JAVA_HOME/jre/lib/certificates/cacerts. Per risolvere questi errori, procedi come segue:

  • Se utilizzi un proxy, prova a connetterti direttamente. Se la connessione diretta funziona, per connetterti tramite proxy potresti dover utilizzare keytool per aggiungere il certificato del server proxy al file cacerts.
  • Reinstalla un JDK supportato e non modificato. Esiste un problema noto che interessa gli utenti Ubuntu, pertanto viene visualizzato il valore /etc/ssl/certs/java/cacerts vuoto. Per aggirare il problema, esegui il comando riportato di seguito nella riga di comando:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Deployment in corso

Questa sezione descrive i problemi noti relativi al deployment dell'app su un dispositivo connesso.

[Solo Mac OS] Gli aggiornamenti incrementali non vengono applicati a causa di un problema di visualizzazione del file Gradle sui progetti salvati in /System/Volumes/Data

Il problema di Gradle 18149 interessa le versioni del plug-in Android Gradle 7.0 e versioni successive perché richiedono Gradle 7.0 e versioni successive. A partire da Gradle 7.0, la visualizzazione dei file è abilitata per impostazione predefinita. Se lavori su Mac OS e il tuo progetto è salvato in /System/Volumes/Data, la visualizzazione dei file Gradle non terrà traccia correttamente delle modifiche ai file. Di conseguenza, il sistema di compilazione non rileverà le modifiche ai file e non aggiornerà gli APK. Il codice di deployment incrementale non farà quindi nulla perché lo stato dell'APK locale è lo stesso di quello sul dispositivo.

Per aggirare il problema, devi spostare la directory del progetto nella directory utente, ovvero in /Users/username. Il sistema di compilazione riceverà quindi corretta notifica delle modifiche ai file dall'osservazione dei file Gradle e le modifiche incrementali verranno applicate correttamente.

Emulatore Android HAXM su macOS High Sierra

Android Emulator su macOS High Sierra (10.13) richiede HAXM 6.2.1 o versioni successive per una compatibilità e una stabilità ottimali con macOS. Tuttavia, macOS 10.13 prevede un processo più impegnativo per l'installazione delle estensioni kernel, come HAXM. Devi consentire manualmente l'installazione dell'estensione del kernel come segue:

  1. Innanzitutto, prova a installare la versione più recente di HAXM da SDK Manager.
  2. In MacOS, vai a Preferenze di sistema > Sicurezza e privacy.
  3. Se viene visualizzato un avviso che ti informa che è stato bloccato il caricamento del software di sistema dello sviluppatore "Intel Corporation Apps", fai clic su Consenti:

Per ulteriori informazioni e soluzioni alternative, consulta questa pagina web di Apple e il problema 62395878.

Applica modifiche

Questa sezione descrive i problemi noti relativi all'opzione Applica modifiche.

Nome della nuova app non applicato

Se rinomini l'app e poi provi ad applicare la modifica, il nome aggiornato potrebbe non essere applicato. Per risolvere il problema, fai clic su Esegui Icona Esegui per eseguire nuovamente il deployment dell'app e visualizzare le modifiche.

Un problema in Android Runtime genera un errore

Se utilizzi un dispositivo con Android 8.0 o 8.1, potresti visualizzare messaggi "VERIFICATION_ERROR" quando cerchi di applicare determinati tipi di modifiche (soprattutto se usi Kotlin). Questo messaggio è causato da un problema di Android Runtime risolto in Android 9.0 e versioni successive. Anche se il problema causa la mancata riuscita di Applica modifiche, puoi comunque eseguire Icona Esegui di nuovo l'app per vedere le modifiche. Tuttavia, ti consigliamo di eseguire l'upgrade del dispositivo ad Android 9.0 o versioni successive.

Debug e test

In questa sezione vengono descritti i problemi noti relativi al debug e ai test della tua app.

JUnit verifica le risorse mancanti in classpath quando viene eseguito da Android Studio

Se nei moduli Java sono presenti cartelle di risorse specifiche, queste risorse non saranno disponibili durante l'esecuzione dei test dall'IDE. È possibile eseguire test utilizzando Gradle dalla riga di comando. È possibile anche eseguire l'attività Gradle check dall'IDE. Consulta il problema 64887 per ulteriori dettagli.

Questo problema si verifica a partire da IntelliJ 13, che richiede di avere una sola cartella come classpath. Il builder di IntelliJ copia tutte le risorse in quella cartella di build, ma Gradle non le copia.

  • Soluzione 1: esegui l'attività Gradle check dall'IDE invece di eseguire un test delle unità.
  • Soluzione 2: aggiorna lo script di build per copiare manualmente le risorse nella cartella di build. Consulta il commento n. 13 per ulteriori informazioni.

L'esecuzione di test JUnit può compilare il codice due volte

Quando crei un nuovo progetto, la configurazione modello JUnit potrebbe essere creata con due passaggi "Prima del lancio": Make e Gradle-aware Make. Questa configurazione viene quindi propagata a tutte le configurazioni di esecuzione JUnit create.

  • Per risolvere il problema relativo al progetto corrente, fai clic su Run > Edit Configurations (Esegui > Modifica configurazioni) e modifica la configurazione JUnit predefinita in modo da includere solo il passaggio Gradle-aware Make.
  • Per risolvere il problema per tutti i progetti futuri, fai clic su File > Chiudi progetto. Dovresti visualizzare la schermata di benvenuto. Quindi, fai clic su Configura > Impostazioni predefinite progetto > Configurazioni di esecuzione e modifica la configurazione dell'unità JUnit in modo da includere solo il passaggio Creazione con grado Gradle.

Alcune configurazioni di esecuzione di test non funzionano

Non tutte le configurazioni di esecuzione disponibili facendo clic con il tasto destro del mouse su un metodo di test sono valide. Nello specifico, le seguenti configurazioni non sono valide:

  • Le configurazioni di esecuzione Gradle (che hanno un logo Gradle come icona) non funzionano.
  • Le configurazioni di esecuzione JUnit (con un'icona senza il simbolo Android verde) non si applicano ai test di strumentazione, che non possono essere eseguiti sulla JVM locale.
Android Studio memorizza anche la configurazione dell'esecuzione creata in un determinato contesto (ad esempio, facendo clic con il tasto destro del mouse su una classe o un metodo specifico) e non offrirà l'esecuzione in una configurazione diversa in futuro. Per risolvere il problema, fai clic su Esegui > Modifica configurazioni e rimuovi le configurazioni create in modo errato.

Aggiunta di punti di interruzione Java durante il debug del codice nativo

Mentre l'app è in pausa in un punto di interruzione nel codice nativo, i debugger automatico e doppio potrebbero non riconoscere immediatamente i nuovi punti di interruzione Java impostati. Per evitare questo problema, aggiungi punti di interruzione Java prima di avviare una sessione di debug o mentre l'app è in pausa in un punto di interruzione Java. Per ulteriori informazioni, consulta il problema 229949.

Uscire dal debugger nativo

Mentre utilizzi il debugger automatico o doppio per eseguire il debug di Java e di codice nativo, se passi a una funzione nativa dal codice Java (ad esempio, il debugger mette in pausa l'esecuzione in una riga del codice Java che chiama una funzione nativa e fai clic su Passaggio successivo ) e vuoi tornare al codice Java, fai clic su Riprendi programma per riprendere l'applicazione , invece di Riprendere l'app oppure Riprendere il programma .your-module Per ulteriori informazioni, consulta il problema 224385.

Il debugger nativo si blocca durante il caricamento delle librerie

Se utilizzi il debugger nativo per la prima volta dopo l'upgrade ad Android Studio 4.2 o versioni successive, il debugger nativo potrebbe non rispondere più durante il caricamento delle raccolte dal dispositivo Android. Si tratta di un problema fisso che continua a verificarsi anche se arresti e riavvii il debugger. Per risolvere il problema, svuota la cache LLDB all'indirizzo $USER/.lldb/module-cache/.

Il debugger nativo si arresta in modo anomalo con il messaggio "Processo di debug completato con codice di uscita 127"

Questo errore si verifica sulle piattaforme basate su Linux all'avvio del debugger nativo. Indica che una delle librerie richieste dal debugger nativo non è installata sul sistema locale. Il nome della libreria mancante potrebbe essere già stato stampato nel file idea.log. In caso contrario, puoi utilizzare un terminale per accedere alla directory di installazione di Android Studio ed eseguire la riga di comando bin/lldb/bin/LLDBFrontend --version per individuare le librerie mancanti. In genere, la libreria mancante è ncurses5, poiché è già stato eseguito l'upgrade di alcune distribuzioni Linux recenti a ncurses6.

Profiler

Questa sezione descrive i problemi noti relativi ai profiler.

Profiler di memoria nativo: profilazione non disponibile durante l'avvio dell'app

Native Memory Profiler non è al momento disponibile durante l'avvio dell'app. Questa opzione sarà disponibile in una versione futura.

Come soluzione alternativa, puoi utilizzare il profilo a riga di comando autonomo Perfetto per acquisire i profili di avvio.

Errori di timeout in CPU Profiler

Potresti riscontrare errori "Interruzione della registrazione non riuscita" nel Profiler della CPU di Android Studio quando selezioni le configurazioni Campioni Java Methods o Trace Java Methods. Si tratta spesso di errori di timeout, specialmente se nel file idea.log viene visualizzato il seguente messaggio di errore:

Wait for ART trace file timed out

Gli errori di timeout tendono ad influenzare i metodi tracciati più dei metodi campionati e registrazioni più lunghe più di quelle più brevi. Come soluzione alternativa temporanea, potrebbe essere utile provare registrazioni più brevi per vedere se l'errore scompare.

In caso di problemi di timeout con Profiler, segnala un bug che include la marca o il modello dei tuoi dispositivi e le eventuali voci pertinenti da idea.log e logcat.

Eccezione ADB durante il debug o la profilazione

Quando utilizzi gli Strumenti della piattaforma 29.0.3, il debug nativo e i Profiler di Android Studio potrebbero non funzionare correttamente e potresti visualizzare "AdbCommandRifiutaeccezione" o "Connessione non riuscita" nel file idea.log quando selezioni Guida > Mostra log. L'aggiornamento degli strumenti della piattaforma alla versione 29.0.4 o successiva risolve entrambi i problemi.

Per eseguire l'upgrade degli strumenti di piattaforma, segui questi passaggi:

  1. Apri SDK Manager da Android Studio facendo clic su Strumenti > Gestione SDK oppure su Gestione SDK nella barra degli strumenti.
  2. Fai clic sulla casella di controllo accanto a SDK Android Platform-Strumenti in modo che venga visualizzato un segno di spunta. Nella colonna di sinistra dovrebbe essere visualizzata un'icona di download .
  3. Fai clic su Applica o OK.

Il plug-in impedisce il funzionamento della finestra di output della build

L'utilizzo del plug-in CMake simple highlighter impedisce la visualizzazione dei contenuti nella finestra di output della build. La build viene eseguita e viene visualizzata la scheda Output build, ma non viene stampato alcun output (problema n. 204791544).

L'ordine di installazione impedisce l'avvio

L'installazione di una versione più recente di Android Studio prima di una versione precedente potrebbe impedire l'avvio della versione precedente. Ad esempio, se installi prima la versione canary di Android Studio, quindi provi a installare e avviare la versione stabile, la versione stabile potrebbe non avviarsi. In questi casi, devi svuotare la cache per avviare la versione stabile (precedente). Su macOS, per svuotare la cache, elimina la directory Library/ApplicationSupport/Google/AndroidStudioversion_number. Su Windows, per svuotare la cache utilizza Pulizia del disco.

Espresso Test Registratore non funziona con Compose

Espresso Test Recorder non funziona con i progetti che includono Compose. Per creare test dell'interfaccia utente per progetti che includono Compose, consulta Test del layout di Compose.

Conflitti delle scorciatoie di Logcat con layout di tastiera non in inglese

Se utilizzi un layout di tastiera non inglese, una scorciatoia da tastiera predefinita di Logcat potrebbe essere in conflitto con il layout e impedirti di digitare determinati caratteri durante la modifica del testo in Android Studio. Per risolvere il problema, elimina o rimappa la mappa dei tasti di Logcat in conflitto. Per modificare le mappe dei tasti di Logcat in Android Studio, seleziona Android Studio > Impostazioni > Mappa dei tasti e cerca Logcat nell'elenco delle mappe dei tasti. Per ulteriori informazioni, consulta il problema n. 263475910.

Il problema verrà risolto rimuovendo la scorciatoia di Logcat nella patch 1 di Android Studio Electric Eel.

Problemi noti con il plug-in Android Gradle

In questa sezione vengono descritti i problemi noti presenti nell'ultima versione stabile del plug-in Android per Gradle.

Non tutte le dipendenze della libreria di funzionalità dinamiche sono controllate da lint

Quando si esegue lint con checkDependencies = true da un modulo dell'app, le dipendenze della libreria di funzionalità dinamiche non vengono controllate, a meno che non siano anche dipendenze dell'app (problema n. 191977888). Come soluzione alternativa, l'attività lint può essere eseguita su queste librerie.

File di firma denominato con caratteri di ritorno a capo

La firma JAR (schema v1) non supporta nomi di file contenenti caratteri di ritorno a capo (problema n. 63885809).

La modifica degli output delle varianti al momento della creazione potrebbe non funzionare

L'utilizzo dell'API Variant per manipolare gli output delle varianti non funziona con il nuovo plug-in. Funziona comunque per attività semplici, come la modifica del nome dell'APK durante la fase di compilazione, come mostrato di seguito:

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

Tuttavia, le attività più complicate che prevedono l'accesso agli oggetti outputFile non funzionano più. Questo perché le attività specifiche delle varianti non vengono più create durante la fase di configurazione. Ciò significa che il plug-in non conosce tutti i suoi output in anticipo, ma comporta anche tempi di configurazione più rapidi.

manifestOutputFile non è più disponibile

Il metodo processManifest.manifestOutputFile() non è più disponibile e quando lo chiami viene visualizzato il seguente errore:

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

Invece di chiamare manifestOutputFile() per ottenere il file manifest per ogni variante, puoi chiamare processManifest.manifestOutputDirectory() per restituire il percorso della directory che contiene tutti i manifest generati. Puoi quindi individuare un manifest e applicarvi la tua logica. L'esempio seguente modifica dinamicamente il codice di versione nel manifest:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

Problemi con il supporto di AGP 7.3.0 AIDL e Kotlin 1.7.x

L'utilizzo di AGP 7.3.0 con KAPT in Kotlin 1.7.x causa la rimozione dei set di origini AIDL per varianti di build specifiche. Puoi comunque utilizzare gli altri set di origini AIDL, inclusi quelli di main/, i tipi di build, le versioni e le combinazioni di versioni di prodotto. Se hai bisogno di utilizzare set di origini AIDL specifici della variante, continua a utilizzare Kotlin 1.6.21.

Problemi noti risolti

Questa sezione descrive i problemi noti che sono stati risolti in una release recente. Se riscontri uno di questi problemi, devi aggiornare Android Studio all'ultima versione stabile o di anteprima.

Risolto in Android Studio 2021.1.1

  • Output lint mancante: non viene stampato alcun output di lint su stdout se l'attività lint è UP-TO-DATE (problema n. 191897708). Risolto in AGP 7.1.0-alpha05.
  • Problemi relativi al test delle unità in un progetto dell'app che utilizza il plug-in Hilt: il classpath del test delle unità contiene le classi di app non strumentate, il che significa che Hilt non instrumenta le classi dell'app per gestire l'inserimento delle dipendenze durante l'esecuzione dei test delle unità (problema n. 213534628). Risolto in AGP 7.1.1.

Risolto in Android Studio 2020.3.1

  • Eccezioni Lint nei progetti Kotlin: i progetti Kotlin che impostano checkDependencies = true potrebbero riscontrare errori o eccezioni di puntatore nulli (problema n. 158777858).

Corretta in Android Studio 4.2

  • IDE si blocca su macOS Big Sur: Android Studio 4.1 potrebbe bloccarsi quando apri una finestra di dialogo.

Corretta in Android Studio 4.1

  • Riavvia per applicare le impostazioni della memoria della versione precedente dell'IDE: dopo aver aggiornato Android Studio, devi riavviare Android Studio per applicare le impostazioni della memoria migrate da una versione precedente dell'IDE.
  • Per impostazione predefinita, la classe manifest con stringhe di autorizzazioni personalizzate non viene più generata: se vuoi generare la classe, imposta android.generateManifestClass = true.

Corretta in Android Studio 3.6

  • Errore di installazione dell'APK su LineageOS: il deployment dell'app su dispositivi che eseguono determinate versioni di LineageOS o CyanogenMod potrebbe non riuscire e generare un'eccezione INSTALL_PARSE_FAILED_NOT_APK.

    Su Android Studio 3.6 beta 1 e versioni successive, l'IDE gestisce questa eccezione eseguendo un'installazione completa dell'app quando esegui il deployment dell'app su dispositivi LineageOS o CyanogenMod. Ciò potrebbe comportare tempi di deployment più lunghi.

Corretta in Android Studio 3.5.2

  • Stile di codice XML non funzionante: durante la modifica del codice XML, l'IDE ha applicato uno stile di codice errato quando hai selezionato Codice > Riformattazione codice dalla barra dei menu.

Corretta in Android Studio 3.3.1

  • Errori di memoria insufficiente durante l'analisi dei progetti basati su C++: quando Gradle analizza un progetto che contiene codice C++ in più di una posizione sulla stessa unità, la scansione include tutte le directory al di sotto della prima directory comune. L'analisi di un numero elevato di directory e file può causare errori di memoria insufficiente.

    Per ulteriori informazioni su questo problema, leggi il bug associato al problema.