<manifest>

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

contido em:
nenhum

precisa conter:
<application>
pode conter:
<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>

descrição:
O elemento raiz do arquivo AndroidManifest.xml. Ele deve contêm um elemento <application>. e especificar os atributos xmlns:android e package.
atributos:
xmlns:android
Define o namespace do Android. Esse atributo é sempre definido para "http://schemas.android.com/apk/res/android".
package
O valor do atributo package no arquivo de manifesto do APK representa o ID exclusivo universal do app. Ele é formatado como uma linguagem Java nome do pacote do app Android. O nome pode conter letras maiúsculas e minúsculas, números, e sublinhados ('_'). No entanto, as partes do nome do pacote só podem começar com letras

Tenha cuidado para não mudar o valor package, porque ele essencialmente cria um novo aplicativo. Os usuários da versão anterior do app não recebem uma atualização nem podem transferir os dados entre a versão antiga e a nova.

No sistema de build baseado em Gradle, a partir do AGP 7.3, não defina o valor package diretamente no arquivo de manifesto de origem. Para mais informações, consulte Definir o ID do aplicativo.

android:sharedUserId

Essa constante foi descontinuada no nível 29 da API.
Os IDs de usuário compartilhados causam um comportamento não determinista no gerenciador de pacotes. Sendo assim, o uso deles é não recomendado e pode ser removido em uma versão futura do Android. Em vez disso, use mecanismos adequados de comunicação, como serviços e provedores de conteúdo, para facilitar e a interoperabilidade entre componentes compartilhados. Os apps existentes não podem remover esse valor, porque Não é possível migrar um ID do usuário compartilhado. Nesses apps, adicione android:sharedUserMaxSdkVersion="32" para evitar o uso ID do usuário em novas instalações de usuário.

O nome de um ID do usuário do Linux que é compartilhado com outros apps. Por padrão, o Android atribui a cada app o próprio ID de usuário único. No entanto, se este atributo for definido com o mesmo valor para dois ou mais eles compartilham o mesmo ID, desde que os conjuntos de certificados são idênticos. Apps com o mesmo ID de usuário podem acessar os dados uns dos outros e, se desejado, ser executados no mesmo processo.

android:targetSandboxVersion
O sandbox de destino que vai ser usado por este app. Quanto maior o número da versão do sandbox, maior o nível de segurança. O valor padrão é 1. Você também pode o definir como 2. A definição desse atributo como 2 alterna o app para outro sandbox SELinux.

As restrições a seguir se aplicam a um sandbox de nível 2:

  • O valor padrão de usesCleartextTraffic na configuração de segurança da rede é falso.
  • O compartilhamento de Uid não é permitido.

Para Apps instantâneos Android destinados ao Android 8.0 (nível 26 da API) ou versões mais recentes, esse atributo é definido como 2. Você pode definir o nível do sandbox na versão instalada do seu app para a configuração menos restritiva nível 1. No entanto, se você fizer isso, os dados do app instantâneo não serão mantidos no versão instalada do seu app. Defina o valor do sandbox do app instalado como 2 para que os dados do app instantâneo sejam mantidos na versão instalada.

Depois que um app for instalado, você só pode atualizar o sandbox de destino para um valor mais alto. Para fazer downgrade do valor do sandbox de destino, desinstale o app. e o substitua por uma versão cujo manifesto contenha um valor menor para esse atributo.

android:sharedUserLabel

Essa constante foi descontinuada no nível 29 da API.
Os IDs de usuário compartilhados causam um comportamento não determinista no gerenciador de pacotes. Sendo assim, o uso deles é não recomendado e pode ser removido em uma versão futura do Android. Em vez disso, use mecanismos adequados de comunicação, como serviços e provedores de conteúdo, para facilitar e a interoperabilidade entre componentes compartilhados. Os apps existentes não podem remover esse valor, porque Não é possível migrar um ID do usuário compartilhado.

Um rótulo legível pelo usuário para o ID de usuário compartilhado. O rótulo é definido como uma referência a um recurso de string. Não pode ser uma string bruta.

Esse atributo foi introduzido no nível 3 da API. Ele só vai ser significativo se o atributo sharedUserId também estiver definido.

android:sharedUserMaxSdkVersion

Os IDs de usuário compartilhados causam um comportamento não determinista no gerenciador de pacotes. Sendo assim, o uso deles é não recomendado e pode ser removido em uma versão futura do Android. Em vez disso, use mecanismos adequados de comunicação, como serviços e provedores de conteúdo, para facilitar e a interoperabilidade entre componentes compartilhados.

A versão máxima do SDK em que o sistema ainda usa android:sharedUserId. Se as app for instalado recentemente em um dispositivo com uma versão do SDK mais recente que o valor especificado, se comporta como se você nunca tivesse definido android:sharedUserId.

Esse atributo foi introduzido no nível 33 da API. Ele só vai ser significativo se o atributo sharedUserId também estiver definido.

android:versionCode
Um número de versão interno. Esse número é usado apenas para determinar se uma versão é mais recente que outra. Números maiores indicam versões mais recentes. Esse não é o número da versão mostrado aos usuários, o que é definido pelo atributo versionName.

O valor é definido como um número inteiro positivo maior que zero. Você pode o definir como quiser, desde que cada versão sucessiva tenha um número maior. Por exemplo, pode ser um número de versão, ou é possível traduzir uma versão número em "x.y" para um número inteiro codificando o "x" e "y" separadamente os 16 bits mais baixos e mais altos. Ou você pode aumentar o número em um sempre que uma nova versão é lançada.

android:versionName
O número da versão exibido aos usuários. Esse atributo é definido como um valor bruto ou como uma referência a um recurso de string. A string não tem outra finalidade do que exibir aos usuários. O atributo versionCode é o número de versão significativo usado internamente.
android:installLocation
O local de instalação padrão do app. As seguintes strings de palavras-chave são aceitas:

Valor Descrição
"internalOnly" O app é instalado somente no armazenamento interno do dispositivo. Se esse valor estiver definido, O app nunca é instalado em um armazenamento externo, como um cartão SD. Se o sistema o armazenamento estiver cheio, o sistema não vai instalar o app. Esse é o comportamento padrão se você não definir android:installLocation.
"auto" O app pode ser instalado no armazenamento externo, mas o sistema instala o no armazenamento interno por padrão. Se o armazenamento interno estiver cheio, o sistema o instala no armazenamento externo. Depois de instalado, o usuário pode mover o app para o armazenamento interno ou externo usando as configurações do sistema.
"preferExternal" É preferível instalar o app em um armazenamento externo. Não há garantir que o sistema atenda a essa solicitação. O app pode ser instalado em dispositivos o armazenamento se a mídia externa estiver indisponível ou cheia. Depois de instalado, o usuário pode mover o app para o armazenamento interno ou externo nas configurações do sistema.

Observação:por padrão, o app é instalado em armazenamento interno e não pode ser instalado em armazenamento externo, a menos que você defina este atributo como "auto" ou "preferExternal".

Quando um app é instalado no armazenamento externo:

  • O arquivo APK foi salvo ao armazenamento externo, mas todos os dados do app, como bancos de dados, ainda são salvos a memória interna do dispositivo.
  • O contêiner em que o arquivo APK é salvo é criptografado com uma chave que permite o app só funciona no dispositivo em que ele foi instalado. O usuário não pode transferir o cartão SD para outro dispositivo e usar os apps instalados no cartão. Vários cartões SD podem ser usados no mesmo dispositivo.
  • A pedido do usuário, o app pode ser movido para o armazenamento interno.

O usuário também pode pedir para mover um app do armazenamento interno para o externo armazenamento. No entanto, o sistema não vai permitir que o usuário mova o app para um armazenamento externo se esse atributo é definido como "internalOnly", que é a configuração padrão.

Para mais informações sobre como usar esse atributo, incluindo como manter a compatibilidade com versões anteriores, consulte Local de instalação do app.

Introduzido no: API de nível 8.

introduzido em:
Nível 1 da API para todos os atributos, a menos que indicado de outra forma na descrição do atributo.

veja também:
<application>