Android dalla A alla Z: cos'è il manifest?

Nicola Ligas
Nicola Ligas Tech Master
Android dalla A alla Z: cos'è il manifest?

Ogni applicazione Android dev'essere accompagnata da un file chiamato AndroidManifest.xml nella sua cartella principale. Il Manifest raccoglie informazioni basilari sull'app, informazioni necessarie al sistema per far girare qualsiasi porzione di codice della stessa. Tra le altre cose il Manifest presente in ciascuna app del Play Store si occupa delle seguenti cose:

  • Da un nome al package Java dell'applicazione, che è anche un identificatore univoco della stessa.
  • Descrive le componenti dell'applicazione (attività, servizi, receiver, provider, ecc.), nomina le classi e pubblica le loro "competenze".
  • Determina quali processi ospiteranno componenti dell'applicazione.
  • Dichiara i permessi dell'app, e i permessi necessari alle altre app per interagire con la stessa.
  • Dichiara il livello minimo di API Android che l'app richiede.
  • Elenca le librerie necessarie all'app

Lo scheletro di un file Manifest è il seguente, laddove il significato dei vari elementi è ampiamente documentato nel sito degli sviluppatori Android

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>