На этой странице описаны полезные настройки приложения в файле build.gradle.kts на уровне модуля. Помимо обзора важных свойств, заданных в файле build.gradle.kts, вы узнаете, как:
- Измените идентификатор приложения для разных конфигураций сборки.
- Безопасно настраивайте пространство имен независимо от идентификатора приложения.
Идентификатор приложения
У каждого приложения для Android есть уникальный идентификатор приложения, который выглядит как название пакета Java или Kotlin, например com.example.myapp. Этот идентификатор уникален для вашего приложения на устройстве и в Google Play.
Идентификатор приложения определяется свойством applicationId в файле build.gradle.kts модуля, как показано ниже. Замените значение applicationId (com.example.myapp) на идентификатор своего приложения:
Kotlin
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 будет считать последующие загрузки новым приложением.
- Явно укажите идентификатор приложения. Если идентификатор приложения не задан явно с помощью свойства
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 используется название пакета, которое вы выбрали при создании проекта.
Kotlin
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 и applicationId Gradle, инструменты сборки скопируют идентификатор приложения в итоговый файл манифеста приложения в конце сборки.
Поэтому если вы проверите файл AndroidManifest.xml после сборки, то увидите, что атрибуту package присвоен идентификатор приложения. Google Play и платформа Android идентифицируют приложение по атрибуту package в объединенном манифесте.
Изменение пространства имен для тестирования
Пространство имен по умолчанию для наборов исходных файлов androidTest и test – это основное пространство имен с добавлением .test в конце. Например, если свойство namespace в файле build.gradle имеет значение com.example.myapp, то для пространства имен тестирования по умолчанию задается значение com.example.myapp.test. Чтобы изменить пространство имен для тестирования, используйте свойство testNamespace, как показано в следующем фрагменте кода:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Яркий
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Подробнее о тестировании приложений для Android…