<манифест>

синтаксис:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:sharedUserMaxSdkVersion="integer"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    ...
</manifest>

содержится в:
никто

должен содержать:
<application>
может содержать:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>

описание:
Корневой элемент файла AndroidManifest.xml . Он должен содержать элемент <application> и указывать атрибуты xmlns:android и package .
атрибуты:
xmlns:android
Определяет пространство имен Android. Для этого атрибута всегда установлено значение "http://schemas.android.com/apk/res/android" .
package
Значение атрибута package в файле манифеста APK представляет собой универсальный уникальный идентификатор приложения вашего приложения. Оно отформатировано как полное имя пакета в стиле Java для приложения Android. Имя может содержать прописные или строчные буквы, цифры и символы подчеркивания («_»). Однако отдельные части имени пакета могут начинаться только с букв.

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

В системе сборки на основе Gradle, начиная с AGP 7.3, не устанавливайте значение package напрямую в исходном файле манифеста. Дополнительные сведения см. в разделе Установка идентификатора приложения .

android:sharedUserId

Эта константа устарела начиная с уровня API 29.
Общие идентификаторы пользователей вызывают недетерминированное поведение менеджера пакетов. Таким образом, их использование настоятельно не рекомендуется и может быть удалено в будущей версии Android. Вместо этого используйте надлежащие механизмы связи, такие как поставщики услуг и контента, чтобы облегчить взаимодействие между общими компонентами. Существующие приложения не могут удалить это значение, поскольку перенос общего идентификатора пользователя не поддерживается. В этих приложениях добавьте android:sharedUserMaxSdkVersion="32" чтобы избежать использования общего идентификатора пользователя при установках новых пользователей.

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

android:targetSandboxVersion
Целевая песочница, которую будет использовать это приложение. Чем выше номер версии песочницы, тем выше уровень безопасности. Его значение по умолчанию — 1 ; вы также можете установить его на 2 . Установка для этого атрибута значения 2 переключает приложение в другую изолированную программную среду SELinux.

К песочнице уровня 2 применяются следующие ограничения:

  • Значение по умолчанию для usesCleartextTraffic в конфигурации сетевой безопасности равно false.
  • Совместное использование Uid запрещено.

Для приложений Android с мгновенным запуском, ориентированных на Android 8.0 (уровень API 26) или выше, этому атрибуту присвоено значение 2 . Вы можете установить уровень песочницы в установленной версии вашего приложения на менее ограничительный уровень 1 . Но если вы это сделаете, ваше приложение не сохранит данные приложения из мгновенного приложения в установленную версию вашего приложения. Вы должны установить значение песочницы установленного приложения равным 2 , чтобы данные сохранялись из мгновенного приложения в установленную версию.

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

android:sharedUserLabel

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

Читаемая пользователем метка для общего идентификатора пользователя. Метка задается как ссылка на строковый ресурс. Это не может быть необработанная строка.

Этот атрибут был введен на уровне API 3. Он имеет смысл только в том случае, если также установлен sharedUserId .

android:sharedUserMaxSdkVersion

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

Максимальная версия SDK, в которой система все еще использует android:sharedUserId . Если ваше приложение недавно установлено на устройстве с версией SDK выше указанного значения, ваше приложение ведет себя так, как будто вы никогда не определяли android:sharedUserId .

Этот атрибут был введен на уровне API 33. Он имеет смысл только в том случае, если также установлен sharedUserId .

android:versionCode
Внутренний номер версии. Это число используется только для определения того, является ли одна версия более новой, чем другая, причем более высокие числа указывают на более поздние версии. Это не номер версии, отображаемый пользователям, который задается атрибутом versionName .

Значение задается как целое положительное число, большее 0. Вы можете определить его по своему усмотрению, при условии, что каждая последующая версия имеет большее число. Например, это может быть номер сборки, или вы можете преобразовать номер версии в формате «xy» в целое число, закодировав «x» и «y» отдельно в младших и старших 16 битах. Или вы можете увеличивать это число на единицу каждый раз при выпуске новой версии.

android:versionName
Номер версии, отображаемый пользователям. Этот атрибут задается как необработанная строка или как ссылка на строковый ресурс. У этой строки нет другой цели, кроме как показывать ее пользователям. Атрибут versionCode содержит значимый номер версии, используемый внутри.
android:installLocation
Место установки приложения по умолчанию. Принимаются следующие строки ключевых слов:

Ценить Описание
"internalOnly" Приложение устанавливается только на внутреннюю память устройства. Если этот параметр установлен, приложение никогда не устанавливается на внешнее хранилище, например на SD-карту. Если внутренняя память заполнена, система не установит приложение. Это поведение по умолчанию, если вы не определили android:installLocation .
"auto" Приложение можно установить на внешнее хранилище, но система по умолчанию устанавливает его во внутреннее хранилище. Если внутреннее хранилище заполнено, система устанавливает его на внешнее хранилище. После установки пользователь может переместить приложение во внутреннее или внешнее хранилище через настройки системы.
"preferExternal" Приложение предпочитает устанавливаться на внешнее хранилище. Нет никакой гарантии, что система выполнит этот запрос. Приложение может быть установлено во внутреннюю память, если внешний носитель недоступен или заполнен. После установки пользователь может переместить приложение во внутреннее или внешнее хранилище через настройки системы.

Примечание. По умолчанию ваше приложение устанавливается во внутреннее хранилище и не может быть установлено во внешнее хранилище, если вы не определите для этого атрибута значение "auto" или "preferExternal" .

Когда приложение устанавливается на внешнее хранилище:

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

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

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

Представлено в: уровень API 8.

представлено в:
Уровень API 1 для всех атрибутов, если в описании атрибута не указано иное.

см. также:
<application>