Como corrigir o erro 'android:exported' ao fazer upload de um APK ou Android App Bundle
Se você é um desenvolvedor Android, pode ter encontrado esta mensagem de erro ao fazer upload de seu aplicativo para o Google Play:
Você carregou um APK ou Android App Bundle que tem uma atividade, alias de atividade, serviço ou broadcast receiver com filtro de intenção, mas sem a propriedade 'android:exported' definida. Este arquivo não pode ser instalado no Android 12 ou superior.
Esse erro significa que seu pacote de apps não está em conformidade com os novos requisitos do Android 12 ou superior, que exigem que todos os componentes de apps que podem ser iniciados por outros apps declarem explicitamente seu status de exportado usando a propriedade 'android:exported' no arquivo de manifesto.
you uploaded an apk or android app bundle which has an activity activity alias service
Neste artigo, explicaremos o que é um APK ou Android App Bundle, o que é uma atividade, um alias de atividade, um serviço ou um broadcast receiver com filtro de intenção, o que é a propriedade 'android:exported' e por que ela é necessária, como defini-la para os componentes do aplicativo e como verificar se o pacote de aplicativos atende à restrição de tamanho de download compactado.
O que é um APK ou Android App Bundle?
Um APK (Pacote Android) é o formato de arquivo executável para aplicativos Android. Ele contém todo o código compilado e recursos do seu aplicativo, bem como um arquivo de manifesto que fornece informações sobre seu aplicativo para o sistema Android e um conjunto de certificados e chaves de assinatura que verificam sua identidade como editor.
Um Android App Bundle é um novo formato de publicação que o Google introduziu em 2018 para resolver algumas das deficiências dos APKs. Ele inclui todos os recursos e códigos compilados do seu aplicativo, mas adia a geração e a assinatura do APK no Google Play. O Google Play usa seu pacote de apps para gerar e veicular APKs otimizados para cada configuração de dispositivo. Portanto, apenas o código e os recursos necessários para um dispositivo específico são baixados para executar seu app.Você não precisa mais criar, assinar e gerenciar vários APKs para oferecer suporte a diferentes dispositivos, e os usuários obtêm downloads menores e mais otimizados.
O que é uma atividade, alias de atividade, serviço ou receptor de transmissão com filtro de intenção?
Uma atividade é um componente do seu aplicativo que fornece uma interface de usuário para uma tarefa específica. Por exemplo, uma atividade pode exibir uma lista de contatos, um mapa ou uma tela de jogo.
Um alias de atividade é um componente que atua como um nome alternativo para uma atividade existente. Ele permite que você apresente a mesma atividade como uma entidade diferente com seu próprio conjunto de filtros de intenção. Por exemplo, você pode usar um alias de atividade para criar um ícone inicializador para um modo específico do seu aplicativo.
Um serviço é um componente do seu aplicativo executado em segundo plano sem uma interface de usuário. Ele pode executar operações de longa duração ou trabalhar para processos remotos. Por exemplo, um serviço pode tocar música, baixar arquivos ou sincronizar dados.
enviar uma notificação quando uma nova mensagem chegar.
Um filtro de intenção é um conjunto de condições que especifica os tipos de intenções que um componente pode receber. Ele declara as ações, dados e categorias que o componente pode manipular. Por exemplo, um filtro de intenção pode especificar que uma atividade pode exibir páginas da Web, um serviço pode reproduzir arquivos de música ou um broadcast receiver pode ouvir as alterações na rede.
O que é a propriedade 'android:exported' e por que ela é necessária?
A propriedade 'android:exported' é um atributo que você pode definir para os componentes do aplicativo no arquivo de manifesto. Indica se o componente pode ser iniciado por componentes de outros aplicativos. Se a propriedade 'android:exported' estiver definida como true, significa que o componente está disponível para outros aplicativos. Se for definido como falso, significa que o componente é privado para seu aplicativo e não pode ser acessado por outros aplicativos.
A propriedade 'android:exported' é necessária para o Android 12 ou superior devido aos novos aprimoramentos de segurança e privacidade que o Google introduziu nesta versão.Um desses aprimoramentos é o sinalizador de mutabilidade PendingIntent, que permite controlar como outros aplicativos podem modificar as intenções que você cria e passa para eles. Outro aprimoramento é a restrição de inicialização do serviço em primeiro plano, que impede que os aplicativos iniciem serviços em primeiro plano em segundo plano sem o conhecimento ou consentimento do usuário. Esses aprimoramentos exigem que você declare explicitamente o status exportado dos componentes de seu aplicativo que podem ser iniciados por outros aplicativos, para que o sistema possa aplicar as permissões e restrições apropriadas.
Como definir a propriedade 'android:exported' para os componentes do aplicativo?
Você pode definir a propriedade 'android:exported' para os componentes do aplicativo de duas maneiras: usando o Android Studio ou usando um editor de texto.
Usando o Android Studio
Se você estiver usando o Android Studio como seu IDE, poderá definir facilmente a propriedade 'android:exported' para os componentes do aplicativo usando o editor de manifesto. Para fazer isso, siga estas etapas:
Abra o arquivo de manifesto do seu app (AndroidManifest.xml) no Android Studio.
Selecione a guia Manifesto mesclado na parte inferior do editor.
Expanda a seção Componentes e localize o componente para o qual deseja definir a propriedade 'android:exported'.
Clique no botão Atributos ao lado do nome do componente.
Na caixa de diálogo Atributos, localize o atributo 'android:exportado' e marque ou desmarque a caixa para defini-lo como verdadeiro ou falso.
Clique em OK para salvar suas alterações.
Usando um editor de texto
Se preferir usar um editor de texto para editar o arquivo de manifesto do seu aplicativo, você também pode definir a propriedade 'android:exported' para os componentes do seu aplicativo manualmente. Para fazer isso, siga estas etapas:
Abra o arquivo de manifesto do seu aplicativo (AndroidManifest.xml) em um editor de texto de sua escolha.
Encontre o elemento que corresponde ao componente para o qual você deseja definir a propriedade 'android:exported'. pode ser um , , , ou elemento.
Adicione ou modifique o atributo 'android:exported' no elemento e defina seu valor como "true" ou "false". Por exemplo:
... Como verificar se o seu pacote de aplicativos atende à restrição de tamanho de download compactado?
Um dos benefícios de usar um Android App Bundle é que ele reduz o tamanho dos downloads de aplicativos gerando e veiculando APKs otimizados para cada configuração de dispositivo. No entanto, ainda há um limite para o tamanho do seu pacote de aplicativos. O tamanho de download compactado do seu pacote de aplicativos não deve exceder 150 MB. Este é o tamanho do arquivo ZIP que contém todos os arquivos em seu pacote de aplicativos, não o tamanho do próprio pacote de aplicativos.
Para verificar se seu pacote de aplicativos atende a essa restrição, você pode usar a ferramenta de linha de comando bundletool fornecida pelo Google. Essa ferramenta permite criar, analisar e testar pacotes de aplicativos localmente. Para usá-lo, siga estas etapas:
Baixe a versão mais recente do bundletool em .
Execute o seguinte comando em uma janela de terminal para gerar um arquivo ZIP de seu pacote de aplicativos:
java -jar bundletool-all-1.8.0.jar build-apks --bundle=/path/to/your/app.aab --output=/path/to/your/app.zip
Verifique o tamanho do arquivo ZIP que foi criado. Se for menor que 150 MB, seu pacote de aplicativos atende à restrição. Se tiver mais de 150 MB, você precisará reduzir o tamanho do pacote de aplicativos removendo códigos e recursos não utilizados, otimizando imagens e vídeos, usando módulos de recursos dinâmicos ou aplicando outras técnicas.
Conclusão
Neste artigo, explicamos como corrigir o erro 'android: exportado' ao carregar um APK ou Android App Bundle no Google Play. Cobrimos o que é um APK ou Android App Bundle, o que é uma atividade, alias de atividade, serviço ou receptor de transmissão com filtro de intenção, o que é a propriedade 'android:exported' e por que ela é necessária, como defini-la para os componentes do aplicativo e como verificar se o pacote de aplicativos atende à restrição de tamanho de download compactado.Esperamos que este artigo tenha ajudado você a entender e resolver esse problema e a publicar seu aplicativo com sucesso.
perguntas frequentes
Qual é a diferença entre um APK e um Android App Bundle?
Um APK é o formato de arquivo executável para aplicativos Android. Ele contém todo o código compilado e os recursos do seu aplicativo. Um Android App Bundle é um novo formato de publicação que adia a geração e a assinatura do APK no Google Play. O Google Play usa seu pacote de apps para gerar e veicular APKs otimizados para cada configuração de dispositivo.
Quais são os benefícios de usar um Android App Bundle?
Um Android App Bundle reduz o tamanho dos downloads de seu aplicativo gerando e veiculando APKs otimizados para cada configuração de dispositivo. Ele também simplifica seu processo de desenvolvimento eliminando a necessidade de criar, assinar e gerenciar vários APKs para dar suporte a diferentes dispositivos.
Como faço para criar um Android App Bundle?
Você pode criar um Android App Bundle usando o Android Studio ou usando um comando Gradle. Para criar um Android App Bundle usando o Android Studio, siga estas etapas:
Selecione Build > Generate Signed Bundle / APK na barra de menus.
Na caixa de diálogo exibida, selecione Android App Bundle e clique em Avançar.
Siga as instruções para criar um novo ou escolher um armazenamento de chaves existente.
Selecione uma pasta de destino para seu pacote de aplicativos e clique em Concluir.
Para criar um Android App Bundle usando um comando Gradle, siga estas etapas:
Abra uma janela de terminal e navegue até o diretório raiz do seu projeto.
Execute o seguinte comando:
./gradlew bundleRelease
Como faço para testar meu Android App Bundle?
Você pode testar seu Android App Bundle usando a ferramenta de linha de comando bundletool ou usando o compartilhamento interno de aplicativos no Google Play. Para testar seu Android App Bundle usando bundletool, siga estas etapas:
Baixe a versão mais recente do bundletool em .
Execute o seguinte comando em uma janela de terminal para gerar um conjunto de APKs do seu pacote de apps:
java -jar bundletool-all-1.8.0.jar build-apks --bundle=/path/to/your/app.aab --output=/path/to/your/app.apks
Execute o seguinte comando em uma janela de terminal para instalar os APKs em um dispositivo ou emulador conectado:
java -jar bundletool-all-1.8.0.jar install-apks --apks=/path/to/your/app.apks
Inicie seu aplicativo e teste sua funcionalidade e aparência.
Para testar seu Android App Bundle usando o compartilhamento interno de aplicativos no Google Play, siga estas etapas:
Acesse a página de compartilhamento interno de apps no Play Console e ative o compartilhamento interno de apps.
Carregue seu pacote de aplicativos na página interna de compartilhamento de aplicativos.
Copie o link gerado e compartilhe-o com seus testadores.
Abra o link em um dispositivo que tenha a Play Store instalada e baixe seu aplicativo.
Inicie seu aplicativo e teste sua funcionalidade e aparência.
Como carrego meu Android App Bundle para o Google Play?
Para enviar seu Android App Bundle para o Google Play, siga estas etapas:
Vá para a página Versões de aplicativos no Play Console e selecione a faixa para a qual você deseja carregar seu pacote de aplicativos (como teste interno, teste fechado, teste aberto ou produção).
Clique em Criar nova versão.
Revise as notas de versão e clique em Continuar.
Clique em Procurar arquivos e selecione o arquivo do pacote de aplicativos (com extensão .aab).
Revise e aceite os termos de serviço e clique em Salvar.
Revise o relatório de pré-lançamento e corrija os problemas detectados.
Clique em Revisar liberação e verifique os detalhes de sua liberação.
Clique em Iniciar distribuição para publicar seu pacote de aplicativos no Google Play.
0517a86e26
Comments