Как 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 занимает несколько минут, но предотвращает проблемы с публикацией и сборкой — задавайте их явно и держите версии плагинов централизованными.