<manifest>

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

contenuto in:
nessuno

deve contenere:
<application>
può contenere:
<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>

description:
L'elemento principale del file AndroidManifest.xml. Deve contenere un elemento <application> e specificare gli attributi xmlns:android e package.
:
xmlns:android
Definisce lo spazio dei nomi Android. Questo attributo è sempre impostato su "http://schemas.android.com/apk/res/android".
package
Il valore dell'attributo package nel file manifest dell'APK rappresenta l'ID applicazione univoco universale della tua app. È formattato come il nome completo del pacchetto in stile Java per l'app per Android. Il nome può contenere lettere maiuscole o minuscole, numeri e trattini bassi ("_"). Tuttavia, le singole parti del nome del pacchetto possono iniziare solo con lettere.

Fai attenzione a non modificare il valore package, poiché questo sostanzialmente crea una nuova app. Gli utenti della versione precedente dell'app non ricevono un aggiornamento e non possono trasferire i propri dati tra la versione precedente e quella nuova.

Nel sistema di compilazione basato su Gradle, a partire da AGP 7.3, non impostare il valore package direttamente nel file manifest di origine. Per ulteriori informazioni, consulta la sezione Impostare l'ID applicazione.

android:sharedUserId

Questa costante è deprecata a partire dal livello API 29.
Gli ID utente condivisi causano comportamenti non deterministici all'interno del gestore di pacchetti. Pertanto, il loro utilizzo è fortemente sconsigliato e potrebbe essere rimosso in una versione futura di Android. Utilizza invece meccanismi di comunicazione adeguati, come servizi e fornitori di contenuti, per facilitare l'interoperabilità tra i componenti condivisi. Le app esistenti non possono rimuovere questo valore, perché la migrazione da un ID utente condiviso non è supportata. In queste app, aggiungi android:sharedUserMaxSdkVersion="32" per evitare di utilizzare ID utente condiviso per le installazioni di nuovi utenti.

Il nome di un ID utente Linux condiviso con altre app. Per impostazione predefinita, Android assegna a ogni app un proprio ID utente univoco. Tuttavia, se questo attributo viene impostato sullo stesso valore per due o più app, condividono tutte lo stesso ID, a condizione che i relativi set di certificati siano identici. Le app con lo stesso ID utente possono accedere ai dati delle altre app e, se vogliono, essere eseguite nello stesso processo.

android:targetSandboxVersion
La sandbox target per questa app. Più elevato è il numero di versione della sandbox, più alto è il livello di sicurezza. Il suo valore predefinito è 1. Puoi anche impostarlo su 2. Se questo attributo è impostato su 2, l'app viene trasferita a una sandbox SELinux diversa.

A una sandbox di livello 2 si applicano le seguenti limitazioni:

  • Il valore predefinito di usesCleartextTraffic in Network Security Config è false.
  • La condivisione dell'UID non è consentita.

Per le app istantanee Android che hanno come target Android 8.0 (livello API 26) o versioni successive, questo attributo è impostato su 2. Nella versione installata dell'app puoi impostare il livello di sandbox sul livello 1 meno restrittivo. Tuttavia, se lo fai, l'app non memorizza i dati dell'app dall'app istantanea alla versione installata. Devi impostare il valore della sandbox dell'app installata su 2 affinché i dati vengano mantenuti dall'app istantanea alla versione installata.

Dopo aver installato un'app, puoi aggiornare solo il valore della sandbox target impostando un valore superiore. Per eseguire il downgrade del valore della sandbox target, disinstalla l'app e sostituiscila con una versione il cui file manifest contiene un valore inferiore per questo attributo.

android:sharedUserLabel

Questa costante è deprecata a partire dal livello API 29.
Gli ID utente condivisi causano comportamenti non deterministici all'interno del gestore di pacchetti. Pertanto, il loro utilizzo è fortemente sconsigliato e potrebbe essere rimosso in una versione futura di Android. Utilizza invece meccanismi di comunicazione adeguati, come servizi e fornitori di contenuti, per facilitare l'interoperabilità tra i componenti condivisi. Le app esistenti non possono rimuovere questo valore, perché la migrazione da un ID utente condiviso non è supportata.

Un'etichetta leggibile per l'ID utente condiviso. L'etichetta è impostata come riferimento a una risorsa stringa. Non può essere una stringa non elaborata.

Questo attributo è stato introdotto nel livello API 3. È significativo solo se è impostato anche l'attributo sharedUserId.

android:sharedUserMaxSdkVersion

Gli ID utente condivisi causano comportamenti non deterministici all'interno del gestore di pacchetti. Pertanto, il loro utilizzo è fortemente sconsigliato e potrebbe essere rimosso in una versione futura di Android. Utilizza invece meccanismi di comunicazione adeguati, come servizi e fornitori di contenuti, per facilitare l'interoperabilità tra i componenti condivisi.

La versione massima dell'SDK in cui il sistema utilizza ancora android:sharedUserId. Se la tua app è stata appena installata su un dispositivo con una versione dell'SDK successiva al valore specificato, si comporta come se non avessi mai definito android:sharedUserId.

Questo attributo è stato introdotto nel livello API 33. È significativo solo se è impostato anche l'attributo sharedUserId.

android:versionCode
Un numero di versione interno. Questo numero viene utilizzato soltanto per determinare se una versione è più recente di un'altra, con numeri più alti che indicano le versioni più recenti. Questo non è il numero di versione mostrato agli utenti, che viene impostato dall'attributo versionName.

Il valore è impostato come un numero intero positivo maggiore di 0. Puoi definire come preferisci, purché ogni versione successiva abbia un numero maggiore. Ad esempio, può essere un numero di build oppure puoi tradurre un numero di versione in formato "x.y" in un numero intero codificando "x" e "y" separatamente nei 16 bit inferiore e superiore. In alternativa, puoi aumentare il numero di uno ogni volta che viene rilasciata una nuova versione.

android:versionName
Il numero di versione mostrato agli utenti. Questo attributo è impostato come stringa non elaborata o come riferimento a una risorsa stringa. La stringa non ha altro scopo che mostrare agli utenti. L'attributo versionCode contiene il numero di versione significativo utilizzato internamente.
android:installLocation
Il percorso di installazione predefinito per l'app. Sono accettate le seguenti stringhe di parole chiave:

Valore Descrizione
"internalOnly" L'app viene installata solo nella memoria interna del dispositivo. Se questa impostazione è impostata, l'app non viene mai installata su unità di archiviazione esterne, ad esempio una scheda SD. Se la memoria interna è piena, il sistema non installa l'app. Questo è il comportamento predefinito se non definisci android:installLocation.
"auto" L'app può essere installata nella memoria esterna, ma il sistema la installa nella memoria interna per impostazione predefinita. Se la memoria interna è piena, il sistema la installa nella memoria esterna. Dopo averla installata, l'utente può spostare l'app nella memoria interna o esterna tramite le impostazioni di sistema.
"preferExternal" L'app preferisce essere installata su un dispositivo di archiviazione esterno. Non possiamo garantire che il sistema rispetti questa richiesta. L'app potrebbe essere installata nella memoria interna se il supporto esterno non è disponibile o è pieno. Dopo averla installata, l'utente può spostare l'app nella memoria interna o esterna tramite le impostazioni di sistema.

Nota: per impostazione predefinita, la tua app viene installata nella memoria interna e non può essere installata su unità di archiviazione esterna a meno che non definisci questo attributo come "auto" o "preferExternal".

Quando un'app viene installata su un'unità di archiviazione esterna:

  • Il file APK viene salvato nella memoria esterna, ma tutti i dati delle app, ad esempio i database, vengono comunque salvati nella memoria interna del dispositivo.
  • Il contenitore in cui è salvato il file APK è criptato con una chiave che consente all'app di funzionare solo sul dispositivo su cui è installata. L'utente non può trasferire la scheda SD su un altro dispositivo e utilizzare le app installate sulla scheda. Con lo stesso dispositivo puoi utilizzare più schede SD.
  • Su richiesta dell'utente, l'app può essere spostata nella memoria interna.

L'utente potrebbe anche richiedere di spostare un'app dalla memoria interna a quella esterna. Tuttavia, il sistema non consente all'utente di spostare l'app nella memoria esterna se questo attributo è impostato su "internalOnly", che è l'impostazione predefinita.

Per ulteriori informazioni sull'utilizzo di questo attributo, incluso come mantenere la compatibilità con le versioni precedenti, consulta la sezione Percorso di installazione dell'app.

Introdotta in: livello API 8.

introdotto in:
Livello API 1 per tutti gli attributi, se non diversamente specificato nella descrizione dell'attributo.

consulta anche:
<application>