Plug-in Android per Gradle 3.1.0 (marzo 2018)

Questa versione del plug-in Android richiede quanto segue:

Versione minima Versione predefinita Note
Gradle 4.4 4.4 Per scoprire di più, consulta la sezione Aggiornare Gradle.
Strumenti di compilazione SDK 27.0.3 27.0.3 Installa o configura gli strumenti di compilazione dell'SDK. Tieni presente che non devi più specificare una versione per gli strumenti di compilazione utilizzando la proprietà android.buildToolsVersion. Per impostazione predefinita, il plug-in utilizza la versione minima richiesta.

Nuovo compilatore DEX, D8

Per impostazione predefinita, Android Studio ora utilizza un nuovo compilatore DEX chiamato D8. La compilation DEX è il processo di trasformazione del bytecode .class in bytecode .dex per il runtime Android (o Dalvik per le versioni precedenti di Android). Rispetto al compilatore precedente, chiamato DX, D8 compila più velocemente e genera file DEX più piccoli, pur avendo le stesse prestazioni o migliori in fase di esecuzione dell'app.

D8 non dovrebbe cambiare il flusso di lavoro quotidiano di sviluppo delle app. Tuttavia, se riscontri problemi relativi al nuovo compilatore, segnala un bug. Puoi disattivare temporaneamente D8 e utilizzare DX includendo quanto segue nel file gradle.properties del progetto:

      android.enableD8=false
    

Per i progetti che utilizzano le funzionalità del linguaggio Java 8, la desugaring incrementale è abilitata per impostazione predefinita. Puoi disattivarlo specificando quanto segue nel file gradle.properties del progetto:

      android.enableIncrementalDesugaring=false.
    

Utenti della versione di anteprima: se utilizzi già una versione di anteprima di D8, tieni presente che ora viene compilato in base alle librerie incluse negli strumenti di compilazione dell'SDK, non nel JDK. Pertanto, se accedi ad API esistenti nel JDK, ma non nelle librerie degli strumenti di compilazione dell'SDK, viene visualizzato un errore di compilazione.

Modifiche al comportamento

  • Quando crei più APK ognuno con un ABI diverso, per impostazione predefinita non vengono più generati APK per i seguenti ABI: mips, mips64 e armeabi.

    Se vuoi creare APK che hanno come target questi ABI, devi utilizzare NDK r16b o versioni precedenti e specificare gli ABI nel file build.gradle, come mostrato di seguito:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • La cache compilazione del plug-in Android ora esegue l'espulsione delle voci della cache più vecchie di 30 giorni.

  • Il passaggio di "auto" a resConfig non seleziona più automaticamente le risorse stringa da includere nel pacchetto APK. Se continui a utilizzare "auto", il plug-in pacchettizza tutte le risorse di stringa fornite dalla tua app e dalle sue dipendenze. Pertanto, devi invece specificare ogni lingua che vuoi che il plug-in inglobi nel tuo APK.

  • Poiché i moduli locali non possono dipendere dall'APK di test dell'app, l'aggiunta di dipendenze ai test con strumenti utilizzando la configurazione androidTestApi, anziché androidTestImplementation, fa sì che Gradle emetta il seguente avviso:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

Correzioni

  • Risolve un problema per cui Android Studio non riconosce correttamente le dipendenze nelle build composite.
  • È stato risolto un problema per cui si verifica un errore di sincronizzazione del progetto durante il caricamento del plug-in Android più volte in una singola build, ad esempio quando più progetti secondari includono ciascuno il plug-in Android nel classpath del buildscript.