Настройте модуль приложения

На этой странице описаны полезные настройки приложения в файле 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.gradlecom.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 .