O AndroidManifest.xml é um componente central de todas as aplicações Android e funciona como um ficheiro declarativo no qual os programadores definem aspetos importantes da estrutura e do comportamento da app. Este ficheiro XML é essencial para especificar as propriedades básicas da app, como os seus componentes (atividades, serviços, broadcast receivers e content providers) e as permissões de que a app precisa para funcionar corretamente. O AndroidManifest.xml funciona como ligação entre a app e o sistema operativo Android, garantindo que o sistema percebe como a app deve ser integrada e interagir com os recursos do dispositivo e com outras aplicações.
Ao definir elementos como a orientação do ecrã, o ícone e o tema da app e as funcionalidades de hardware que a app utiliza, o AndroidManifest.xml permite aos programadores adaptar a experiência de utilizador e controlar a que dispositivos a app é disponibilizada. O ficheiro não é, portanto, apenas uma necessidade técnica, mas um componente estratégico que desempenha um papel crucial para garantir que a app cumpre tanto os requisitos técnicos como as expectativas dos utilizadores num mundo móvel em constante evolução.
O AndroidManifest.xml é um ficheiro central de todas as aplicações Android que funciona como um roteiro da estrutura e da funcionalidade da app. Define informações essenciais, como os componentes da app (atividades, serviços, broadcast receivers e content providers) e as permissões de que a app precisa para funcionar corretamente. Em conjunto com a configuração de build, o manifesto também determina a compatibilidade da app com diferentes versões do Android e configurações de dispositivo, o que ajuda a garantir que a app funciona sem problemas em diferentes dispositivos. Ao incluir metadados e detalhes de configuração no AndroidManifest.xml, os programadores podem controlar o comportamento da app e a sua interação com o sistema, o que faz dele uma parte essencial do processo de desenvolvimento Android.
Mais sobre AndroidManifest.xml
O AndroidManifest.xml é um ficheiro de configuração essencial de todas as aplicações Android e funciona como uma declaração central das propriedades e dos componentes básicos da app. O ficheiro é crucial para permitir ao sistema Android perceber como a aplicação se deve comportar, que componentes contém e de que permissões precisa para funcionar corretamente.
Tecnicamente, o AndroidManifest.xml é um ficheiro XML localizado na pasta src/main do módulo da app. Define aspetos importantes, como os componentes que constituem a app, por exemplo atividades, serviços, broadcast receivers e content providers. Nos projetos modernos, o ID do pacote (applicationId) e a versão são definidos no ficheiro de build do Gradle, e as ferramentas de build fundem estes valores e os manifestos de todas as bibliotecas no manifesto final. O manifesto especifica também as permissões de que a app precisa, por exemplo o acesso à internet ou à câmara do dispositivo; no caso das permissões sensíveis, a app tem também de pedir autorização ao utilizador em tempo de execução, o que garante que o utilizador é informado sobre os recursos que a app vai utilizar.
O AndroidManifest.xml pode conter várias secções diferentes, cada uma das quais suporta funcionalidades diferentes:
A secção application: Aqui, são definidas as propriedades globais da aplicação, como o tema, os ícones e os nomes. É também aqui que são declarados os componentes que constituem a app, bem como a forma como podem ser iniciados. Esta secção é crucial para garantir que a app é apresentada corretamente e funciona como esperado.
A secção de permissões: Esta parte do manifesto especifica as permissões de que a app precisa para aceder a partes protegidas do sistema ou a dados do utilizador. Pode incluir permissões para utilizar ligações de rede, ler contactos ou aceder ao armazenamento do dispositivo. Um tratamento correto das permissões é crucial tanto para a segurança como para a experiência de utilizador.
Filtros de intents: Os filtros de intents são utilizados para definir como os componentes da app podem interagir com outras apps e com o sistema. Permitem à app responder a ações ou dados específicos, como abrir uma página web ou partilhar um ficheiro. Isto torna possível integrar a app sem problemas com outros serviços e funções do dispositivo.
Um dos maiores pontos fortes do AndroidManifest.xml é a sua capacidade de centralizar e organizar as informações necessárias para executar uma aplicação Android. Ao reunir estas informações num só lugar, os programadores podem gerir e atualizar facilmente a configuração da app, o que reduz o risco de erros e inconsistências.
O AndroidManifest.xml desempenha também um papel importante na segurança da app. Ao exigir permissões explícitas e ao definir limites claros sobre o que os componentes da app expõem a outras apps, por exemplo com o atributo android:exported, o manifesto ajuda a proteger os dados do utilizador e a integridade do dispositivo. Isto é particularmente importante numa época em que a segurança e a privacidade estão em foco.
Na prática, o AndroidManifest.xml é uma parte essencial de todos os processos de desenvolvimento Android. Garante que a app está corretamente configurada e pronta para interagir com o utilizador e com o sistema de forma segura e eficiente. Quer a app seja simples, quer seja uma solução complexa com muitos componentes, um AndroidManifest.xml bem estruturado é fundamental para o sucesso.
Em resumo, o AndroidManifest.xml é um componente crítico do desenvolvimento Android que combina estrutura, segurança e funcionalidade num único ficheiro. A sua capacidade de definir e controlar o comportamento da app faz dele uma ferramenta essencial para os programadores que pretendem criar aplicações robustas e seguras para a plataforma Android.
Perguntas frequentes sobre AndroidManifest.xml
Qual é a finalidade do ficheiro AndroidManifest.xml numa app Android?
O ficheiro AndroidManifest.xml é um componente essencial de todas as aplicações Android, pois funciona como um ficheiro de configuração central que define as propriedades e os componentes básicos da app. Entre outras coisas, especifica o nome e os ícones da app e as permissões de que a app precisa para funcionar corretamente, enquanto a versão é normalmente definida na build do Gradle e acrescentada ao manifesto final. Quando a app é instalada, o sistema Android lê este ficheiro para perceber como a app deve ser integrada no sistema e de que recursos precisa.
Além disso, o ficheiro AndroidManifest.xml contém as declarações dos componentes da app, como atividades, serviços, broadcast receivers e content providers. Estas declarações são necessárias para que o sistema Android registe e trate corretamente as diferentes partes da app. Por exemplo, uma atividade declarada no manifesto pode ser iniciada pela própria app e, se estiver marcada como exportada, também por outras apps e pelo sistema, o que permite à app interagir com outras apps e funções do sistema.
Em comparação com outros ficheiros de configuração de uma app Android, o AndroidManifest.xml é único, porque não só define a estrutura e as permissões da app, como também controla o comportamento da app em diferentes contextos e ambientes. Isto faz do ficheiro de manifesto uma parte crítica do desenvolvimento e da distribuição da app, pois ajuda a garantir que a app funciona de forma correta e segura em diferentes dispositivos e versões do Android.
Como são definidas as permissões no AndroidManifest.xml?
As permissões são declaradas no AndroidManifest.xml com o elemento uses-permission, colocado diretamente dentro do elemento manifest e fora do elemento application. Cada elemento indica uma permissão, por exemplo android.permission.INTERNET para o acesso à rede ou android.permission.CAMERA para a câmara. Sem uma declaração deste tipo, a app não pode utilizar a funcionalidade protegida, independentemente do que o código tente fazer. Isto é comparável ao iOS, em que os motivos da app para utilizar recursos protegidos são descritos no ficheiro Info.plist.
O Android divide as permissões em níveis de proteção. As permissões normais, como o acesso à internet, são concedidas automaticamente quando a app é instalada. As permissões perigosas, como a câmara, a localização, os contactos e o microfone, têm também de ser pedidas ao utilizador em tempo de execução a partir do Android 6.0, e a app tem de lidar com a recusa do utilizador. Desde o Android 13, a permissão para mostrar notificações também tem de ser pedida desta forma. Algumas permissões podem ser limitadas a determinadas versões do Android com o atributo android:maxSdkVersion.
É boa prática pedir apenas as permissões de que a app realmente precisa, pois as permissões desnecessárias reduzem a confiança dos utilizadores e podem levantar questões durante a revisão do Google Play. As bibliotecas também podem acrescentar permissões através da fusão de manifestos, pelo que o manifesto fundido deve ser verificado antes do lançamento, por exemplo com a vista Merged Manifest do Android Studio. Sempre que possível, devem preferir-se alternativas que não exijam permissões, como o seletor de fotografias do sistema.
Como se especifica a atividade de arranque da app no AndroidManifest.xml?
A atividade de arranque da app é especificada no AndroidManifest.xml atribuindo a uma atividade um filtro de intents com a ação android.intent.action.MAIN e a categoria android.intent.category.LAUNCHER. Isto indica ao sistema que a atividade deve ser iniciada quando o utilizador toca no ícone da app.
A partir do Android 12, as atividades com um filtro de intents têm também de ter o atributo android:exported especificado e, no caso da atividade de arranque, este tem de ser definido como true. Se várias atividades tiverem esta combinação, podem ser mostrados vários ícones no launcher, pelo que normalmente apenas uma atividade a tem. Os ecrãs iniciais com, por exemplo, um logótipo são hoje muitas vezes tratados com a API SplashScreen.
Que papel desempenha o AndroidManifest.xml no ciclo de vida da app?
O AndroidManifest.xml não controla o ciclo de vida em si, mas indica ao sistema de que componentes a app é constituída e como podem ser iniciados. As atividades, os serviços, os broadcast receivers e os content providers têm de ser declarados no ficheiro; caso contrário, o sistema não os consegue criar.
O manifesto também pode afetar o desenrolar do ciclo de vida. Com o atributo configChanges, por exemplo, pode especificar-se que uma atividade trata ela própria a rotação do ecrã em vez de ser recriada, e launchMode determina se são criadas novas instâncias. Além disso, pode especificar-se uma classe Application personalizada, que é criada antes de todos os outros componentes quando o processo da app é iniciado.
Como são especificadas as versões mínima e alvo do SDK de uma app Android?
As versões mínima e alvo do SDK especificam que versões do Android a app suporta e para que versão foi compilada e testada. Antigamente, eram especificadas no AndroidManifest.xml com o elemento uses-sdk, mas nos projetos modernos são definidas no ficheiro build.gradle do módulo com minSdk e targetSdk. O Gradle insere então os valores no manifesto final.
O minSdk é a versão mais baixa do Android em que a app pode ser instalada. O targetSdk indica ao sistema a que comportamento e regras de que versão a app foi adaptada. O Google Play exige que o targetSdk seja atualizado regularmente para uma versão recente para que as apps possam ser publicadas e atualizadas.
Como são tratadas as permissões personalizadas no AndroidManifest.xml?
Uma app pode definir as suas próprias permissões no AndroidManifest.xml com o elemento permission. Aqui, é especificado um nome único, normalmente baseado no nome do pacote da app, juntamente com uma descrição e um nível de proteção. O nível signature significa que só as apps assinadas com a mesma chave podem obter a permissão, enquanto normal e dangerous dão acesso a outras apps em condições diferentes.
A permissão é utilizada para proteger os componentes da app, por exemplo definindo o atributo android:permission numa atividade, serviço ou content provider. As outras apps que pretendam utilizar o componente têm de pedir a permissão com uses-permission. O nível signature é muitas vezes utilizado quando várias apps do mesmo programador precisam de partilhar dados de forma segura.
AndroidManifest.xml para manequins
O AndroidManifest.xml é como o índice de uma app Android. Pensa nele como uma lista que diz ao telemóvel o que a app consegue fazer e como se deve comportar. Quando uma app é instalada, o telemóvel olha primeiro para este ficheiro para descobrir de que funcionalidades a app precisa, como o acesso à internet ou à câmara do telemóvel. É também aqui que a app diz como deve arrancar e que partes da app existem. Por isso, o AndroidManifest.xml é um ficheiro importante que ajuda o telemóvel a perceber e a tratar corretamente a app.