Configurare il modulo delle app

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

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

Imposta l'ID applicazione

Ogni app per Android ha un ID applicazione univoco che sembra 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 di seguito. 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"
    }
    ...
}

Groovy

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

Sebbene l'ID applicazione assomigli a 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, al applicationId viene assegnato automaticamente il nome del pacchetto che hai scelto durante la configurazione. Tecnicamente, da quel momento in poi puoi attivare/disattivare le due proprietà indipendentemente, ma non è consigliabile.

Ti consigliamo di procedere come segue quando imposti l'ID applicazione:

  • Mantieni l'ID applicazione uguale allo spazio dei nomi. La distinzione tra le due proprietà può essere un po' confusa, ma se le mantieni uguali, non c'è da preoccuparsi.
  • Non modificare l'ID applicazione dopo aver pubblicato l'app. Se lo modifichi, Google Play Store tratta il caricamento successivo come una nuova app.
  • Definisci esplicitamente l'ID applicazione. Se l'ID applicazione non è esplicitamente definito utilizzando la proprietà applicationId, assume automaticamente lo stesso valore dello spazio dei nomi. Ciò significa che la modifica dello spazio dei nomi comporta la modifica dell'ID applicazione, che in genere non è ciò che vuoi.

Modificare l'ID applicazione per i test

Per impostazione predefinita, gli strumenti di compilazione applicano un ID applicazione all'APK del test di strumentazione utilizzando l'ID applicazione per la variante di compilazione specificata con .test. Ad esempio, un APK di test per la com.example.myapp.free variante di build 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.

Impostare 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 nello snippet di codice seguente. namespace viene inizialmente impostato sul nome del pacchetto che scegli quando crei il progetto.

Kotlin

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

Groovy

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

Durante la compilazione dell'app nel pacchetto dell'applicazione finale (APK), gli strumenti di compilazione Android utilizzano il nome spazio per la classe R generata dell'app, che viene utilizzata per accedere alle risorse dell'app. Ad esempio, nel file di compilazione precedente, la classe R viene creata in com.example.myapp.R.

Il nome impostato per la proprietà namespace del file build.gradle.kts deve sempre corrispondere al nome del pacchetto di base del progetto, dove vengono conservate le attività e l'altro codice dell'app. Puoi avere altri sottopacchetti nel tuo progetto, ma questi file devono importare la classe R utilizzando il nome dello spazio dei nomi della proprietà namespace.

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

Modificare 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, potresti dover modificare il nome a un certo punto se stai riorganizzando il codice o per evitare collisioni di spazi 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 modifichi 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 applicationId Gradle, gli strumenti di compilazione copiano l'ID applicazione nel file manifest finale dell'app alla fine della compilazione. Pertanto, se esamini il file AndroidManifest.xml dopo una compilazione, l'attributo package è impostato sull'ID applicazione. L'attributo package del manifest unito è dove il Google Play Store e la piattaforma Android cercano effettivamente di identificare la tua app.

Modificare 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 nello snippet di codice seguente:

Kotlin

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

Groovy

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

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

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