Androidmanifest xml что это
Перейти к содержимому

Androidmanifest xml что это

  • автор:

Файл манифеста AndroidManifest.xml

Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.

Назначение файла

  • объявляет имя Java-пакета приложения, который служит уникальным идентификатором;
  • описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;
  • содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;
  • объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;
  • объявляет минимальный уровень API Android, необходимый для работы приложения;
  • перечисляет связанные библиотеки;

Общая структура манифеста

Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.

Корневым элементом манифеста является . Помимо данного элемента обязательными элементами является теги и . Элемент является основным элементом манифеста и содержит множество дочерних элементов, определяющих структуру и работу приложения. Порядок расположения элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы.

Описание

Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:

Атрибуты

xmlns:android определяет пространство имен Android. Оно всегда одно и то же package определяет уникальное имя пакета приложения, которое вы задали при создании проекта. Android Marketplace проверяет уникальность при приеме приложения, поэтому рекомендуется использовать свое имя для избежания конфликтов с другими разработчиками. Например, я использую имя своего сайта в обратном порядке: ru.alexanderklimov.appname android:versionCode указывает на внутренний номер версии, используемый для сравнения версий программы. «versionCode» должен быть целым, и Android Market использует это для определения, предоставили ли вы новую версию, передавая триггеру обновления на устройствах, на которых установлено ваше приложение. Как правило. начинается с 1 и увеличивается на единицу, если вы выпускаете новую версию приложения. android:versionName указывает номер пользовательской версии. Можно использовать строку или строковый ресурс. Этот номер видит пользователь.

Читайте совет Получить номер версии программы

Элемент объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.

android:name название разрешения android:label имя разрешения, отображаемое пользователю android:description описание разрешения android:icon значок разрешения android:permissionGroup определяет принадлежность к группе разрешений android:protectionLevel уровень защиты

Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.

android:name имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»

Наиболее распространенные разрешения

  • INTERNET — доступ к интернету
  • READ_CONTACTS — чтение (но не запись) данных из адресной книги пользователя
  • WRITE_CONTACTS — запись (но не чтение) данных из адресной книги пользователя
  • RECEIVE_SMS — обработка входящих SMS
  • ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi
  • ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS

Элемент объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.

Элемент определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента .

Элемент объявляет объект instrumentation, который дает возможность контролировать взаимодействие приложения с системой. Обычно используется при отладке и тестировании приложения и удаляется из release-версии приложения.

Элемент позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android. Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.

Атрибуты

android:minSdkVersion определяет минимальный уровень API, требуемый для работы приложения. Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте. Вы должны всегда объявлять этот атрибут, например: android:minSdkVersion=»11″. Вы можете ради интереса установить значение 7, а потом 11 и сравнить внешний вид приложения. Например, у младшей версии не будет отображаться ActionBar. android:maxSDKVersion позволяет определить самую позднюю версию, которую готова поддерживать ваша программа. Ваше приложение будет невидимым в Google Play для устройств с более свежей версией. Рекомендуется устанавливать в том случае, когда вы точно уверены, что приложение не будет корректно работать на новой платформе. targetSDKVersion позволяет указать платформу, для которой вы разрабатывали и тестировали приложение. Устанавливая значение для этого атрибута, вы сообщаете системе, что для поддержки этой конкретной версии не требуется никаких изменений.

Элемент указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства. Например, приложение могло бы определить требования обязательного наличия на устройстве физической клавиатуры или USB-nopTa. Спецификация используется, чтобы избежать установки приложения на устройствах, которые не поддерживают требуемую конфигурацию. Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы для каждой конфигурации. Вы можете задать любую комбинацию, содержащие следующие устройства

  • reqFiveWayNav — используйте значение true, если приложению требуется устройство ввода, поддерживающее навигацию вверх, вниз, влево, вправо, а также нажатие выделенного элемента. К таким устройствам относятся трекболы и D-pad. В принципе устарело
  • reqHardKeyboard — используйте значение true, если приложению нужна аппаратная клавиатура.
  • reqKeyboardType — позволяет задать тип клавиатуры: nokeys, qwerty, twelvekey, undefined
  • reqNavigation — укажите одно из значений: nonav, dpad, trackball, wheel или undefined, если требуется устройство для навигации
  • reqTouchScreen — если требуется сенсорный экран, то используйте нужное значение из возможных вариантов: notouch, stylus, finger, undefined. Сейчас практически все устройства содержат сенсорный экран, поэтому тоже устарело

Приложение не будет устанавливаться на устройстве, которое не соответствует заданной вами конфигурации. В идеале, вы должны разработать такое приложение, которое будет работать с любым сочетанием устройств ввода. В этом случае не нужен.

Элемент объявляет определенную функциональность, требующуюся для работы приложения. Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует камеру с автофокусом. Если устройство не имеет встроенную камеру с автофокусом, приложения не будет инсталлировано.

android.hardware.camera требуется аппаратная камера android.hardware.camera.autofocus требуется камера с автоматической фокусировкой

Список можно увидеть здесь.

Можно переопределить требование по умолчанию, добавив атрибут required со значением false. Например, если вашей программе не требуется, чтобы камера поддерживала автофокус, то используйте вариант:

Элемент определяет разрешение экрана, требуемое для функционирования устройства. Данный тег позволяет указать размеры экран, для которого был спроектировано приложение. Система будет масштабировать ваше приложение на основе ваших макетов на тех устройствах, которые поддерживают указанные вами разрешения экран. Для других случаев система будет растягивать макет по мере возможности.

smallScreen как правило экраны QVGA normalScreen стандартные экраны HVGA и WQVGA largeScreen большие экраны xlargeScreen очень большие экраны, которые превосходят размеры планшетов anyDensity установите значение true, если ваше приложение способно масштабироваться для отображения на экране с любым разрешением.

По умолчанию, для каждого атрибута установлено значение true. Вы можете указать, какие размеры экранов ваше приложение не поддерживает.

Начиная с API 13 (Android 3), у тега появились новые атрибуты:

  • requiresSmallestWidthDp — указываем минимальную поддерживаемую ширину экрана (наименьшая сторона устройства) в аппаратно-независимых пикселях. С его помощью можно отфильтровать устройства при размещении приложения в Google Play
  • compatibleWidthLimitDp — задаёт верхнюю границу масштабирования для вашего приложения. Если экран устройства выходит за указанную границу, система включит режим совместимости.
  • largestWidthLimitDp — задаёт абсолютную верхнюю границу, за пределами которой ваше приложение точно не может быть смаштабировано. В этом случае приложение запускается в режиме совместимости, которую нельзя отключить. Следует избегать подобных ситуаций и разрабатывать макеты для любых экранов.

Элемент один из основных элементов манифеста, содержащий описание компонентов приложения, доступных в пакете: стили, значок и др. Содержит дочерние элементы, которые объявляют каждый из компонентов, входящих в состав приложения. В манифесте может быть только один элемент .

Элемент объявляет активность. Если приложение содержит несколько активностей, не забывайте объявлять их в манифесте, создавая для каждой из них свой элемент . Если активность не объявлена в манифесте, она не будет видна системе и не будет запущена при выполнении приложения или будет выводиться сообщение об ошибке.

Для этого класса зарегистрирован фильтр вызовов, определяющий, что это действие запущено в приложении (действие android:name=«android.intent.action.MAIN»). Определение категории (категория android:name=«android.intent.category.LAUNCHER» ) определяет, что это приложение добавлено в директорию приложений на Android-устройстве. Значения @ направляют файлы ресурсов, которые содержат актуальные значения. Это упрощает работу с разными ресурсами, такими как строки, цвета, значки.

Атрибуты

android:name имя класса. Имя должно включать полное обозначение пакета, но т. к. имя пакета уже определено в корневом элементе , имя класса, реализующего деятельность, можно записывать в сокращенном виде, опуская имя пакета android:label текстовая метка, отображаемая пользователю android:launcMode управление стеком. Подробнее android:parentActivityName В приложениях с API 16 и выше используется эта строка. Она сообщает, какая активность является родительской. Для старых устройств используйте метаданные

android:exported Позволяет или запрещает запускать активность другим приложениям. Если атрибута нет, то по умолчанию равно false и другие приложения не могут запускать вашу активность. Но если у активности есть интент-фильтры, то по умолчанию это значение будет уже равно true. Это может запутать новичков. Поэтому, если вы хотите запретить запуск через сторонние приложения, то явно указывайте нужное значение.

Элемент содержит множество других атрибутов, определяющих разрешения, ориентацию экрана и т. д.

Изменение конфигурации во время выполнения программы

При изменении языка, региона или аппаратной конфигурации Android прерывает работу всех приложений и затем запускает их повторно, перезагружая значения из ресурсов. Подобное поведение не всегда уместно и желательно. Например, некоторые изменения конфигурации (ориентация экрана в пространстве, доступность клавиатуры) могут произойти только лишь из-за того, что пользователь повернул устройство или выдвинул клавиатуру. Вы можете настраивать, каким образом ваше приложение будет реагировать на подобные изменения, обнаруживая их и выполняя собственные действия. Чтобы заставить Активность отслеживать изменения конфигурации при выполнении программы, добавьте в ее узел в манифесте атрибут android:configChanges, указав, какие именно события хотите обрабатывать.

Перечислим некоторые значения, с помощью которых можно описать изменения конфигурации:

  • оrientation — положение экрана изменено с портретного на альбомное (или наоборот);
  • keyboardHidden — клавиатура (или D-pad и другое устройство) выдвинута или спрятана;
  • fontScale — пользователь изменил предпочтительный размер шрифта;
  • locale — пользователь выбрал новые языковые настройки;
  • keyboard — изменился тип клавиатуры; например, телефон может иметь 12-клавишную панель, при повороте которой появляется полноценная клавиатура. Или была подключена внешняя клавиатура.
  • touchscreen или navigation — изменился тип клавиатуры или способ навигации. Как правило, такие события не встречаются.
  • mcc или mnc — обнаружена новая SIM-карта, при этом изменились страна и код сотовой сети соответственно.
  • uiMode — изменился режим пользовательского интерфейса, например, при переключении между автомобильным, дневным и ночным режимами.
  • screenLayout — изменились характеристики экрана, например, при активации другого дисплея.
  • screenSize — изменлись размеры экрана, например, при смене ориентации. Появилось в Android 3 (API 12)
  • smallestScreenSize — изменился физический размер экрана, например, при подключении внешнего дисплея. Появилось в Android 3 (API 12)

В некоторых случаях одновременно будут срабатывать несколько событий. Например, когда пользователь выдвигает клавиатуру, большинство устройств генерируют события keyboardHidden и orientation. Вы можете выбирать несколько событий, которые хотите обрабатывать самостоятельно, разделяя их символом |.

Наличие атрибута android:configChanges отменяет перезапуск приложения при заданных изменениях конфигурации. Вместо этого внутри активности срабатывает метод onConfigurationChanged(). Переопределите его, чтобы появилась возможность обрабатывать изменения в конфигурации. Используйте переданный объект Configuration, чтобы получить новые значения. Не забудьте вызвать одноименный метод из родительского класса и перезагрузить измененные значения со всех ресурсов, которые используются внутри активности.

 @Override public void onConfigurationChanged(Configuration _newConfig) < super.onConfigurationChanged(_newConfig); [ . Обновите пользовательский интерфейс, используя данные из ресурсов . ] if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) < [ . Реакция на измененную ориентацию экрана . ] >if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) < [ . Реакция на выдвигание/задвигание клавиатуры . ] >> 

На момент вызова метода, все данные из ресурсов будут обновлены, поэтому применять метод можно без опаски.

Любые изменения конфигурации, которые не были явно помечены для обработки внутри вашего приложения, приведут к перезапуску активности, минуя вызов метода onConfigurationChanged().

Каждый тег поддерживает вложенные узлы . Элемент определяет типы намерений, на которые могут ответить деятельность, сервис или приемник намерений. Фильтр намерений объявляет возможности его родительского компонента — что могут сделать деятельность или служба и какие типы рассылок получатель может обработать. Фильтр намерений предоставляет для компонентов-клиентов возможность получения намерений объявляемого типа, отфильтровывая те, которые не значимы для компонента, и содержит дочерние элементы , , .

Элемент добавляет действие к фильтру намерений. Элемент должен содержать один или более элементов . Если в элементе не будет этих элементов, то объекты намерений не пройдут через фильтр. Пример объявления действия:

Элемент определяет категорию компонента, которую должно обработать намерение. Это строковые константы, определенные в классе intent, например:

Элемент добавляет спецификацию данных к фильтру намерений. Спецификация может быть только типом данных (атрибут mimeType), URI или ТИПОМ данных вместе с URI. Значение URI определяется отдельными атрибутами для каждой из его частей, т. е. URI делитСЯ на части: android:scheme, android:host, android:port, android:path или android:pathPrefix, android:pathPattern.

Элемент определяет пару «имя-значение» для элемента дополнительных произвольных данных, которыми можно снабдить родительский компонент. Составляющий элемент может содержать любое число элементов .

Элемент — это псевдоним для Activity, определенной в атрибуте targetActivity. Целевая деятельность должна быть в том же самом приложении, что и псевдоним, и должна быть объявлена перед псевдонимом деятельности в манифесте. Псевдоним представляет целевую деятельность как независимый объект. У псевдонима может быть свой собственный набор фильтров намерений, определяющий, какие намерения могут активизировать целевую деятельность и как система будет обрабатывать эту деятельность. Например, фильтры намерений на псевдониме деятельности могут определить флаги android:name=»android.intent.action.MAIN» и android:name=»android.intent.category.LAUNCHER», заставляя целевую деятельность загружаться при запуске приложения даже в том случае, когда в фильтрах намерений на целевой деятельности эти флаги не установлены.

Элемент объявляет службу как один из компонентов приложения. Все службы должны быть представлены элементом в файле манифеста. Службы, которые не были объявлены, не будут обнаружены системой и никогда не будут запущены. Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д. Поддерживает вложенные узлы

В Android 11 появилась новая запись для работы службы в режиме Foreground (активное состояние).

Элемент объявляет приёмник широковещательных намерений как один из компонентов приложения. Приёмники широковещательных намерений дают возможность приложениям получить намерения, которые переданы системой или другими приложениями, даже когда другие компоненты приложения не работают.

Элемент объявляет контент-провайдера (источник данных) для управления доступом к базам данных. Все контент-провайдеры, которые являются частью приложения, должны быть представлены в элементах в файле манифеста. Если они не объявлены, они не будут работать, т.к. система их не сможет увидеть. Элемент содержит свой набор дочерних элементов для установления разрешений доступа к данным:

Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д.

Элемент является дочерним элементом для . Он определяет, для кого можно предоставить разрешения на подмножества данных контент-провайдера. Предоставление разрешения является способом допустить к подмножеству данных, предоставляемым контент-провайдером, клиента, у которого нет разрешения для доступа к полным данным. Если атрибут granturiPermissions контент-провайдера имеет значение true, то разрешение предоставляется для любых данных, поставляемых контент-провайдером. Однако, если атрибут поставлен в false, разрешение можно предоставить только подмножествам данных, которые определены этим элементом. Контент-провайдер может содержать любое число элементов .

Элемент — дочерний элемент для . Определяет путь и требуемые разрешения для определённого подмножества данных в пределах поставщика оперативной информации. Этот элемент может быть определён многократно, чтобы поставлять множественные пути.

Элемент определяет общедоступную библиотеку, с которой должно быть скомпоновано приложение. Этот элемент указывает системе на необходимость включения кода библиотеки в загрузчик классов для пакета приложения. Каждый проект связан по умолчанию с библиотеками Android, в которые включены основные пакеты для сборки приложений (с классами общего назначения типа Activity, Service, Intent, View, Button, Application, ContentProvider и т. д.). Однако некоторые пакеты находятся в отдельных библиотеках, которые автоматически не компонуются с приложением. Если же приложение использует пакеты из этих библиотек или других, от сторонних разработчиков, необходимо сделать явное связывание с этими библиотеками и манифест обязательно должен содержать отдельный элемент .

Androidmanifest xml что это

Каждое приложение содержит файл манифеста AndroidManifest.xml . Данный файл определяет важную информацию о приложении — название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д. Данный файл можно найти в проекте в папке manifests :

AndroidManifest.xml в Android Studio

Файл манифеста может выглядеть так:

Элементом корневого уровня является узел 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

Каждый Android-проект содержит файл AndroidManifest.xml.

Android manifest — файл, в котором содержится вся самая важная информация о нашем приложении, которую вы же и описываете.

Манифест нужен чтобы:

  • Задавать имя пакета Java для приложения. Это имя пакета служит уникальным идентификатором приложения.
  • Описать компоненты приложения — activity, service, broadcast receiver и provider, из которых состоит приложение. Он содержит имена классов, которые реализуют каждый компонент, и публикует их возможности (указывает, например, какие сообщения Intent они могут принимать).
  • Определить, в каких процессах будут размещаться компоненты приложения.
  • Объявить, какие разрешения должны быть выданы приложению, чтобы оно могло получить доступ к защищенным частям API-интерфейса и взаимодействовать с другими приложениями.
  • Объявить разрешения, требуемые для взаимодействия с компонентами данного приложения.
  • Объявить минимальный уровень API-интерфейса Android, который требуется приложению.
  • Содержать список библиотек, с которыми должно быть связано приложение.

Обязательными являются только элементы и . Они должны присутствовать в файле манифеста, при этом указать их можно только один раз. Большинство других элементов необязательны, а также их можно указывать по нескольку раз. При этом элементы, находящиеся на одном уровне могут располагаться в любом порядке. Также элементы могут содержать в себе другие элементы или атрибуты. Формально все атрибуты являются необязательными. Однако некоторые их них указывать необходимо, чтобы файл мог выполнять свое предназначение. Имена всех атрибутов должны начинаться с префикса android:

Структура манифеста:

Рассмотрим подробно каждый из этих элементов.

Элемент

Позволяет запрашивать у системы разрешения, которые нужны приложению для доступа к различным функциям. Это делается с помощью единственного атрибута android:name, в параметры которого нужно передать имя разрешения.

Элемент

Объявляет разрешение, которое может использоваться для ограничения доступа к определенным компонентам или функциям этого или других приложений.

Элемент

Этот элемент объявляет базовое имя дерева разрешений. Приложение получает права собственности на все разрешения в дереве. Оно может динамически добавлять новые разрешения для дерева, вызывая PackageManager.addPermission().

Элемент

Объявляет имя группы для набора разрешений. Отдельные разрешения присоединяются к группе через атрибут android:permissionGroup элемента .

Элемент

Объявляет класс Instrumentation, который позволяет отслеживать взаимодействие приложения с системой.

Элемент

Позволяет указать совместимость с одной или несколькими версиями Android через указание уровня API.

Элемент

Указывает, какие аппаратные и программные функции требуются приложению.

Элемент

Объявляет определённый функционал, используемый приложением. Цель объявления этого элемента — информировать любой внешний объект о наборе аппаратных и программных функций, от которых зависит приложение. Элемент предлагает атрибут android:required, который указывает, требуется ли приложению функционал, без которого он не сможет работать.

Элемент

Позволяет указать размеры экрана, поддерживаемые вашим приложением, и включить режим совместимости с экраном, большим, чем приложение поддерживает.

Элемент

Указывает конфигурацию экрана, с которой приложение совместимо.

Элемент

Объявляет одну GL текстуру сжатия, поддерживаемую приложением.

Элемент

Объявляется Activity, которая реализует часть визуального пользовательского интерфейса приложения.

Элемент

Указывает типы интентов, на которые может реагировать активность, сервис и тд. Фильтр интентов объявляет возможности своего родительского компонента, а также открывает интентам нужного типа доступ к компоненту и отфильтровывает те, которые не нужны.

Элемент

Добавляет действие в фильтр намерений. Элемент должен содержать как минимум один элемент . Если он не содержит никаких действий, интенты не пройдут через фильтр.

Элемент

Добавляет название категории в фильтр намерений.

Элемент

Добавляет спецификацию данных в фильтр намерений. Спецификация может быть только android:mimeType, URI или оба вместе.

Элемент

Это псевдоним для активности, указанной в атрибуте android:targetActivity. Активность должна быть в том же приложении, что и псевдоним, и должна быть объявлена в манифесте перед псевдонимом.

Элемент

Объявляет сервис (подкласс Service) как один из компонентов приложения. В отличие от активности, сервис не имеет визуального пользовательского интерфейса. Сервисы используются для реализации длительных фоновых операций или крупного API, который может быть вызван другими приложениями.

Элемент

Объявляет BroadcastReceiver как один из компонентов приложения.Они позволяют приложению получать интенты, которые посылаются системой или другими приложениями, даже если другие компоненты приложения не работают.

Элемент

Объявляет компонент ContentProvider. Он обеспечивает структурированный доступ к данным, управляемым приложением.

Элемент

Указывает, для кого могут быть предоставлены разрешения на подмножество данных ContentProvider.

Элемент

Определяет путь и необходимые разрешения для определенного подмножества данных внутри ContentProvider. Этот элемент может быть указан несколько раз для передачи нескольких путей.

Элемент

Задает общедоступную библиотеку, с которой приложение должно быть связано. Этот элемент указывает системе включить код библиотеки в загрузчик классов для пакета.

ПРОграммирование под Android

Теперь кратко рассмотрим этот важный файл любого приложения Андроид. Кратко, потому как переводить весь объем с альма-матер это очень утомительно. В любом случае более подробно, при необходимости, каждый может почитать там.

Есть основная статья в альма-матер. Так же есть еще одна не плохая статейка на сайте http://devcolibri.com и еще одна тут.

Ну и в книге Голощапова тоже есть не плохое описание. Так как в сети статьи могут исчезать, то тут я сделаю вольную компиляцию всех вышеперечисленных источников. И заодно исправляю неточности. Так как перевод некоторых элементов (например ) ну вообще даже близко не стоит к оригиналу. В основном все статьи это копипаст, и не понятно кто у кого содрал. Но, так или иначе, в основном описание этого файла и его назначения в этих статьях совпадают с оригиналом.
Это делаю себе как памятку, ну и если кому еще пригодится то хорошо.

AM0001

Файл AndroidManifest.xml задает конфигурацию приложения:

  • объявляет имя Java-пакета приложения, который служит уникальным идентификатором
  • объявляет минимальный и максимальный уровни API, необходимые для работы приложения
  • описывает компоненты приложения (Activiy, Service, Broadcast Receiver и Content Provider)
  • перечисляет любые библиотеки связанные с приложением (помимо библиотек Андроид, связанных по умолчанию)
  • объявляет разрешения, которые требуются для работы приложения (например, доступ в сеть, разрешение на отправку SMS и т.д.)

На рисунке ниже можно увидеть общую структуру файла манифеста и его элементов. Рисунок взят из книги Голощапова и не содержит некоторых элементов. Перевод описания недостающих элементов я сделал сам. Но их в принципе не так много.

Полное описание есть в альма-матер, но я его приведу здесь тоже для пущей наглядности

Элемент является корневым элементом файла AndroidManifest.xml. По умолчанию мастер создания проекта Андроид в Eclipse создает этот элемент с четырьмя атрибутами:

Эти атрибуты обязательны для любого приложения Андроид и имеют следующее назначение:

xmins:android — определяет пространство имен Android. Это значение всегда неизменно для всех приложений.

package — определяет уникальное имя пакета приложения, которое вы задали при создании проекта.

Для чего нужно указывать package? Если вы захотите загрузить ваше приложение на Google Play, то он проверяет уникальность при приеме приложения, поэтому рекомендуется использовать свое имя для избежания конфликтов с другими разработчиками.

android:versionCode — по сути это версия вашего приложения. Выпуская новую версию вы указываете её в этом поле, оно должно быть целым числом.

Выше мы говори про уникальность пакета, так вот если вы ранее загрузили на Google Play ваше приложение, то когда вы решите загрузить обновленную версию приложения, то вам нужно придерживаться нескольких правил. Имя пакета должно совпадать с тем, что уже загружено Google Play и указать версию android:versionCode на порядок выше. Но это при условии что вы выпускаете новую версию приложения, в случае если вы хотите добавить немного исправленную версию, то это читайте ниже.

Изменив данный параметр и загрузив приложение на Google Play все пользователям вашего приложения будет предложено обновится до новой версии приложения.

android:versionName — указывает номер пользовательской версии. Если вы нашли несколько недоработок в вашем приложении и исправили их, то в этом случае можно указать для этого поля новую версию, что будет говорить Google Play, что это не новая версия приложения, а улучшенная. Для именования версии можно использовать строку или строковый ресурс.

Изменив данный параметр и загрузив приложение на Google Play все пользователям вашего приложения будет предложено обновится до модифицированной версии приложения.

Элемент позволяет вам запрашивать разрешение, которые должны быть предоставлены приложению системой для его нормального функционирования.

Разрешения предоставляются во время установки приложения, а не во время его работы . имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе данного приложения, разрешение определенное в другом приложении, или одно из стандартных системных разрешений, например:

android:name=’android.permission.CAMERA’ – доступ к камере устройства
android:name=’android.permission.READ_CONTACTS’ – доступ к базе данных контактов

Элемент объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению.

Приложение может также защитить свои собственные компоненты (Activity, Service, Broadcast Receiver и Content Provider) разрешениями. Оно может использовать любое из системных разрешений, определенных Андроид (перечисленных в android.Manifest.permission) или объявленных другими приложениями, а так же может определить свои собственные разрешения. Новое разрешение должно быть объявлено в атрибуте android:name элемента следующим образом:

permisson android:name=”com.samples.custom_permission”

Кроме того используются дополнительные атрибуты:

android:label — имя разрешения, отображаемое пользователю
android:description — описание разрешения
android:icon — значок разрешения
android:permissionGroup — определяет принадлежность к группе разрешений
android:protectionLevel — уровень защиты

Элемент объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.

Элемент определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента .

Элемент объявляет объект Instrumentation, который дает возможность контролировать взаимодействие приложения с системой. Обычно используется при отладке и тестировании приложения и удаляется из release-версии приложения.

Элемент позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android. Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.

Основной используемый в элементе атрибут – android:minSdkVersion, определяет минимальный уровень API, требуемый для работы приложения. Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте. Желательно всегда объявлять этот атрибут, например:

Атрибут android:targetSdkVersion представлен начиная с API Level 4. Это целое число, обозначающее API Level, для которого приложение предназначено (target, что означает цель). Если этот атрибут не установлен, то его значение по умолчанию равно minSdkVersion.

Этот атрибут информирует систему, что Вы тестировали приложение с этим API Level, и система не должна позволять любое поведение совместимости (compatibility behaviors, т. е. эмуляцию вызовов API, обеспечивающих специальную дополнительную программную обработку некоторых вызовов API), чтобы поддержать прямую совместимость приложения с целевой версией системы. Приложение все еще может работать на более старых версиях (до версий, не меньших minSdkVersion).

Поскольку Android развивается с каждой новой версией, то некоторые поведения и даже внешний вид приложения может измениться. Однако, если API level платформы выше, чем версия, указанная в targetSdkVersion приложения, система может включить обработки совместимости (compatibility behaviors), чтобы обеспечить работоспособность Вашего приложения так, как Вы этого ожидали. Вы можете запретить такие обработки совместимости, если укажете targetSdkVersion равным API level платформы Android, на которой приложение работает. Например, установка этого значения в «11» или более высокое значение позволит системе установить новую тему оформления по умолчанию (Holo) для Вашего приложения при работе на Android 3.0 или более новой, и также запретит режим совместимости экрана, когда программа будет работать на больших экранах (потому что поддержка API level 11 неявно подразумевает поддержку больших экранов).

Имеется много разновидностей обеспечения совместимости (compatibility behaviors), которые система может разрешить, базируясь на значении этого атрибута. Некоторые из этих обработок (поведений, behaviors) описаны в соответствующей документации версии платформы, см. Build.VERSION_CODES.

Чтобы обеспечить соответствие Вашего приложения каждому новому релизу Android, Вы должны увеличивать значение этого атрибута, чтобы оно соответствовало последнему API level, и затем необходимо полностью протестировать поведение приложения на этой новой версии платформы.

Атрибут android:maxSdkVersion представлен начиная с API Level 4. Это целое число, обозначающее максимальный API Level, на котором приложение может работать.

На версиях Android 1.5, 1.6, 2.0 и 2.0.1 система проверяет значение этого атрибута, когда инсталлируется приложение, и когда приложение проверяется на совместимость после обновления системы. В любом случае, если атрибут приложения maxSdkVersion меньше API Level системы, то установка приложения будет запрещена. При проверке приложения на совместимость после обновления системы такой случай соответствует полному удалению приложения с устройства. Для иллюстрации того, как этот атрибут может повлиять на приложение после обновления системы, рассмотрим пример.

Приложение декларировало maxSdkVersion=»5″ в своем манифесте, и было опубликовано на Google Play. Пользователь устройства Android 1.6 (API Level 4) загрузил и установил это приложение. После нескольких недель пользователь принял сообщение от системы over-the-air с предложением обновить систему до уровня Android 2.0 (API Level 5). После установки этого обновления система проверила атрибут приложения maxSdkVersion, и разрешила дальнейшее использование этого приложения. Приложение после этого работало нормально. Однако через некоторое время устройство приняло другое обновление системы Android 2.0.1 (API Level 6). После обновления система не разрешает работу приложения, так как API Level системы (6) теперь выше, чем максимальный уровень, который может поддержать приложение (5). Система делает приложение невидимым для пользователя, и удаляет его из устройства.

Предупреждение: использование этого атрибута не рекомендуется. Во-первых, нет никакой потребности установить этот атрибут как средство блокирования развертывания Вашего приложения на новые версии платформы Android по мере их появления. Для Android декларируется полная обратная совместимость старых приложений для новых версий Android. Ваше приложение должно работать должным образом на всех новых версиях, если оно использует только стандартное API и следует лучшим правилам и практикам разработки. Во-вторых нужно помнить, что применение этого атрибута приведет к автоматическому удалению Вашего приложения с устройств пользователя, которые обновят свою систему на более высокий API Level, чем указано в атрибуте. Большинство устройств, на которых вероятно будет установлено Ваше приложение, получают периодические обновления системы на лету, по воздуху (over the air), так что Вы должны учитывать этот эффект перед тем, как установить этот атрибут для своего приложения.

Будущие версии Android (вне Android 2.0.1) больше не будут проверять maxSdkVersion и принудительно применять его значение при установке или проверке совместимости приложения. Однако Google Play продолжит использовать этот атрибут как фильтр при предоставлении приложений, доступных для закачки пользователям.

Элемент указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства. Например, приложение приложению для работы нужно наличие физической клавиатуры или трекбола. Спецификация используется, чтобы избежать установки приложения на устройствах, которые не поддерживают требуемую конфигурацию.

Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы для каждой конфигурации.

Вы можете задать любую комбинацию, содержаoe. следующие устройства

reqFiveWayNav — используйте значение true, если приложению требуется устройство ввода, поддерживающее навигацию вверх, вниз, влево, вправо, а также нажатие выделенного элемента. К таким устройствам относятся трекболы и D-pad. В принципе устарело
reqHardKeyboard — используйте значение true, если приложению нужна аппаратная клавиатура.
reqKeyboardType — позволяет задать тип клавиатуры: nokeys, qwerty, twelvekey, undefined
reqNavigation — укажите одно из значений: nonav, dpad, trackball, wheel или undefined, если требуется устройство для навигации
reqTouchScreen — если требуется сенсорный экран, то используйте нужное значение из возможных вариантов: notouch, stylus, finger, undefined. Сейчас практически все устройства содержат сенсорный экран, поэтому тоже устарело

Приложение не будет устанавливаться на устройстве, которое не соответствует заданной вами конфигурации. В идеале, вы должны разработать такое приложение, которое будет работать с любым сочетанием устройств ввода. В этом случае не нужен.

Элемент объявляет определенную функциональность, требующуюся для работы приложения. Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует камеры с автофокусом. Если устройство не имеет встроенную камеру с автофокусом, приложения не будет инсталлировано. Например:

android.hardware.camera.front — требуется аппаратная камера

android.hardware.camera.autofocus — требуется камера с автоматической фокусировкой

Все параметры можно посмотреть в альма-матер тут.

Элемент определяет размеры экранов, требуемые для нормального функционирования вашей программы и включает поддержку совместимости экранов, для экранов бОльших размеров, чем указано в этом параметре.

Для пущей наглядности приведу синтакс

Определяет размеры и плотности экранов совместимые с вашим приложением. Только один элемент может присутствовать в файле манифеста, но он может содержать множество элементов . Например:

Система Андроид не читает этот элемент в файле манифеста, ни во время установки ни во время запуска приложения. Этот элемент носит чисто информационный характер и используется только внешними сервисами такими как Google Play для фильтрации отображения вашего приложения в маркете. То есть если пользователь имеет параметры экрана отличные от указанных в этом элементе, то Google Play просто не покажет ему это приложение.

Как правило, вы не должны использовать этот элемент.

Этот элемент объявляет формат сжатия одной GL текстуры поддерживаемой вашим приложением. Если ваше приложение поддерживает несколько форматов сжатия текстур, то вам необходимо использовать несколько этих элементов. Например:

Все значения можно посмотреть по этой ссылке. На русском языке по этому параметру можно немного почитать тут.

Элемент имеет гораздо более сложную структуру, чем все перечисленные элементы. Структуру этого элемента я взял из книги Голощапова

AM0002

Элемент один из основных элементов манифеста, содержащий описание компонентов приложения, доступных в пакете: стили, значок и др. Содержит дочерние элементы, которые объявляют каждый из компонентов, входящих в состав приложения. В манифесте может быть только один элемент .

Дочерний элемент объявляет компонент Activity. Если приложение содержит несколько Активностей, они должны быть объявлены в манифесте, создавая для каждой из них свой элемент . Если Активность не объявлена в манифесте, она не будет видна системе и не будет запущена при выполнении приложения или будет выводиться сообщение об ошибке. Пример объявления Активности:

Эти атрибуты элемента являются обязательными и определяют следующее:

android:name — имя класса. Имя должно включать полное обозначение пакета, но если имя пакета уже определено в корневом элементе , имя класса, реализующего Активность, можно записывать в сокращенном виде, опуская имя пакета.

android:label — текстовая метка, отображаемая пользователю в заголовке Активности.

Элемент содержит множество других атрибутов, определяющих разрешения, ориентацию экрана и т. д. Изменение конфигурации во время выполнения программы

При изменении языка, региона или аппаратной конфигурации Android прерывает работу всех приложений и затем запускает их повторно, перезагружая значения из ресурсов . Подобное поведение не всегда уместно и желательно. Например, некоторые изменения конфигурации (ориентация экрана в пространстве, доступность клавиатуры) могут произойти только лишь из-за того, что пользователь повернул устройство или выдвинул клавиатуру . Вы можете настраивать, каким образом ваше приложение будет реагировать на подобные изменения, обнаруживая их и выполняя собственные действия. Чтобы заставить Активность отслеживать изменения конфигурации при выполнении программы, добавьте в ее узел в манифесте атрибут android:configChanges, указав, какие именно события хотите обрабатывать.

Перечислим некоторые значения, с помощью которых можно описать изменения конфигурации:

оrientation — положение экрана изменено с портретного на альбомное (или наоборот);
keyboardHidden — клавиатура выдвинута или спрятана;
fontScale — пользователь изменил предпочтительный размер шрифта;
locale — пользователь выбрал новые языковые настройки;
keyboard — изменился тип клавиатуры; например, телефон может иметь 12-клавишную панель, при повороте которой появляется полноценная клавиатура;
touchscreen или navigation — изменился тип клавиатуры или способ навигации. Как правило, такие события не встречаются.

В некоторых случаях одновременно будут срабатывать несколько событий. Например, когда пользователь выдвигает клавиатуру, большинство устройств генерируют события keyboardHidden и orientation. Вы можете выбирать несколько событий, которые хотите обрабатывать самостоятельно, разделяя их символом |.

Наличие атрибута android:configChanges отменяет перезапуск приложения при заданных изменениях конфигурации . Вместо этого внутри Активности срабатывает метод onConfigurationChanged(). Переопределите его, чтобы появилась возможность обрабатывать изменения в конфигурации. Используйте переданный объект Configuration, чтобы получить новые значения. Не забудьте вызвать одноименный метод из родительского класса и перезагрузить измененные значения со всех ресурсов, которые используются внутри Активности.

@Override public void onConfigurationChanged(Configuration _newConfig) < super.onConfigurationChanged(_newConfig); [ . Обновите пользовательский интерфейс, используя данные из ресурсов . ] if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) < [ . Реакция на измененную ориентацию экрана . ] >if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) < [ . Реакция на выдвигание/задвигание клавиатуры . ] >>

Любые изменения конфигурации, которые не были явно помечены для обработки внутри вашего приложения, приведут к перезапуску Активности, минуя вызов метода onConfigurationChanged .

Элемент поддерживает вложенные узлы . Элемент определяет типы намерений (Intent), на которые могут ответить Activity, Service или Broadcast Receidver. Фильтр намерений (intent-filter) предоставляет для компонентов-клиентов возможность получения намерений (Intent) объявляемого типа, отфильтровывая те, которые не значимы для компонента, и содержит дочерние элементы , , .

Элемент добавляет действие к фильтру намерений. Элемент должен содержать один или более элементов . Если в элементе не будет этих элементов, то объекты намерений не пройдут через фильтр. Пример объявления действия:

это означает, что эта Активность приложения является главной и когда система пришлет Intent для запуска приложения, эта Активность откроется по умолчанию.

Элемент определяет категорию компонента, которую должно обработать намерение. Это строковые константы, определенные в классе intent, например:

этот атрибут определяет, что это приложение будет добавлено в директорию приложений на Android-устройстве. И будет отображаться в окне запуска приложений Application Launcher мобильного устройства.

Элемент добавляет спецификацию данных к фильтру намерений. Спецификация может быть только типом данных (атрибут mimeType), URI или типом данных вместе с URI. Значение URI определяется отдельными атрибутами для каждой из его частей, т.е. URI делится на части: android:scheme, android:host, android:port, android:path или android:pathPrefix, android:pathPattern.

Элемент определяет пару «имя-значение» для элемента дополнительных произвольных данных, которыми можно снабдить родительский компонент. Составляющий элемент может содержать любое число элементов .

Элемент — это псевдоним для Activity, определенной в атрибуте targetActivity. Целевая Активность должна быть в том же самом приложении, что и псевдоним, и должна быть объявлена перед псевдонимом деятельности в манифесте . Псевдоним представляет целевую деятельность как независимый объект . У псевдонима может быть свой собственный набор фильтров намерений, определяющий, какие намерения могут активизировать целевую Активность и как система будет обрабатывать эту Активность. Например, фильтры намерений на псевдониме Активности могут определить флаги android:name=»android.intent.action.MAIN» и android:name=»android.intent.category.LAUNCHER», заставляя целевую Активность загружаться при запуске приложения даже в том случае, когда в фильтрах намерений на целевой деятельности эти флаги не установлены.

Элементы , и объявляют соответственно компоненты Service, Broadcast Receiver и Content Provider. Не забывайте, что компоненты которые не были объявлены не будут обнаружены системой и ни когда не будут запущены. Эти элементы имеют много атрибутов, определяющих имя, доступность, разрешения, процесс и т.д.

Элемент объявляет службу как один из компонентов приложения. Все службы должны быть представлены элементом в файле манифеста. Службы, которые не были объявлены, не будут обнаружены системой и никогда не будут запущены. Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д. Поддерживает вложенные узлы

Элемент объявляет приемник широковещательных намерений как один из компонентов приложения. Приемники широковещательных намерений дают возможность приложениям получить намерения, которые переданы системой или другими приложениями, даже когда другие компоненты приложения не работают.

  • ;
  • ; Этот элемент имеет много атрибутов, определяющих имя, доступность, разрешения, процесс и т. д.

Элемент является дочерним элементом для . Он определяет, для кого можно предоставить разрешения на подмножества данных контент-провайдера. Предоставление разрешения является способом допустить к подмножеству данных, предоставляемым контент-провайдером, клиента, у которого нет разрешения для доступа к полным данным. Если атрибут granturiPermissions контент-провайдера имеет значение true, то разрешение предоставляется для любых данных, поставляемых контент-провайдером. Однако, если атрибут поставлен в false, разрешение можно предоставить только подмножествам данных, которые определены этим элементом. Контент-провайдер может содержать любое число элементов .

Элемент — дочерний элемент для . Определяет путь и требуемые разрешения для определенного подмножества данных в пределах поставщика оперативной информации. Этот элемент может быть определен многократно, чтобы поставлять множественные пути.

Элемент определяет общедоступную библиотеку, с которой должно быть скомпоновано приложение. Этот элемент указывает системе на необходимость включения кода библиотеки в загрузчик классов для пакета приложения. Каждый проект связан по умолчанию с библиотеками Android, в которые включены основные пакеты для сборки приложений (с классами общего назначения типа Activity, Service, Intent, View, Button, Application, ContentProvider и т. д.). Однако некоторые пакеты (например, maps и awt) находятся в отдельных библиотеках, которые автоматически не компонуются с приложением. Если же приложение использует пакеты из этих библиотек или других, от сторонних разработчиков, необходимо сделать явное связывание с этими библиотеками и манифест обязательно должен содержать отдельный элемент .

Тут все было описано очень кратко. Более подробно читаем в альма-матер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *