На этой странице описаны полезные настройки приложения в файле build.gradle.kts
на уровне модуля. Помимо обзора важных свойств, установленных в файле build.gradle.kts
, вы узнаете, как:
- Измените идентификатор приложения для разных конфигураций сборки.
- Безопасно настройте пространство имен независимо от идентификатора приложения.
Установите идентификатор приложения
Каждое приложение Android имеет уникальный идентификатор приложения, который выглядит как имя пакета Java или Kotlin, например com.example.myapp . Этот идентификатор уникально идентифицирует ваше приложение на устройстве и в магазине Google Play.
Идентификатор вашего приложения определяется свойством applicationId
в файле build.gradle.kts
вашего модуля, как показано здесь. Обновите значение applicationId
, заменив com.example.myapp
идентификатором вашего приложения:
Котлин
android { defaultConfig { applicationId = "com.example.myapp" minSdk = 15 targetSdk = 24 versionCode = 1 versionName = "1.0" } ... }
классный
android { defaultConfig { applicationId "com.example.myapp" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ... }
Хотя идентификатор приложения выглядит как традиционное имя пакета Kotlin или Java, правила именования для идентификатора приложения немного более строгие:
- Он должен иметь как минимум два сегмента (одну или несколько точек).
- Каждый сегмент должен начинаться с буквы.
- Все символы должны быть буквенно-цифровыми или символами подчеркивания [a-zA-Z0-9_].
Когда вы создаете новый проект в Android Studio , applicationId
автоматически присваивается имя пакета, выбранное вами во время установки. С этого момента вы можете технически переключать эти два свойства независимо, но это не рекомендуется.
При настройке идентификатора приложения рекомендуется выполнить следующие действия:
- Сохраняйте идентификатор приложения таким же, как пространство имен. Различие между этими двумя свойствами может немного сбивать с толку, но если вы сохраните их одинаковыми, вам не о чем беспокоиться.
- Не меняйте идентификатор приложения после публикации приложения. Если вы измените его, Google Play Store будет считать последующую загрузку новым приложением.
- Явно определите идентификатор приложения. Если идентификатор приложения не определен явно с помощью свойства
applicationId
, он автоматически принимает то же значение, что и пространство имен. Это означает, что изменение пространства имен приводит к изменению идентификатора приложения, а это обычно не то, что вам нужно.
Изменение идентификатора приложения для тестирования
По умолчанию инструменты сборки применяют идентификатор приложения к APK -файлу тестового инструмента , используя идентификатор приложения для данного варианта сборки, добавленный с помощью .test
. Например, тестовый APK для варианта сборки com.example.myapp .free
имеет идентификатор приложения com.example.myapp .free.test
.
Хотя в этом нет необходимости, вы можете изменить идентификатор приложения, определив свойство testApplicationId
в блоке defaultConfig
или productFlavor
.
Установите пространство имен
Каждый модуль Android имеет пространство имен, которое используется в качестве имени пакета Kotlin или Java для созданных им классов R
и BuildConfig
.
Ваше пространство имен определяется свойством namespace
в файле build.gradle.kts
вашего модуля, как показано в следующем фрагменте кода. namespace
изначально установлено на имя пакета, которое вы выбираете при создании проекта .
Котлин
android { namespace = "com.example.myapp" ... }
классный
android { namespace "com.example.myapp" ... }
При сборке вашего приложения в окончательный пакет приложения (APK) инструменты сборки Android используют это пространство имен в качестве пространства имен для сгенерированного вашим приложением класса R
, который используется для доступа к ресурсам вашего приложения . Например, в предыдущем файле сборки класс R
создается по адресу com.example.myapp .R
.
Имя, которое вы задаете для namespace
файла build.gradle.kts
, всегда должно совпадать с именем базового пакета вашего проекта, в котором вы храните свои действия и другой код приложения. В вашем проекте могут быть и другие подпакеты, но эти файлы должны импортировать класс R
, используя пространство имен из свойства namespace
.
Для упрощения рабочего процесса сохраните пространство имен таким же, как идентификатор приложения, как это происходит по умолчанию.
Изменить пространство имен
В большинстве случаев вам следует оставить пространство имен и идентификатор приложения такими же, как они есть по умолчанию. Однако в какой-то момент вам может потребоваться изменить пространство имен, если вы реорганизуете свой код или чтобы избежать конфликтов пространств имен.
В этих случаях измените пространство имен, обновив свойство namespace
в файле build.gradle.kts
вашего модуля независимо от идентификатора приложения. Прежде чем сделать это, убедитесь, что идентификатор вашего приложения определен явно, чтобы изменение пространства имен не привело к изменению идентификатора приложения. Дополнительные сведения о том, как пространство имен может повлиять на идентификатор приложения, см. в разделе Установка идентификатора приложения .
Если у вас разные имена для namespace
и Gradle applicationId
, инструменты сборки копируют идентификатор приложения в окончательный файл манифеста вашего приложения в конце сборки. Поэтому, если вы проверите файл AndroidManifest.xml
после сборки, атрибуту package
будет присвоен идентификатор приложения. Атрибут package
объединенного манифеста — это то, где Google Play Store и платформа Android фактически ищут ваше приложение.
Измените пространство имен для тестирования
Пространством имен по умолчанию для наборов источников androidTest
и test
является основное пространство имен с добавленным в конце расширением .test
. Например, если свойство namespace
в файле build.gradle
— com.example.myapp
, пространство имен тестирования по умолчанию установлено на com.example.myapp .test
. Чтобы изменить пространство имен для тестирования, используйте свойство testNamespace
, как показано в следующем фрагменте кода:
Котлин
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
классный
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Внимание: не устанавливайте testNamespace
и namespace
одно и то же значение, иначе возникнут конфликты пространств имен.
Дополнительную информацию о тестировании см. в разделе Тестирование приложений на Android .