domingo, 26 de agosto de 2012

Conhecendo o arquivo AndroidManifest.xml

Olá pessoal,

Após algum tempo sem escrever, venho falar hoje sobre o arquivo AndroidManifest.xml presente nas aplicações Android. Já foi citado nos posts anteriores o uso deste arquivo, neste post vou falar um pouco mais sobre ele.
O arquivo AndroidManifest.xml fica armazenado na raiz do projeto e é responsável pela definição dos componentes do aplicativo, das configurações de segurança, das classes de teste e dos requisitos responsáveis pela visualização da nossa aplicação.
O código abaixo apresenta o código de um arquivo AndroidManifest.xml.


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.configurationchanges"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Primeiro vamos falar deste código que estamos visualizando. A primeira linha é apenas o cabeçalho básico do XML informando que este é um arquivo de manifesto. O que interessa para nós, neste momento são os nós internos deste arquivo XML. 


    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

O nó representado acima é de extrema importância ao aplicativo que estamos desenvolvendo. Através dele definimos qual SDK podemos utilizar no nosso aplicativo. Os valor de minSdkVersion indica qual a menor versão de SDK em qual nosso aplicativo poderá ser executado e a targetSdkVersion indica para qual SDK nosso aplicativo está sendo executado. Para o desenvolvimento Android é uma boa prática utilizar o targetSdkVersion na maior versão possível, isso garante que você tem a capacidade de utilizar o máximo possível dos recursos de uma nova versão. E quanto as versões antigas, como os novos recursos irão se comportar? O Android gerencia estes problemas através de ferramentas de compatibilidade que fazem com que os recursos novos dos seus aplicativos tenham bom comportamento nas versões antigas. Além destes dois atributos, você pode também definir o maxSdkVersion para delimitar entre quais versões seu aplicativo pode ser executado. Como citado no post sobre a criação do dispositivo virtual, você pode ver as API's para Android através do link http://patrickreinan.blogspot.com.br/2012_07_01_archive.html.


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

O nó application é responsável por definir algumas característcas do nosso aplicativo. O exemplo acima está bastante intuitivo. Os três primeiros atributos deste nó tratam do ícone do aplicativo (android:icon), do titulo do aplicativo no menu do usuário (android:label) e do tema visual (android:theme) que será utilizado para maquear nosso aplicativo. Repare que os três estão sob a boa prática de utilizar Resources. 
Após vermos os três atributos vemos agora o nó de Activities. Neste local ficam registradas todas as  Activities do nosso aplicativos. Elas devem sempre estar registradas aqui, caso contrário o aplicativo mostra uma mensagem de erro quando executado. Só temos uma Activity registrada neste código, mas podemos observar que temos o nome (representada sempre com um ponto á esquerda) e o rótulo desta atividade, mostrado na parte superior do aplicativo quando executado. 


<intent-filter>
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

O nó intent-filter é responsável por definir quais ações irão chamar a Activity. Neste caso podemos ver que será a ação MAIN dentro da categoria LAUNCHER.

Estas são as opções que estão visiveis quando criamos um novo projeto, mas podemos utilizar algumas outras para garantir o funcionamento do nosso aplicativo. 

uses-configuration
Com este nó de configuração, podemos definir quais as configurações são necessárias para o nosso aplicativo ser executado. Por exemplo, eu posso ter a necessidade de ter um trackball em meu dispositivo para que a aplicação seja executada, então eu colocaria esta linha abaixo dentro do nó manifest.

<uses-configuration android:reqNavigation="trackball" />

uses-feature
Você pode também definir as características do dispositivo em que seu aplicativo será executado. Por exemplo, sua aplicação pode utilizar bluetooth. Neste caso podemos configurar uma linha conforme o exemplo abaixo:

 <uses-feature android:name="android.hardware.bluetooth" android:required="true" />

supports-screens
Com esta configuração você pode definir os formatos de tela suportados pelo seu aplicativo. Por exemplo, nosso aplicativo pode suportar somente telas pequenas. 


   <supports-screens 
        android:
        android:largeScreens="false" 
        android:smallScreens="true"
        android:normalScreens="false"
        android:xlargeScreens="false"
           />

uses-permission
Você pode identificar no seu arquivo de manifesto quais as permissões que seu aplicativo necessita. No exemplo abaixo, está identificando que o sistema utilizar a permissão de localização.

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>

Estas são algumas das configurações que podem ser feitas dentro do arquivo de manifesto para o nosso aplicativo utilizando o arquivo de manifesto. No próximo post, vou escrever sobre como manipular os eventos de mudança de configuração do ambiente.

Abraço




Um comentário: