Как applicationId и plugin id влияют на сборку и публикацию Android‑приложения

ApplicationId — уникальный идентификатор приложения (например, com.example.app), который используется для публикации и установки; plugin id — идентификатор Gradle‑плагина (например, com.android.application или org.jetbrains.kotlin.android), управляющий поведением сборки. Ниже — как и где их задать и быстро проверить.

Где задавать и как выглядит applicationId

В модуле app (build.gradle или build.gradle.kts) задавайте applicationId в блоке defaultConfig. Примеры:

Groovy:

android {
    defaultConfig {
        applicationId "com.mycompany.coolapp"
        minSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
}

Kotlin DSL:

android {
    defaultConfig {
        applicationId = "com.mycompany.coolapp"
        minSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
}

Полезные приёмы:

  • Для отладочных сборок используйте applicationIdSuffix:
buildTypes {
    debug {
        applicationIdSuffix ".debug" // com.mycompany.coolapp.debug
    }
}
  • Не меняйте applicationId у релизной версии без намеренного создания нового приложения в магазине — это создаст отдельный аккаунт приложения с новой историей отзывов и установок.

Где задавать и как выглядит plugin id

Plugin id указывается в разделе plugins или в корневом build.gradle / settings.gradle(.kts). Примеры:

Groovy (модульный build.gradle):

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

Kotlin DSL (корень с version catalog):

// settings.gradle.kts / gradle/libs.versions.toml
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }

// В модуле
plugins {
    alias(libs.plugins.androidApplication)
}

Советы:

  • com.android.application — для APK/AAB приложений; com.android.library — для AAR‑библиотек.
  • Если плагин не найден, проверьте репозитории (google(), mavenCentral()) и корректную версию AGP/Kotlin.

Централизуйте версии плагинов через Version Catalog (libs.versions.toml) — это упрощает обновления AGP и Kotlin.

Как быстро проверить applicationId и plugin id в проекте и на устройстве

ApplicationId:

  • В Android Studio: откройте build.gradle модуля — поле applicationId в defaultConfig. Для скомпилированного APK: Build > Analyze APK — в метаданных будет Application ID.
  • Через Gradle: ./gradlew :app:printVariantProperties (или сборка с --info) — смотрите строки с applicationId; также ./gradlew installDebug выведет, какой package устанавливается.
  • На устройстве: adb shell pm list packages | grep <part_of_id> или Settings > Приложения (зависит от устройства).

Plugin id:

  • В build.gradle(.kts) модуля в секции plugins. В корневом build.gradle или settings.gradle(.kts) — при централизованном описании.
  • ./gradlew tasks --all покажет задачи; по наборам задач можно понять, подключён ли android‑плагин (assembleDebug, assembleRelease и др.).

Частые ошибки

  • Дублирование applicationId с чужим приложением — при публикации получите ошибку; измените на уникальный (например, добавить домен или суффикс).
  • Меняете package в AndroidManifest, но не applicationId — приложение в Play определяется applicationId, не package в коде.
  • Отсутствие репозиториев (google(), mavenCentral()) — плагин не загрузится, сборка упадёт с ошибкой "Plugin not found".
  • Несовместимость версий AGP и Gradle — проверяйте требования версий при обновлении.

FAQ

  • Нужно ли applicationId совпадать с package в коде? Нет. applicationId определяет идентичность в системе/магазине; package — namespace исходного кода. Можно оставить package прежним и явно задать applicationId.
  • Что делать, если хочу сменить applicationId после релиза? Это фактически новое приложение — перенос данных и отзывов не произойдёт автоматически. Планируйте миграцию и коммуникацию с пользователями.
  • Как узнать версию AGP и плагина Kotlin? В корневом build.gradle(.kts) или файле version catalog (libs.versions.toml) указаны версии; также Android Studio покажет их в Project Structure.

Настройка applicationId и plugin id занимает несколько минут, но предотвращает проблемы с публикацией и сборкой — задавайте их явно и держите версии плагинов централизованными.