<manifest>

sintaxis:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="string"
              android:sharedUserId="string"
              android:sharedUserLabel="string resource" 
              android:versionCode="integer"
              android:versionName="string"
              android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
        . . .
    </manifest>

se incluye en:
ninguna

debe incluir:
<application>
puede contener:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<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 debe estar configurado en "http://schemas.android.com/apk/res/android".
package
Un nombre completo de paquete de estilo de lenguaje Java para la app para Android. El nombre puede contener letras mayúsculas o minúsculas (de la "A" a la "Z"), números y guiones bajos ("_"). Sin embargo, las partes sueltas del nombre de paquetes individuales solo pueden comenzar con letras.

Cuando compilas tu aplicación en un paquete de la aplicación (APK), el sistema de compilación utiliza el atributo package con dos propósitos:

  • Aplica este nombre como el espacio de nombres para la clase R.java generada en tu app (que se usa para acceder a los recursos de tu app).

    Por ejemplo, si package se configura como "com.example.myapp", se crea la clase R en com.example.myapp.R.

  • Utiliza este nombre para resolver cualquier nombre de clase relativo que se declare en el archivo de manifiesto.

    Por ejemplo, si se configura package como "com.example.myapp", se determina que una actividad declarada como <activity android:name=".MainActivity"> es com.example.myapp.MainActivity.

Este nombre también es el predeterminado para el proceso de tu aplicación (consulta el atributo process del elemento <application>). Y es la afinidad predeterminada de la tarea para tus actividades (consulta el atributo taskAffinity del elemento <activity>).

Este nombre también representa el ID de la aplicación, que debe ser único a nivel universal para publicar tu aplicación en Google Play. Sin embargo, hacia el final del proceso de compilación de APK, las herramientas de compilación anulan el nombre package usando la propiedad applicationId del archivo build.gradle (utilizado por los proyectos de Android  Studio). Siempre y cuando mantengas el nombre package del manifiesto igual al archivo de compilación applicationId, no tendrás problemas. Pero si estos dos valores difieren, consulta cómo configurar el ID de la aplicación para comprender las diferencias que hay entre el "nombre del paquete" y el "ID de la aplicación".

Para evitar conflictos con otros desarrolladores, tienes que utilizar la propiedad del dominio de Internet como base para los nombres de tus paquetes (a la inversa). Por ejemplo, las aplicaciones publicadas por Google comienzan con com.google.

Nota: Google Play prohíbe los espacios de nombres com.example y com.android.

Si deseas cambiar el nombre de tu paquete después de publicar tu aplicación, puedes hacerlo, pero no debes modificar el applicationId. applicationId define la identidad única de tu app en Google Play. Por lo tanto, si lo cambias, se considerará que el APK es una app diferente, y los usuarios de la versión anterior no recibirán una actualización. Para obtener más información, consulta cómo configurar el ID de la aplicación.

android:sharedUserId

Esta constante dejó de estar disponible a partir de la API nivel 29.
Los ID de usuario compartidos generan comportamientos no deterministas en el administrador de paquetes. Por lo tanto, se desaconseja su uso y es posible que se quiten en una versión futura de Android. En su lugar, las aplicaciones deberían usar mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre componentes compartidos.

El nombre de un ID de usuario de Linux que se compartirá con otras aplicaciones. De manera predeterminada, Android asigna a cada app su propio ID de usuario único. Sin embargo, si este atributo tiene el mismo valor para dos o más aplicaciones, 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 aplicación 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 permite compartir UID.

Para las Apps instantáneas Android orientadas a Android 8.0 (API nivel 26) o superior, este atributo debe configurarse en 2. Puedes configurar el nivel de la zona de pruebas en la versión instalada de tu app al nivel 1, el menos restrictivo, pero 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, tienes que desinstalar la app y reemplazarla 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 de la API nivel 29.
Los ID de usuario compartidos generan comportamientos no deterministas en el administrador de paquetes. Por lo tanto, se desaconseja su uso y es posible que se quiten en una versión futura de Android. En su lugar, las aplicaciones deberían usar mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre componentes compartidos.

Es una etiqueta legible por el usuario para la ID de usuario compartida. La etiqueta se debe configurar como una referencia a un recurso de string; no puede ser una string sin procesar.

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

android:versionCode
Es un número de versión interno. Solo se usa 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; ese número lo establece el atributo versionName.

El valor se debe configurar como un número entero, por ejemplo, "100". Puedes definirlo como quieras, siempre y cuando cada versión posterior tenga un número más alto. Por ejemplo, podría ser un número de compilación. O puedes traducir un número de versión en formato ".xy" a un entero codificando "x" e "y" por separado en los 16 bits inferiores y superiores. O simplemente 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 puede configurar como una string sin procesar o como una referencia a un recurso de string. La string no tiene otro propósito que el de mostrarse 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 aplicación.

Se aceptan las siguientes strings de palabras clave:

Valor Descripción
"internalOnly" La aplicación debe instalarse solo en el almacenamiento interno del dispositivo. Si esta opción está configurada, nunca se instalará la aplicación en el almacenamiento externo. Si el almacenamiento interno está lleno, el sistema no instalará la app. Este es el comportamiento predeterminado si no defines android:installLocation.
"auto" La aplicación puede instalarse en el almacenamiento externo, pero el sistema la instalará en el almacenamiento interno de forma predeterminada. Si el almacenamiento interno está lleno, entonces, el sistema lo instalará en el almacenamiento externo. Una vez instalada, el usuario puede moverla al almacenamiento interno o externo mediante la configuración del sistema.
"preferExternal" La app prefiere instalarse en el almacenamiento externo (tarjeta SD). No hay garantía de que el sistema cumpla con 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, tu app se instalará en el almacenamiento interno. No se puede instalar en el almacenamiento externo a menos que definas este atributo como "auto" o "preferExternal".

Cuando se instala una app en el almacenamiento externo:

  • El archivo .apk se guarda en el almacenamiento externo, pero los datos de la app (como las bases de datos) aún se guardan en la memoria interna del dispositivo.
  • El contenedor en el que se guarda el archivo .apk está encriptado con una clave que permite que la app funcione solo en el dispositivo que la instaló. (Un usuario no puede transferir la tarjeta SD a otro dispositivo y usar apps instaladas en la tarjeta). 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 permitirá moverla al almacenamiento externo si este atributo está configurado como internalOnly, que es la configuración predeterminada.

Lee Ubicación de instalación de la app para obtener más información sobre el uso de este atributo (incluida la explicación sobre cómo mantener la retrocompatibilidad).

Introducido en: Nivel de API 8.

primera inclusión:
API nivel 1 para todos los atributos, a menos que se indique lo contrario en la descripción del atributo.

consulta también:
<application>