Как подключить и использовать 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.