<manifiesto>

sintaxis:
<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>

se incluye en:
ninguno

debe incluir:
<application>
puede contener:
<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>

descripción:
Es el elemento raíz del archivo AndroidManifest.xml. Debe contener un elemento <application> y especificar los atributos xmlns:android y package.
atributos:
xmlns:android
Define el espacio de nombres de Android. Este atributo siempre está establecido en "http://schemas.android.com/apk/res/android".
package
El valor del atributo package en el archivo de manifiesto del APK representa el ID de aplicación único de tu app. Es un nombre completo de paquete de estilo Java de la app para Android. El nombre puede contener letras mayúsculas o minúsculas, números y guiones bajos ('_'). Sin embargo, las partes individuales del nombre del paquete solo pueden comenzar con letras.

Debes tener cuidado de no cambiar el valor package ya que eso crea una nueva app, y los usuarios de la versión anterior no recibirán una actualización ni podrán transferir sus datos entre la versión nueva y la anterior.

En el sistema de compilación basado en Gradle, a partir de AGP 7.3, no debes configurar el valor package directamente en el archivo de manifiesto de origen. Para obtener más información, consulta Cómo configurar el ID de aplicación.

android:sharedUserId

Esta constante dejó de estar disponible a partir del nivel de API 29.
Los IDs de usuario compartidos generan comportamientos no determinístico en el administrador de paquetes. Por lo tanto, no se recomienda para nada su uso, y es posible que se quiten en una versión futura de Android. En su lugar, usa mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre componentes compartidos. Las apps existentes no pueden quitar este valor, ya que no se admite la migración desde un ID del usuario compartido. En estas apps, agrega android:sharedUserMaxSdkVersion="32" para evitar el uso del ID del usuario compartido en instalaciones de usuarios nuevos.

El nombre de un ID del usuario de Linux que se comparte con otras apps. De manera predeterminada, Android asigna a cada app su propio ID del usuario único. Sin embargo, si este atributo tiene el mismo valor para dos o más apps, todas compartirán el mismo ID, siempre que sus conjuntos de certificados sean idénticos también. Las apps con el mismo ID de usuario pueden acceder a los datos del otro y, si lo desean, ejecutarse en el mismo proceso.

android:targetSandboxVersion
El entorno limitado de destino para esta aplicación. Cuanto mayor sea el número de la versión de la zona de pruebas, mayor será el nivel de seguridad. Su valor predeterminado es 1; también puedes configurarlo como 2. Configurar este atributo en 2 cambia la app a otra zona de pruebas de SELinux.

Las siguientes restricciones se aplican a una zona de pruebas de nivel 2:

  • El valor predeterminado de usesCleartextTraffic en la configuración de seguridad de red es falso.
  • No se puede compartir UIDs.

Para Apps instantáneas Android que se orienten a Android 8.0 (nivel de API 26) o versiones posteriores, este atributo se establece en 2. Puedes establecer el nivel de la zona de pruebas en la versión instalada de tu app al nivel 1, que es menos restrictivo. Si lo haces, no se conservarán los datos de la app instantánea. Debes configurar el valor de la zona de pruebas de la app instalada en 2 para que los datos se mantengan desde la app instantánea hasta la versión instalada.

Una vez que se instala la app, solo puedes actualizar el valor de la zona de pruebas objetivo a un valor más alto. Para cambiar el valor de la zona de pruebas objetivo a uno menor, desinstala la app y reemplázala con una versión cuyo manifiesto incluya un valor más bajo para este atributo.

android:sharedUserLabel

Esta constante dejó de estar disponible a partir del nivel de API 29.
Los IDs de usuario compartidos generan comportamientos no determinístico en el administrador de paquetes. Por lo tanto, no se recomienda para nada su uso, y es posible que se quiten en una versión futura de Android. En su lugar, usa mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre componentes compartidos. Las apps existentes no pueden quitar este valor, ya que no se admite la migración desde un ID del usuario compartido.

Es una etiqueta legible por el usuario para el ID del usuario compartida. Esta se establece como referencia para un recurso de cadenas. No puede ser una cadena sin procesar.

Este atributo se introdujo en el nivel de API 3. Tiene sentido solo si también se configura el atributo sharedUserId.

android:sharedUserMaxSdkVersion

Los IDs del usuario compartidos generan comportamientos no deterministas en el administrador de paquetes. Por lo tanto, no se recomienda para nada su uso, y es posible que se quiten en una versión futura de Android. En su lugar, usa mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre componentes compartidos.

La versión máxima del SDK en la que el sistema aún usa android:sharedUserId. Si tu app se instala por primera vez en un dispositivo que ejecuta una versión del SDK mayor que el valor especificado, se comportará como si nunca hubieses definido android:sharedUserId.

Este atributo se introdujo en el nivel de API 33. Tiene sentido solo si también se configura el atributo sharedUserId.

android:versionCode
Es un número de versión interno. Solo se utiliza para determinar si una versión es más reciente que otra; los números más altos indican versiones más recientes. Este no es el número de versión que se muestra a los usuarios, que se establece con el atributo versionName.

El valor se establece como un número entero positivo mayor que 0. Puedes definirlo como quieras, siempre y cuando cada versión posterior tenga un número más alto. Por ejemplo, puede ser un número de compilación, o bien puedes traducir un número de versión en formato "x.y" a un valor entero codificando "y" y "x" por separado en los 16 bits superiores y los inferiores. También puedes aumentar el número en uno cada vez que se lanza una nueva versión

android:versionName
El número de versión que se muestra a los usuarios. Este atributo se establece como una cadena sin procesar o como referencia a un recurso de cadenas. La cadena no tiene otro propósito que mostrase a los usuarios. El atributo versionCode contiene el número de versión significativo utilizado internamente.
android:installLocation
Es la ubicación de instalación predeterminada para la app. Se aceptan las siguientes palabras clave de cadena:

Valor Descripción
"internalOnly" La app se instala solo en el almacenamiento interno del dispositivo. Si se establece ese valor, la app nunca se instalará en un almacenamiento externo, como una tarjeta SD. Si el almacenamiento interno está lleno, el sistema no instalará la app. Este es el comportamiento predeterminado si no defines android:installLocation.
"auto" La app puede instalarse en un almacenamiento externo, pero el sistema la instalará en el interno de manera predeterminada. Si el almacenamiento interno está lleno, el sistema la instala en el externo. Una vez instalada, el usuario puede moverla al almacenamiento interno o externo desde la configuración del sistema.
"preferExternal" La app prefiere instalarse en el almacenamiento externo. No hay garantía de que el sistema respete esta solicitud. Es posible que la app esté instalada en el almacenamiento interno si el externo no está disponible o está completo. Una vez instalada, el usuario puede moverla al almacenamiento interno o externo desde la configuración del sistema.

Nota: De manera predeterminada, la app se instalará en el almacenamiento interno y no podrá instalarse en el externo a menos que definas este atributo como "auto" o "preferExternal".

Cuando una app se instala en un almacenamiento, ocurre lo siguiente:

  • El archivo APK se guarda en el almacenamiento externo, pero los datos de la app, como las bases de datos, aún se guardarán en la memoria interna del dispositivo.
  • El contenedo en el que se guarda el archivo APK se encripta con una clave que permite que la app funcione solo en el dispositivo que la instaló. El usuario no puede transferir la tarjeta SD a otro dispositivo y usar las apps instaladas en ella. Sin embargo, es posible usar varias tarjetas SD con el mismo dispositivo.
  • A pedido del usuario, la app se puede mover al almacenamiento interno.

El usuario también puede solicitar mover una app del almacenamiento interno al externo. Sin embargo, el sistema no le permite al usuario mover la app al almacenamiento externo si este atributo se establece en "internalOnly", que es la opción predeterminada.

Para obtener más información sobre cómo usar este atributo, y cómo mantener retrocompatibilidad, consulta Ubicación de la instalación de la app.

Introducción: Nivel de API 8.

Introducción:
Nivel de API 1 para todos los atributos, a menos que se indique lo contrario en la descripción del atributo.

Consulta también:
<application>