Plug-in do Android para Gradle 2.2.0 (setembro de 2016)

Dependências:
Novidade:
  • Usa o Gradle 2.14.1, que inclui melhorias de desempenho e novos recursos, além de corrigir uma vulnerabilidade de segurança que permite o escalonamento de privilégios locais ao usar o daemon do Gradle. Para ver mais detalhes, consulte as notas da versão do Gradle (em inglês).
  • Com o uso da DSL externalNativeBuild {}, o Gradle agora permite a vinculação a origens nativas e a compilação de bibliotecas nativas usando o CMake ou o ndk-build. Depois de criar suas bibliotecas nativas, o Gradle as empacota no seu APK. Para saber mais sobre como usar o CMake e o ndk-build com o Gradle, leia Adicionar código C e C++ ao seu projeto.
  • Quando você executa um build na linha de comando, o Gradle agora tenta fazer o download automático de todos os componentes ou atualizações do SDK ausentes de que seu projeto depende. Para saber mais, leia Download automático de pacotes ausentes com o Gradle.
  • Um novo recurso experimental de armazenamento em cache permite que o Gradle acelere o tempo de build ao fazer a pré-dexação, o armazenamento e a reutilização das versões pré-dexadas das bibliotecas. Para saber mais sobre como usar esse recurso experimental, leia o guia Cache de build.
  • Melhora o desempenho do build adotando um novo pipeline de empacotamento padrão que cuida da compactação, assinatura e zipaligning em uma tarefa. Você pode voltar a usar as ferramentas de empacotamento anteriores adicionando android.useOldPackaging=true ao arquivo gradle.properties. Ao usar a nova ferramenta de empacotamento, a tarefa zipalignDebug não ficará disponível. No entanto, você pode criar uma chamando o método createZipAlignTask(String taskName, File inputFile, File outputFile).
  • A assinatura do APK agora usa o Esquema de assinatura de APK v2, além da assinatura JAR tradicional. Todas as plataformas Android aceitam os APKs resultantes. Qualquer modificação nesses APKs, após a assinatura, invalida as assinaturas v2 e impede a instalação em dispositivos. Para desativar esse recurso, adicione o seguinte ao seu arquivo build.gradle no módulo:

    Groovy

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • Para builds multidex, agora você pode usar as regras do ProGuard para determinar quais classes o Gradle precisa compilar no arquivo DEX principal do app. Como o sistema Android carrega primeiro o arquivo DEX principal ao iniciar seu app, você pode priorizar determinadas classes na inicialização, compilando-as no arquivo DEX principal. Depois de criar um arquivo de configuração do ProGuard especificamente para seu arquivo DEX principal, transmita o caminho do arquivo de configuração para o Gradle usando buildTypes.multiDexKeepProguard. O uso dessa DSL é diferente do uso de buildTypes.proguardFiles (em inglês), que fornece regras gerais do ProGuard para o app e não especifica classes para o arquivo DEX principal.
  • Foi adicionado suporte à flag android:extractNativeLibs, que pode reduzir o tamanho do app quando você o instala em um dispositivo. Quando você configura essa flag como false no elemento <application> do manifesto do app, o Gradle empacota as versões descompactadas e alinhadas das suas bibliotecas nativas com seu APK. Isso impede que o PackageManager copie as bibliotecas nativas do APK para o sistema de arquivos do dispositivo durante a instalação, além de oferecer o benefício de diminuir as atualizações delta do seu app.
  • Agora você pode especificar versionNameSuffix e applicationIdSuffix para variações de produto (problema 59614).
Mudanças:
  • getDefaultProguardFile agora retorna os arquivos do ProGuard padrão fornecidos pelo Plug-in do Android para Gradle e não usa mais os que estão no SDK do Android.
  • Melhoria no desempenho e nos recursos do compilador Jack:
    • Agora, o Jack oferece suporte à cobertura de teste Jacoco quando testCoverageEnabled é configurado como true
    • O suporte a processadores de anotações foi melhorado. Os processadores de anotações no seu caminho de classe, como as dependências compile, são aplicados automaticamente à build. Você também pode especificar um processador de anotação no seu build e transmitir argumentos usando a DSL javaCompileOptions.annotationProcessorOptions {} (em inglês) no arquivo build.gradle no módulo:

      Groovy

      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 você quiser aplicar um processador de anotações no tempo de compilação, sem o incluir no APK, use o escopo de dependência annotationProcessor:

      Groovy

      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
      }
          
    • Para ver uma lista de parâmetros que podem ser configurados, execute o seguinte na linha de comando:

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

    • Por padrão, se o tamanho de heap do daemon Gradle for de pelo menos 1,5 GB, o Jack vai ser executado no mesmo processo que o Gradle. Para ajustar o tamanho de heap do daemon, adicione o seguinte ao seu arquivo gradle.properties:

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