Плагин Android Gradle 2.2.0 (сентябрь 2016 г.)

Зависимости:
Минимальная версия Версия по умолчанию Примечания
Gradle 2.14.1 2.14.1 Подробнее о том, как обновить Gradle…
Инструменты сборки SDK 23.0.2 23.0.2 Установите или настройте инструменты сборки SDK.
Новинка!
  • Используется Gradle 2.14.1, в котором улучшена производительность, добавлены новые функции и устранена уязвимость, позволяющая повысить привилегии при использовании демона Gradle. Подробнее см. примечания к выпуску Gradle.
  • С помощью externalNativeBuild {} DSL Gradle теперь позволяет связывать источники C/C++ и компилировать библиотеки C/C++ с помощью CMake или ndk-build. После сборки библиотек C/C++ Gradle упаковывает их в APK-файл. Подробнее о том, как использовать CMake и ndk-build с Gradle, можно узнать в статье Добавление кода на C и C++ в проект.
  • Теперь при запуске сборки из командной строки Gradle пытается автоматически скачать все отсутствующие компоненты SDK или обновления, от которых зависит ваш проект. Подробнее об автоматической загрузке отсутствующих пакетов с помощью Gradle…
  • Новая экспериментальная функция кеширования позволяет Gradle ускорять сборку, предварительно выполняя dex-преобразование, сохраняя и повторно используя полученные версии библиотек. Подробнее об использовании этой экспериментальной функции можно узнать из руководства по кешу сборки.
  • Повышена производительность сборки за счет использования нового конвейера упаковки по умолчанию, который выполняет сжатие, подписание и выравнивание по границе в рамках одной задачи. Вы можете вернуться к использованию старых инструментов упаковки, добавив android.useOldPackaging=true в файл gradle.properties. При использовании нового инструмента упаковки задача zipalignDebug недоступна. Однако вы можете создать его самостоятельно, вызвав метод createZipAlignTask(String taskName, File inputFile, File outputFile).
  • Для подписи APK теперь используется схема подписания APK версии 2 в дополнение к стандартной подписи JAR. Все платформы Android принимают полученные APK-файлы. Любые изменения в этих APK-файлах после подписания делают недействительными их подписи версии 2 и не позволяют установить их на устройство. Чтобы отключить эту функцию, добавьте в файл build.gradle на уровне модуля следующий код:

    Яркий

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • При сборке с поддержкой нескольких файлов DEX теперь можно использовать правила ProGuard, чтобы определить, какие классы Gradle должен скомпилировать в основной файл DEX приложения. Поскольку при запуске приложения система Android сначала загружает основной DEX-файл, вы можете задать приоритет для определенных классов, скомпилировав их в основной DEX-файл. Создав файл конфигурации ProGuard специально для основного файла DEX, передайте путь к нему в Gradle с помощью buildTypes.multiDexKeepProguard. Использование этого DSL отличается от использования buildTypes.proguardFiles, которое предоставляет общие правила ProGuard для вашего приложения и не указывает классы для основного файла DEX.
  • Добавлена поддержка флага android:extractNativeLibs, который позволяет уменьшить размер приложения при установке на устройство. Если вы зададите для этого флага значение false в элементе <application> манифеста приложения, Gradle упакует в APK-файл несжатые и выровненные версии библиотек C/C++. Это предотвращает копирование библиотек C/C++ из APK в файловую систему устройства во время установки и позволяет уменьшить размер дельта-обновлений приложения.PackageManager
  • Теперь для вкусов товаров можно указывать атрибуты "вкус" versionNameSuffix и "вкус" applicationIdSuffix. (ошибка 59614)
Изменения:
  • getDefaultProguardFile теперь возвращает файлы ProGuard по умолчанию, которые предоставляет плагин Android для Gradle, и больше не использует файлы из Android SDK.
  • Улучшения в компиляторе Jack:
    • Теперь Jack поддерживает покрытие тестов Jacoco при установке значения testCoverageEnabled в true.
    • Улучшена поддержка процессоров аннотаций. Аннотации, указанные в classpath, например в зависимостях compile, автоматически применяются к сборке. Вы также можете указать процессор аннотаций в сборке и передать аргументы с помощью DSL javaCompileOptions.annotationProcessorOptions {} в файле build.gradle на уровне модуля:

      Яркий

      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"))
            }
          }
        }
      }
          

      Если вы хотите применить процессор аннотаций во время компиляции, но не включать его в APK, используйте область действия зависимости annotationProcessor:

      Яркий

      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
      }
          
    • Чтобы посмотреть список параметров, которые можно задать, выполните в командной строке следующую команду:

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

    • По умолчанию, если размер кучи демона Gradle составляет не менее 1,5 ГБ, Jack выполняется в том же процессе, что и Gradle. Чтобы изменить размер кучи демона, добавьте в файл gradle.properties следующий код:

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