Как подключить и использовать com.android.application в Android‑модуле
Плагин com.android.application — это Android Gradle Plugin (AGP), который превращает модуль в приложение и отвечает за сборку APK/AAB, ресурсы, манифест, подпись и связанные Gradle‑таски. Подключите его только в модуле приложения (app), через plugins {} в модульном build.gradle(.kts) — и убедитесь, что версия AGP доступна через settings.gradle (pluginManagement) или buildscript.
Что делает плагин com.android.application
- Регистрирует задачи assemble, bundle, install и тестовые задачи.
- Добавляет DSL android { … } для compileSdk, defaultConfig, buildTypes, signingConfigs, productFlavors.
- Интегрирует Android SDK, aapt, dexer, adb и работу с ресурсами/манифестом.
- Определяет артефакт как APK/AAB (а не AAR, как в библиотеке).
Если убрать плагин, блок android {} не будет распознан, и сборки приложений исчезнут — останутся только общие Java/Kotlin‑таски.
Как правильно подключить (Groovy и Kotlin DSL)
Различие важно: в современных проектах используйте plugins {} и указывайте id без версии в модуле; версию AGP задавайте централизованно.
Пример для модуля (Groovy, app/build.gradle):
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android' // при необходимости
}
android {
namespace 'com.example.app'
compileSdk 34
defaultConfig {
applicationId "com.example.app"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
Пример для модуля (Kotlin DSL, app/build.gradle.kts):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.app"
compileSdk = 34
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
Если у вас build.gradle.kts — используйте id("...") и Kotlin‑свойства (isMinifyEnabled и т.п.). В Groovy — id '...'.
Где указывать версию Android Gradle Plugin и совместимость
Версия AGP указывается не в модульном plugins {}, а централизованно.
Старый (устаревший) способ — classpath в root build.gradle:
buildscript {
repositories { google(); mavenCentral() }
dependencies { classpath "com.android.tools.build:gradle:7.4.2" }
}
Современный подход — settings.gradle(.kts) + pluginManagement или version catalogs / libs.versions.toml:
pluginManagement {
repositories { google(); mavenCentral(); gradlePluginPortal() }
// версии можно задавать здесь или в version catalog
}
Важно: AGP и Gradle должны быть совместимы (например, AGP 8.x → Gradle 8.x). Обновляйте парно и проверяйте матрицу совместимости.
Ошибка "Plugin with id 'com.android.application' not found" чаще всего означает, что в settings.gradle не подключены репозитории google()/mavenCentral() или не настроено pluginManagement.
Частые ошибки
- Подключили id("com.android.application") в корневом build.gradle — должно быть только в модуле приложения.
- Смешивание старого buildscript/apply plugin и нового plugins {} — приводит к конфликтам версий.
- Использование com.android.application в библиотечном модуле — модуль не сможет публиковаться как AAR.
- Несовместимые версии Gradle и AGP — сборка падает с ошибками плагина/классов.
Проверочный чеклист:
- Модуль действительно является приложением (есть applicationId).
- plugins { id("com.android.application") } в app/build.gradle(.kts) только один раз.
- В settings.gradle настроен pluginManagement/repositories.
- Совместимость AGP ↔ Gradle соблюдена.
FAQ
- Нужно ли указывать версию плагина в модуле? Нет — версию AGP задают централизованно (settings.gradle или version catalog).
- Когда использовать com.android.library? Для модулей‑библиотек, когда вы хотите AAR, а не APK/AAB.
- Что делать при ошибке "Cannot find method android()"? Убедитесь, что плагин подключён в том же файле и что вы в модуле, а не в корне.
Не игнорируйте предупреждения Android Studio о устаревших версиях AGP. Обновляйте постепенно и фиксируйте рабочие комбинации в VCS.
Этот чеклист и примеры можно применить сразу: откройте app/build.gradle(.kts), проверьте место подключения плагина, убедитесь в наличии applicationId и корректной настройке репозиториев в settings.gradle.