Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Android Gradle Plugin 2.2.0 (сентябрь 2016 г.)
- Зависимости:
| Минимальная версия | Версия по умолчанию | Примечания |
---|
Грейдл | 2.14.1 | 2.14.1 | Более подробную информацию см. в разделе Обновление Gradle . |
Инструменты сборки SDK | 23.0.2 | 23.0.2 | Установите или настройте инструменты сборки SDK. |
- Новый:
- Использует Gradle 2.14.1, который включает в себя улучшенную производительность и новые функции, а также устраняет уязвимость безопасности, допускающую локальное повышение привилегий при использовании демона Gradle. Подробнее см. в заметках о выпуске Gradle .
- Используя внешний DSL-пакет
externalNativeBuild {}
, Gradle теперь позволяет вам подключаться к исходным кодам нативных приложений и компилировать нативные библиотеки с помощью CMake или ndk-build. После сборки нативных библиотек Gradle упаковывает их в ваш APK-файл. Чтобы узнать больше об использовании CMake и ndk-build с Gradle, прочтите статью «Добавление кода C и C++ в ваш проект» . - При запуске сборки из командной строки Gradle теперь пытается автоматически загрузить все отсутствующие компоненты SDK или обновления, от которых зависит ваш проект. Подробнее см. в статье «Автоматическая загрузка отсутствующих пакетов с помощью Gradle» .
- Новая экспериментальная функция кэширования позволяет Gradle ускорить сборку за счёт предексирования, хранения и повторного использования предексированных версий ваших библиотек. Подробнее об использовании этой экспериментальной функции см. в руководстве по кэшированию сборки .
- Повышает производительность сборки за счёт внедрения нового конвейера упаковки по умолчанию, который выполняет сжатие, подписание и выравнивание в рамках одной задачи. Вы можете вернуться к использованию старых инструментов упаковки, добавив
android.useOldPackaging=true
в файл gradle.properties
. При использовании нового инструмента упаковки задача zipalignDebug
недоступна. Однако вы можете создать её самостоятельно, вызвав метод createZipAlignTask(String taskName, File inputFile, File outputFile)
. - Подпись APK теперь использует схему подписи APK v2 в дополнение к традиционной подписи JAR. Все платформы Android принимают полученные APK. Любое изменение этих APK после подписания делает их подписи v2 недействительными и предотвращает установку на устройство. Чтобы отключить эту функцию, добавьте следующее в файл
build.gradle
на уровне модуля: Круто
android {
...
signingConfigs {
config {
...
v2SigningEnabled false
}
}
}
Котлин
android {
...
signingConfigs {
create("config") {
...
v2SigningEnabled = false
}
}
}
- Для сборок Multidex теперь можно использовать правила ProGuard, чтобы определить, какие классы Gradle следует скомпилировать в основной DEX-файл вашего приложения. Поскольку система Android загружает основной DEX-файл первым при запуске приложения, вы можете задать приоритет определённых классов при запуске, скомпилировав их в основной DEX-файл. После создания файла конфигурации ProGuard специально для основного DEX-файла передайте путь к нему в Gradle с помощью
buildTypes.multiDexKeepProguard
. Использование этого DSL отличается от использования buildTypes.proguardFiles
, который задаёт общие правила ProGuard для вашего приложения и не определяет классы для основного DEX-файла. - Добавляет поддержку флага
android:extractNativeLibs
, который может уменьшить размер вашего приложения при установке на устройство. Если установить этот флаг в значение false
в элементе <application>
манифеста приложения, Gradle упаковывает несжатые и выровненные версии ваших нативных библиотек вместе с вашим APK. Это предотвращает копирование нативных библиотек из 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' ]
}
}
}
}
Котлин
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
}
Котлин
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
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-27 UTC.
[null,null,["Последнее обновление: 2025-08-27 UTC."],[],[],null,["\u003cbr /\u003e\n\nAndroid Gradle Plugin 2.2.0 (September 2016)\n\nDependencies:\nNew:\n:\n - Uses Gradle 2.14.1, which includes performance improvements and new features, and fixes a security vulnerability that allows local privilege escalation when using the Gradle daemon. For more details, see the [Gradle release notes](https://docs.gradle.org/2.14.1/release-notes).\n - Using the [`externalNativeBuild {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ExternalNativeBuild.html) DSL, Gradle now lets you link to your native sources and compile native libraries using CMake or ndk-build. After building your native libraries, Gradle packages them into your APK. To learn more about using CMake and ndk-build with Gradle, read [Add C and C++ Code to Your\n Project](/studio/projects/add-native-code).\n - When you [run a\n build from the command line](/studio/build/building-cmdline), Gradle now attempts to auto-download any missing SDK components or updates that your project depends on. To learn more, read [Auto-download\n missing packages with Gradle](/studio/intro/update#download-with-gradle).\n - A new experimental caching feature lets Gradle speed up build times by pre-dexing, storing, and reusing the pre-dexed versions of your libraries. To learn more about using this experimental feature, read the [Build\n Cache](/studio/build/build-cache) guide.\n - Improves build performance by adopting a new default packaging pipeline which handles zipping, signing, and [zipaligning](/studio/command-line/zipalign) in one task. You can revert to using the older packaging tools by adding `android.useOldPackaging=true` to your `gradle.properties` file. While using the new packaging tool, the `zipalignDebug` task is not available. However, you can create one yourself by calling the `createZipAlignTask(String taskName, File inputFile, File\n outputFile)` method.\n - APK signing now uses [APK Signature Scheme\n v2](/about/versions/nougat/android-7.0#apk_signature_v2) in addition to traditional JAR signing. All Android platforms accept the resulting APKs. Any modification to these APKs after signing invalidates their v2 signatures and prevents installation on a device. To disable this feature, add the following to your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n signingConfigs {\n config {\n ...\n v2SigningEnabled false\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n signingConfigs {\n create(\"config\") {\n ...\n v2SigningEnabled = false\n }\n }\n }\n \n ```\n - For multidex builds, you can now use ProGuard rules to determine which classes Gradle should compile into your app's *main* DEX file. Because the Android system loads the main DEX file first when starting your app, you can prioritize certain classes at startup by compiling them into the main DEX file. After you create a ProGuard configuration file specifically for your main DEX file, pass the configuration file's path to Gradle using [buildTypes.multiDexKeepProguard](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:multiDexKeepProguard). Using this DSL is different from using [`buildTypes.proguardFiles`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:proguardFiles(java.lang.Object[])), which provides general ProGuard rules for your app and does not specify classes for the main DEX file.\n - Adds support for the `android:extractNativeLibs` flag, which can reduce the size of your app when you install it on a device. When you set this flag to `false` in the [`\u003capplication\u003e`](/guide/topics/manifest/application-element) element of your app manifest, Gradle packages uncompressed and aligned versions of your native libraries with your APK. This prevents [`PackageManager`](/reference/android/content/pm/PackageManager) from copying out your native libraries from the APK to the device's file system during installation and has the added benefit of making delta updates of your app smaller.\n - You can now specify [`versionNameSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:versionNameSuffix) and [`applicationIdSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:applicationIdSuffix) for product flavors. ([Issue 59614](http://b.android.com/59614))\n\n\nChanges:\n:\n - `getDefaultProguardFile` now returns the default ProGuard files that Android plugin for Gradle provides and no longer uses the ones in the Android SDK.\n - Improved Jack compiler performance and features:\n - Jack now supports Jacoco test coverage when setting [testCoverageEnabled](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:testCoverageEnabled) to `true`.\n - Improved support for annotation processors. Annotation processors on your classpath, such as any `compile` dependencies, are automatically applied to your build. You can also specify an annotation processor in your build and pass arguments by using the [`javaCompileOptions.annotationProcessorOptions {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.AnnotationProcessorOptions.html) DSL in your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className 'com.example.MyProcessor'\n // Arguments are optional.\n arguments = [ foo : 'bar' ]\n }\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className = \"com.example.MyProcessor\"\n // Arguments are optional.\n arguments(mapOf(foo to \"bar\"))\n }\n }\n }\n }\n \n ```\n\n\n If you want to apply an annotation processor at compile\n time but not include it in your APK, use the\n `annotationProcessor` dependency scope: \n\n Groovy \n\n ```groovy\n dependencies {\n compile 'com.google.dagger:dagger:2.0'\n annotationProcessor 'com.google.dagger:dagger-compiler:2.0'\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n dependencies {\n implementation(\"com.google.dagger:dagger:2.0\")\n annotationProcessor(\"com.google.dagger:dagger-compiler:2.0\")\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n - For a list of parameters you can set, run the following from the command line: \n\n ```\n java -jar /build-tools/jack.jar --help-properties\n ```\n - By default, if the Gradle daemon's heap size is at least 1.5 GB, Jack now runs in the same process as Gradle. To adjust the daemon heap size, add the following to your `gradle.properties` file:\n\n \u003cbr /\u003e\n\n ```\n # This sets the daemon heap size to 1.5GB.\n org.gradle.jvmargs=-Xmx1536M\n ```\n\n \u003cbr /\u003e\n\n\n\u003cbr /\u003e"]]