<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 precisa conter um elemento <application> e especificar os atributos xmlns:android e package.
atributos:
xmlns:android
Define o namespace do Android. Esse atributo é sempre definido como "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 um nome de pacote completo no estilo Java para o 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 de package, porque isso essencialmente cria um novo app. Os usuários da versão anterior do app não recebem uma atualização e não podem transferir os dados deles 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 de comunicação adequados, como serviços e provedores de conteúdo, para facilitar a interoperabilidade entre os componentes compartilhados. Os apps atuais não podem remover esse valor, porque não há suporte para a migração de um ID do usuário compartilhado. Nesses apps, adicione android:sharedUserMaxSdkVersion="32" para evitar o uso do ID do usuário compartilhado em instalações de novos usuários.

O nome de um ID do usuário do Linux compartilhado com outros apps. Por padrão, o Android atribui a cada app o próprio ID de usuário único. No entanto, se esse atributo for definido com o mesmo valor para dois ou mais apps, todos eles compartilharão o mesmo ID, desde que os conjuntos de certificados sejam 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 Instant Apps 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 app para o nível 1, menos restritivo. No entanto, se você fizer isso, o app não vai manter os dados do app instantâneo na versão instalada. Defina o valor do sandbox do app instalado como 2 para que os dados persistam do app instantâneo para a 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 substitua-o por uma versão com um valor menor para esse atributo no manifesto.

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 de comunicação adequados, como serviços e provedores de conteúdo, para facilitar a interoperabilidade entre os componentes compartilhados. Os apps atuais não podem remover esse valor, porque não há suporte para a migração de 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 de comunicação adequados, como serviços e provedores de conteúdo, para facilitar a interoperabilidade entre os componentes compartilhados.

A versão máxima do SDK em que o sistema ainda usa android:sharedUserId. Se o app tiver sido instalado recentemente em um dispositivo com uma versão do SDK mais recente que o valor especificado, ele se comportará como se você nunca tivesse definido a 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, 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, ele pode ser um número de versão, ou você pode converter um número de versão no formato "x.y" para um inteiro codificando "x" e "y" separadamente nos 16 bits inferiores e superiores. Ou aumente o número em um cada vez que uma nova versão for lançada.

android:versionName
O número da versão exibido aos usuários. Esse atributo é definido como uma string bruta ou uma referência a um recurso de string. A string não tem outra finalidade a não ser exibida 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 palavra-chave são aceitas:

Valor Descrição
"internalOnly" O app é instalado apenas no armazenamento interno do dispositivo. Se esse valor for definido, o app nunca será instalado em um armazenamento externo, como um cartão SD. Se o armazenamento interno 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 o instala no armazenamento interno por padrão. Se o armazenamento interno estiver cheio, o sistema vai instalar o app 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" O app prefere ser instalado no armazenamento externo. Não há garantia de que o sistema cumpra essa solicitação. O app poderá ser instalado no armazenamento interno 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 no armazenamento interno e não pode ser instalado no armazenamento externo, a menos que você defina esse atributo como "auto" ou "preferExternal".

Quando um app é instalado no armazenamento externo:

  • O arquivo APK é salvo no armazenamento externo, mas todos os dados do app, como bancos de dados, ainda são salvos na memória interna do dispositivo.
  • O contêiner em que o arquivo APK é salvo é criptografado com uma chave que permite que o app opere apenas 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. É possível usar vários cartões SD no mesmo dispositivo.
  • A pedido do usuário, o app pode ser movido para o armazenamento interno.

O usuário também pode solicitar a migração de um app do armazenamento interno para o externo. No entanto, o sistema não vai permitir que o usuário mova o app para um armazenamento externo se esse atributo estiver 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 da instalação do app.

Introduzido no nível 8 da API.

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

Confira também:
<application>