Java android manifest xml
Каждое приложение содержит файл манифеста AndroidManifest.xml . Данный файл определяет важную информацию о приложении — название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д. Данный файл можно найти в проекте в папке manifests :
Файл манифеста может выглядеть так:
Элементом корневого уровня является узел manifest . В данном случае только определяется пакет приложения — package=»com.example.viewapp» . Собственно это определение файла манифеста по умолчанию. В каждом конкретном случае может отличаться пакет приложения, остальное содержимое при создании проекта с пустой activity будет аналогичным.
Большинство настроек уровня приложения определяются элементом application . Ряд настроек задаются с помощью атрибутов. По умолчанию применяются следующие атрибуты:
- android:allowBackup указывает, будет ли для приложения создаваться резервная копия. Значение android:allowBackup=»true» разрешает создание резервной копии.
- android:icon устанавливает иконку приложения. При значении android:icon=»@mipmap/ic_launcher» иконка приложения берется из каталога res/mipmap
- android:roundIcon устанавливает круглую иконку приложения. Также берется из каталога res/mipmap
- android:label задает название приложение, которое будет отображаться на мобильном устройстве в списке приложений и в заголовке. В данном случае оно хранится в строковых ресурсах — android:label=»@string/app_name» .
- android:supportsRtl указывает, могут ли использоваться различные RTL API — специальные API для работы с правосторонней ориентацией текста (например, для таких языков как арабский или фарси).
- android:theme устанавливает тему приложения. Подробно темы будут рассмотрены далее, а пока достаточно знать, что тема определяет общий стиль приложения. Значение @style/Theme.ViewApp» берет тему «Theme.ViewApp» из каталога res/values/themes
Вложенные элементы activity определяют все используемые в приложении activity. В данном случае видно, что в приложении есть только одна activity — MainActivity.
Элемент intent-filter в MainActivity указывает, как данная activity будет использоваться. В частности, с помощью узла action android:name=»android.intent.action.MAIN» , что данная activity будет входной точкой в приложение и не должна получать какие-либо данные извне.
Элемент category android:name=»android.intent.category.LAUNCHER» указывает, что MainActivity будет представлять стартовый экран, который отображается при запуске приложения.
Файл манифеста может содержать множество элементов, которые имеют множество атрибутов. И все возможные элементы и их атрибуты можно найти в документации. Здесь же рассмотрим некоторые примеры использования.
Определение версии
С помощью атрибутов элемента manifest можно определить версию приложения и его кода:
Атрибут android:versionName указывает на номер версии, который будет отображаться пользователю и на которую будут ориентироваться пользователи при работе с приложением.
Тогда как атрибут android:versionCode представляет номер версии для внутреннего использования. Этот номер только определяет, что одна версия приложения более новая, чем какая-то другая с меньшим номером номером версии. Этот номер не отображается пользователям.
При желании мы также можем определить версию в ресурсах, а здесь ссылаться на ресурс.
Установка версии SDK
Для управления версией android sdk в файле манифеста определяется элемент . Он может использовать следующие атрибуты:
- minSdkVersion : минимальная поддерживаемая версия SDK
- targetSdkVersion : оптимальная версия
- maxSdkVersion : максимальная версия
Версия определяется номером API, например, Jelly Beans 4.1 имеет версию 16, а Android 11 имеет версию 30:
Установка разрешений
Иногда приложению требуются разрешения на доступ к определенным ресурсам, например, к списку контактов, камере и т.д. Чтобы приложение могло работать с тем же списком контактов, в файле манифесте необходимо установить соответствующие разрешения. Для установки разрешений применяется элемент :
Атрибут android:name устанавливает название разрешения: в данном случае на чтение списка контактов и использование камеры. Опционально можно установить максимальную версию sdk посредством атрибута android:maxSdkVersion , который принимает номер API.
Поддержка разных разрешений
Мир устройств Android очень сильно фрагментирован, здесь встречаются как гаджеты с небольшим экраном, так и большие широкоэкранные телевизоры. И бывают случаи, когда надо ограничить использование приложения для определенных разрешений экранов. Для этого в файле манифеста определяется элемент :
Данный элемент принимает четыре атрибута:
- android:largeScreens — экраны с диагональю от 4.5 до 10″
- android:normalScreens — экраны с диагональю от 3 до 4.5″
- android:smallScreens — экраны с диагональю меньше 3″
- android:xlargeScreens — экраны с диагональю больше 10″
Если атрибут имеет значение true , то приложение будет поддерживаться соответствующим размером экрана
Запрет на изменение ориентации
Приложение в зависимости от положения гаджета может находиться в альбомной и портретной ориентации. Не всегда это бывает удобно. Мы можем сделать, чтобы приложение вне зависимости от поворота гаджета использовало только одну ориентацию. Для этого в файле манифеста у требуемой activity надо установить атрибут android:screenOrientation . Например, запретим альбомную ориентацию:
Значение android:screenOrientation=»portrait» указывает, что данная activity будет находиться только в портретной ориентации. Если же надо установить только альбомную ориентацию, тогда надо использовать значение android:screenOrientation=»landscape»
Android Manifest File in Android
Every project in Android includes a Manifest XML file, which is AndroidManifest.xml, located in the root directory of its project hierarchy. The manifest file is an important part of our app because it defines the structure and metadata of our application, its components, and its requirements. This file includes nodes for each of the Activities, Services, Content Providers, and Broadcast Receivers that make the application, and using Intent Filters and Permissions determines how they coordinate with each other and other applications.
The manifest file also specifies the application metadata, which includes its icon, version number, themes, etc., and additional top-level nodes can specify any required permissions, and unit tests, and define hardware, screen, or platform requirements. The manifest comprises a root manifest tag with a package attribute set to the project’s package. It should also include an xmls:android attribute that will supply several system attributes used within the file. We use the versionCode attribute is used to define the current application version in the form of an integer that increments itself with the iteration of the version due to update. Also, the versionName attribute is used to specify a public version that will be displayed to the users.
We can also specify whether our app should install on an SD card of the internal memory using the installLocation attribute. A typical manifest file looks as: