Plug-in Android per Gradle 2.2.0 (settembre 2016)

Dipendenze:
Versione minima Versione predefinita Note
Gradle 2.14.1 2.14.1 Per saperne di più, consulta la sezione Aggiornare Gradle.
Strumenti di build dell'SDK 23.0.2 23.0.2 Installa o configura SDK Build Tools.
Novità:
  • Utilizzo di Gradle 2.14.1, che include miglioramenti delle prestazioni e nuove funzionalità e corregge una vulnerabilità di sicurezza che consente l'escalation dei privilegi locali quando si utilizza il daemon Gradle. Per maggiori dettagli, consulta le note di rilascio di Gradle.
  • Utilizzando la DSL externalNativeBuild {}, Gradle ora ti consente di collegarti alle origini native e compilare le librerie native utilizzando CMake o ndk-build. Dopo aver creato le librerie native, Gradle le inserisce nel pacchetto APK. Per saperne di più sull'utilizzo di CMake e ndk-build con Gradle, consulta Aggiungere codice C e C++ al progetto.
  • Quando esegui una build dalla riga di comando, Gradle ora tenta di scaricare automaticamente tutti i componenti o gli aggiornamenti dell'SDK mancanti da cui dipende il tuo progetto. Per saperne di più, consulta Scaricare automaticamente i pacchetti mancanti con Gradle.
  • Una nuova funzionalità di memorizzazione nella cache sperimentale consente a Gradle di velocizzare i tempi di build eseguendo il pre-dexing, l'archiviazione e il riutilizzo delle versioni pre-dexed delle librerie. Per saperne di più sull'utilizzo di questa funzionalità sperimentale, consulta la guida alla cache di build.
  • Miglioramento delle prestazioni di build grazie all'adozione di una nuova pipeline di packaging predefinita che gestisce la compressione, la firma e l'allineamento di zipalign in un'unica attività. Puoi ripristinare l'utilizzo degli strumenti di packaging precedenti aggiungendo android.useOldPackaging=true al file gradle.properties. Quando utilizzi il nuovo strumento di packaging, l'attività zipalignDebug non è disponibile. Tuttavia, puoi crearne una chiamando il createZipAlignTask(String taskName, File inputFile, File outputFile) metodo.
  • La firma dell'APK ora utilizza lo schema di firma dell'APK v2 oltre alla firma JAR tradizionale. Tutte le piattaforme Android accettano gli APK risultanti. Qualsiasi modifica a questi APK dopo la firma invalida le firme v2 e impedisce l'installazione su un dispositivo. Per disattivare questa funzionalità, aggiungi quanto segue al file build.gradle a livello di modulo:

    Alla moda

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • Per le build multidex, ora puoi utilizzare le regole ProGuard per determinare quali classi che Gradle deve compilare nel file DEX principale dell'app. Poiché il sistema Android carica prima il file DEX principale all'avvio dell'app, puoi dare la priorità a determinate classi all'avvio compilandole nel file DEX principale. Dopo aver creato un file di configurazione ProGuard specifico per il tuo file DEX principale, passa il percorso del file di configurazione a Gradle utilizzando buildTypes.multiDexKeepProguard. L'utilizzo di questa DSL è diverso dall'utilizzo buildTypes.proguardFiles, che fornisce regole ProGuard generali per l'app e non specifica le classi per il file DEX principale.
  • Aggiunta del supporto per il flag android:extractNativeLibs, che può ridurre le dimensioni dell'app quando la installi su un dispositivo. Quando imposti questo flag su false nell'elemento <application> del file manifest dell'app, Gradle inserisce nel pacchetto APK le versioni non compresse e allineate delle librerie native. In questo modo, PackageManager non copia le librerie native dall'APK al file system del dispositivo durante l'installazione e, inoltre, gli aggiornamenti delta dell'app sono più piccoli.
  • Ora puoi specificare versionNameSuffix e applicationIdSuffix per le varianti di prodotto. (Problema 59614)
Modifiche:
  • getDefaultProguardFile ora restituisce i file ProGuard predefiniti forniti dal plug-in Android per Gradle e non utilizza più quelli nell'SDK Android.
  • Miglioramento delle prestazioni e delle funzionalità del compilatore Jack:
    • Jack ora supporta la copertura dei test Jacoco quando imposti testCoverageEnabled su true.
    • Miglioramento del supporto per i processori di annotazione. I processori di annotazione nel classpath, ad esempio le dipendenze compile, vengono applicati automaticamente alla build. Puoi anche specificare un processore di annotazione nella build e passare gli argomenti utilizzando la javaCompileOptions.annotationProcessorOptions {} DSL nel file build.gradle a livello di modulo:

      Alla moda

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      Se vuoi applicare un processore di annotazione in fase di compilazione, ma non includerlo nell'APK, utilizza l'ambito della annotationProcessor dipendenza:

      Alla moda

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • Per un elenco dei parametri che puoi impostare, esegui il seguente comando dalla riga di comando:

      java -jar /build-tools/jack.jar --help-properties
      

    • Per impostazione predefinita, se le dimensioni dell'heap del daemon Gradle sono di almeno 1,5 GB, Jack ora viene eseguito nello stesso processo di Gradle. Per regolare le dimensioni dell'heap del daemon, aggiungi quanto segue al file gradle.properties:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M