Configurare il modulo delle app

Questa pagina descrive impostazioni utili dell'app nel file build.gradle.kts a livello di modulo. Oltre a fornire una panoramica delle proprietà importanti impostate nel file build.gradle.kts, scopri come:

  • Modifica l'ID applicazione per diverse configurazioni di build.
  • Modifica in modo sicuro lo spazio dei nomi indipendentemente dall'ID applicazione.

Imposta l'ID applicazione

Ogni app Android ha un ID applicazione univoco che assomiglia a un nome di pacchetto Java o Kotlin, ad esempio com.example.myapp. Questo ID identifica in modo univoco la tua app sul dispositivo e nel Google Play Store.

L'ID applicazione è definito dalla proprietà applicationId nel file build.gradle.kts del modulo, come mostrato qui. Aggiorna il valore di applicationId sostituendo com.example.myapp con l'ID della tua app:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Trendy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Sebbene l'ID applicazione abbia l'aspetto di un nome di pacchetto Kotlin o Java tradizionale, le regole di denominazione per l'ID applicazione sono un po' più restrittive:

  • Deve avere almeno due segmenti (uno o più punti).
  • Ogni segmento deve iniziare con una lettera.
  • Tutti i caratteri devono essere alfanumerici o un trattino basso [a-zA-Z0-9_].

Quando crei un nuovo progetto in Android Studio, a applicationId viene assegnato automaticamente il nome del pacchetto scelto durante la configurazione. Tecnicamente puoi attivare/disattivare le due proprietà in modo indipendente da quel momento in poi, ma questa operazione non è consigliata.

È consigliabile eseguire le seguenti operazioni per impostare l'ID applicazione:

  • Mantieni lo stesso ID applicazione dello spazio dei nomi. La distinzione tra le due proprietà può essere un po' confusa, ma se le mantieni uguali, non c'è nulla di cui preoccuparsi.
  • Non modificare l'ID applicazione dopo aver pubblicato l'app. Se lo modifichi, il caricamento successivo viene considerato come una nuova app sul Google Play Store.
  • Definisci in modo esplicito l'ID applicazione. Se l'ID applicazione non viene definito in modo esplicito utilizzando la proprietà applicationId, assume automaticamente lo stesso valore dello spazio dei nomi. Ciò significa che la modifica dello spazio dei nomi cambia l'ID applicazione, che di solito non è quello che vuoi.

Modificare l'ID applicazione per i test

Per impostazione predefinita, gli strumenti di creazione applicano un ID applicazione all'APK del test di strumentazione utilizzando l'ID applicazione della variante di build specificata aggiungendo .test. Ad esempio, un APK di test per la variante build com.example.myapp.free ha l'ID applicazione com.example.myapp.free.test.

Anche se non dovrebbe essere necessario, puoi modificare l'ID applicazione definendo la proprietà testApplicationId nel blocco defaultConfig o productFlavor.

Imposta lo spazio dei nomi

Ogni modulo Android ha uno spazio dei nomi, che viene utilizzato come nome del pacchetto Kotlin o Java per le classi R e BuildConfig generate.

Lo spazio dei nomi è definito dalla proprietà namespace nel file build.gradle.kts del modulo, come mostrato nel seguente snippet di codice. namespace è inizialmente impostato sul nome del pacchetto che scegli quando crei il progetto.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

Trendy

android {
    namespace "com.example.myapp"
    ...
}

Durante la creazione dell'app nel pacchetto dell'applicazione finale (APK), gli strumenti di creazione di Android utilizzano lo spazio dei nomi come spazio dei nomi per la classe R generata dall'app, che viene utilizzata per accedere alle risorse dell'app. Ad esempio, nel file di build precedente, la classe R viene creata all'indirizzo com.example.myapp.R.

Il nome impostato per la proprietà namespace del file build.gradle.kts deve corrispondere sempre al nome del pacchetto di base del progetto, in cui conservi le attività e l'altro codice dell'app. Il progetto può contenere altri sottopacchetti, ma tali file devono importare la classe R utilizzando lo spazio dei nomi della proprietà namespace.

Per un flusso di lavoro più semplice, mantieni lo stesso spazio dei nomi dell'ID applicazione, come avviene per impostazione predefinita.

Modifica lo spazio dei nomi

Nella maggior parte dei casi, devi mantenere invariati lo spazio dei nomi e l'ID applicazione, come sono per impostazione predefinita. Tuttavia, in un determinato momento potresti dover modificare lo spazio dei nomi se stai riorganizzando il codice o per evitare collisioni dello spazio dei nomi.

In questi casi, modifica lo spazio dei nomi aggiornando la proprietà namespace nel file build.gradle.kts del modulo indipendentemente dall'ID applicazione. Prima di farlo, assicurati che l'ID applicazione sia definito esplicitamente, in modo che la modifica dello spazio dei nomi non cambi anche l'ID applicazione. Per ulteriori informazioni su come lo spazio dei nomi può influire sull'ID applicazione, consulta Impostare l'ID applicazione.

Se hai nomi diversi per namespace e Gradle applicationId, gli strumenti di creazione copiano l'ID applicazione nel file manifest finale dell'app alla fine della build. Pertanto, se esamini il file AndroidManifest.xml dopo una build, l'attributo package viene impostato sull'ID applicazione. Nell'attributo package del manifest unito il Google Play Store e la piattaforma Android identificano effettivamente la tua app.

Modifica lo spazio dei nomi per i test

Lo spazio dei nomi predefinito per i set di origini androidTest e test è lo spazio dei nomi principale, con .test aggiunto alla fine. Ad esempio, se la proprietà namespace nel file build.gradle è com.example.myapp, lo spazio dei nomi di test è impostato per impostazione predefinita su com.example.myapp.test. Per modificare lo spazio dei nomi per i test, utilizza la proprietà testNamespace, come mostrato nel seguente snippet di codice:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

Trendy

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

Attenzione: non impostare testNamespace e namespace sullo stesso valore, altrimenti si verificano collisioni dello spazio dei nomi.

Per scoprire di più sui test, vedi Testare le app su Android.