Sintaxis:
Contenido en: ninguno debe contener: <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: El elemento raíz del archivo AndroidManifest.xml. Debe contener un elemento <application>
y especificar los atributos xmlns:android
y package
xmlns:android
Define el espacio de nombres de Android. Este atributo debe establecerse siempre en «package
Un nombre de paquete completo en lenguaje Java para la aplicación Android. El nombre puede contener letras mayúsculas o minúsculas (‘A’ a ‘Z’), números y guiones bajos (‘_’). Sin embargo, las partes individuales del nombre del paquete sólo pueden comenzar con letras.
Mientras construye su aplicación en el paquete de una aplicación (APK), el sistema de construcción utiliza el atributo package
para dos cosas:
- Aplica este nombre como el espacio de nombres para la clase
R.java
generada por su aplicación (utilizada para acceder a los recursos de su aplicación).Por ejemplo, si
package
se establece en"com.example.myapp"
, la claseR
se crea encom.example.myapp.R
. - Usa este nombre para resolver cualquier nombre de clase relativo que se declare en el archivo de manifiesto.
Por ejemplo, si
package
se establece como"com.example.myapp"
, una actividad declarada como<activity android:name=".MainActivity">
se resuelve comocom.example.myapp.MainActivity
.
Este nombre es también el nombre por defecto del proceso de tu app (ver el atributo <application>
del elemento process
). Y es la afinidad de la tarea por defecto para tus actividades (ver el atributo<activity>
del elementotaskAffinity
).
Este nombre también representa el ID de la aplicación, que debe ser universalmente único para poder publicar tu app en Google Play. Sin embargo, hacia el final del proceso de construcción del APK, las herramientas de construcción anulan el nombre package
utilizando la propiedad applicationId
del archivo build.gradle
(utilizado por Android Studioprojects). Mientras mantengas el nombre del manifiesto package
igual que el del archivo de compilaciónapplicationId
, esto no será un problema. Pero si estos dos valores difieren, deberías entender las diferencias entre el «nombre del paquete» y el «ID de la aplicación» leyendo cómo establecer el ID de la aplicación.
Para evitar conflictos con otros desarrolladores, deberías 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 concom.google
.
Nota: Tanto el com.example
como el com.android
nombres están prohibidos por Google Play.
Si quieres cambiar el nombre de tu paquete después de publicar tu aplicación, puedes hacerlo, pero debes mantener el applicationId
igual. El applicationId
define la identidad única de tu aplicación en Google Play. Por lo tanto, si lo cambias, el APK se considera una aplicación diferente y los usuarios de la versión anterior no recibirán una actualización. Para obtener más información, consulte cómo establecer el ID de la aplicación.
android:sharedUserId
Esta constante quedó obsoleta en el nivel 29 de la API.
Los ID de usuario compartidos provocan un comportamiento no determinista dentro del gestor de paquetes. Como tal, su uso es fuertemente desaconsejado y puede ser eliminado en una futura versión de Android. En su lugar, las aplicaciones deberían utilizar mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre los componentes compartidos. Tenga en cuenta que las aplicaciones existentes no pueden eliminar este valor, ya que no se admite la migración de un ID de usuario compartido.
El nombre de un ID de usuario de Linux que se compartirá con otras aplicaciones.Por defecto, Android asigna a cada aplicación su propio y único ID de usuario.Sin embargo, si este atributo se establece con el mismo valor para dos o más aplicaciones, todas ellas compartirán el mismo ID – siempre que sus conjuntos de certificados sean idénticos. Las aplicaciones con el mismo ID de usuario pueden acceder a los datos de las demás y, si lo desean, ejecutarse en el mismo proceso.
android:targetSandboxVersion
El sandbox de destino que utilizará esta aplicación. Cuanto mayor sea el número de versión del sandbox, mayor será el nivel de seguridad.Su valor por defecto es1
; también se puede establecer en2
.Establecer este atributo a2
cambia la aplicación a una caja de arena SELinux diferente.
Las siguientes restricciones se aplican a una caja de arena de nivel 2:
- El valor por defecto de
usesCleartextTraffic
en la configuración de seguridad de la red es falso. - No se permite compartir el ID.
- El archivo
.apk
se guarda en el almacenamiento externo, pero cualquier dato de la aplicación (como las bases de datos) se sigue guardando 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 aplicación funcione sólo en el dispositivo que la instaló. (Un usuario no puede transferir la tarjeta SD a otro dispositivo y utilizar las aplicaciones instaladas en la tarjeta). Aunque, se pueden utilizar varias tarjetas SD con el mismo dispositivo. - A petición del usuario, la app se puede mover al almacenamiento interno.
Para las aplicaciones instantáneas de Android destinadas a Android 8.0 (nivel de API 26) o superior, este atributo debe establecerse en 2. Puede establecer el nivel de sandbox en la versión instalada de su aplicación en el nivel 1, menos restrictivo, pero si lo hace, su aplicación no persiste los datos de la aplicación instantánea en la versión instalada de su aplicación. Debe establecer el valor de sandbox de la aplicación instalada en 2 para que los datos persistan desde la aplicación instantánea a la versión instalada.
Una vez que una aplicación está instalada, solo puede actualizar su valor de sandbox de destino a un valor superior.Para rebajar el valor de la caja de arena de destino, debe desinstalar la aplicación y sustituirla por una versión cuyo manifiesto contenga un valor inferior para este atributo.
android:sharedUserLabel
Esta constante quedó obsoleta en el nivel 29 de la API.
Los ID de usuario compartidos provocan un comportamiento no determinista dentro del gestor de paquetes. Como tal, su uso es fuertemente desaconsejado y puede ser eliminado en una futura versión de Android. En su lugar, las aplicaciones deberían utilizar mecanismos de comunicación adecuados, como servicios y proveedores de contenido, para facilitar la interoperabilidad entre los componentes compartidos. Tenga en cuenta que las aplicaciones existentes no pueden eliminar este valor, ya que no se admite la migración de un ID de usuario compartido.
Una etiqueta legible por el usuario para el ID de usuario compartido. La etiqueta debe establecerse como una referencia a un recurso de cadena; no puede ser una cadena sin procesar.
Este atributo se introdujo en el nivel 3 de la API. Sólo tiene sentido si el atributo sharedUserId
también está establecido.
android:versionCode
Un número de versión interno. Este número se utiliza sólo para determinar si una versión es más reciente que otra, con números más altos que 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 debe establecerse como un número entero, como «100». Puedes definirlo como quieras, siempre que cada versión sucesiva tenga un número mayor. Por ejemplo, podría ser un número de compilación. O podría traducir un número de versión en formato «x.y» a un número entero codificando la «x» y la «y» por separado en los 16 bits inferiores y superiores. O simplemente podrías aumentar el número en uno cada vez que se publique una nueva versión.
android:versionName
El número de versión que se muestra a los usuarios. Este atributo puede establecerse como una cadena en bruto o como una referencia a un recurso de cadena. La cadena no tiene otro propósito que el de ser mostrada a los usuarios. El atributo versionCode
contiene el número de versión significativo utilizado internamente. android:installLocation
La ubicación de instalación por defecto de la aplicación.
Se aceptan las siguientes cadenas de palabras clave:
Valor | Descripción |
---|---|
«internalOnly « |
La aplicación debe instalarse únicamente en el almacenamiento interno del dispositivo. Si se establece esto, la aplicación nunca se instalará en el almacenamiento externo. Si el almacenamiento interno está lleno, el sistema no instalará la aplicación. Este es también el comportamiento predeterminado si no se define android:installLocation . |
«auto « |
La aplicación puede instalarse en el almacenamiento externo, pero el sistema la instalará en el almacenamiento interno por defecto. Si el almacenamiento interno está lleno, el sistema lo instalará en el almacenamiento externo. Una vez instalada, el usuario puede mover la aplicación al almacenamiento interno o externo a través de la configuración del sistema. |
«preferExternal « |
La aplicación prefiere instalarse en el almacenamiento externo (tarjeta SD). No hay garantía de que el sistema respete esta petición. La aplicación podría instalarse en el almacenamiento interno si el medio externo no está disponible o está lleno. Una vez instalada, el usuario puede mover la app al almacenamiento interno o externo a través de los ajustes del sistema. |
Nota: Por defecto, tu 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 aplicación se instala en el almacenamiento externo:
El usuario también puede solicitar mover una app del almacenamiento interno al externo. Sin embargo, el sistema no permitirá que el usuario mueva la app al almacenamiento externo si este atributo está configurado como internalOnly
, que es la configuración predeterminada.
Lea App Install Location para obtener más información sobre el uso de este atributo (incluido cómo mantener la compatibilidad con versiones anteriores).
Introducido en: Nivel de API 8.
Introducido en: Nivel de API 1 para todos los atributos, a menos que se indique lo contrario en la descripción del atributo. véase también: <application>