Configura il modulo di base

Un app bundle è diverso da un APK perché non puoi eseguirne il deployment su un dispositivo. Si tratta invece di un formato di pubblicazione che include tutte le risorse e il codice compilato dell'app in un unico artefatto di build. Pertanto, dopo aver caricato l'app bundle firmato, Google Play ha tutto il necessario per creare e firmare gli APK della tua app, nonché per pubblicarli per gli utenti.

Inizia

La maggior parte dei progetti di app non richiederà molto impegno per supportare Android App Bundle. Questo perché il modulo che include codice e risorse per l'APK di base dell'app è il modulo dell'app standard, che trovi per impostazione predefinita quando crei un nuovo progetto di app in Android Studio. In altre parole, il modulo che applica il plug-in application riportato di seguito al relativo file build.gradle fornisce il codice e le risorse per la funzionalità di base della tua app.

Trendy

// The standard application plugin creates your app's base module.
plugins {
 id 'com.android.application'
}

Kotlin

plugins {
    // The standard application plugin creates your app's base module.
    id("com.android.application")
}

Oltre a fornire la funzionalità di base per l'app, il modulo di base fornisce anche molte delle configurazioni di build e delle voci manifest che influiscono sull'intero progetto dell'app.

La configurazione della build del modulo di base

Per la maggior parte dei progetti di app esistenti, non è necessario modificare nulla nella configurazione della build del modulo di base. Tuttavia, se stai prendendo in considerazione l'aggiunta di moduli di funzionalità al progetto dell'app o se in precedenza hai rilasciato l'app utilizzando più APK, ci sono alcuni aspetti della configurazione della build del modulo di base che dovresti tenere a mente.

Codice di versione e aggiornamenti dell'app

Con gli Android App Bundle, non devi più gestire i codici di versione per più APK che carichi su Google Play. Puoi invece gestire un solo codice di versione nel modulo di base dell'app, come mostrato di seguito:

// In your base module build.gradle file
android {
    defaultConfig {
        …
        // You specify your app’s version code only in the base module.
        versionCode 5
        versionName "1.0"
    }
}

Dopo aver caricato l'app bundle, Google Play utilizza il codice di versione nel modulo di base per assegnare lo stesso codice di versione a tutti gli APK che genera dal bundle. In altre parole, quando un dispositivo scarica e installa la tua app, tutti gli APK divisi per quell'app condividono lo stesso codice versione.

Se vuoi aggiornare l'app con nuovo codice o nuove risorse, devi aggiornare il codice di versione nel modulo di base dell'app e creare un nuovo app bundle completo. Quando carichi l'app bundle su Google Play, viene generato un nuovo set di APK in base al codice di versione specificato dal modulo di base. In seguito, quando gli utenti aggiornano la tua app, Google Play mostra loro le versioni aggiornate di tutti gli APK attualmente installati sul dispositivo. In altre parole, tutti gli APK installati vengono aggiornati al nuovo codice di versione.

Altre considerazioni

  • Firma dell'app: se includi informazioni di firma nei file di build, devi includerle solo nel file di configurazione di compilazione del modulo di base. Per ulteriori informazioni, consulta Configurare Gradle per firmare l'app.
  • Riduzione del codice: se vuoi abilitare la contrazione del codice per l'intero progetto dell'app (inclusi i moduli delle funzionalità), devi farlo dal file build.gradle del modulo di base. In altre parole, puoi includere regole ProGuard personalizzate in un modulo delle funzionalità, ma la proprietà minifyEnabled nelle configurazioni della build del modulo delle funzionalità viene ignorata.
  • Il blocco splits viene ignorato: quando crea un app bundle, Gradle ignora le proprietà nel blocco android.splits. Se vuoi controllare i tipi di APK di configurazione supportati dal tuo app bundle, usa invece android.bundle per disabilitare i tipi di APK di configurazione.
  • Controllo delle versioni dell'app: il modulo di base determina il codice di versione e il nome di versione per l'intero progetto dell'app. Per saperne di più, vai alla sezione su come gestire gli aggiornamenti delle app.

Riattiva o disattiva i tipi di APK di configurazione

Per impostazione predefinita, quando crei un app bundle, questo supporta la generazione di APK di configurazione per ogni set di risorse del linguaggio, risorse relative alla densità dello schermo e librerie ABI. Se utilizzi il blocco android.bundle nel file build.gradle del modulo di base, come mostrato di seguito, puoi disattivare il supporto di uno o più tipi di APK di configurazione:

Trendy

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Kotlin

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Gestione delle modifiche alla lingua

Google Play determina quali risorse della lingua installare con l'app in base alla selezione della lingua nelle impostazioni del dispositivo dell'utente. Prendi in considerazione un utente che cambia la lingua di sistema predefinita dopo aver già scaricato l'app. Se la tua app supporta quella lingua, il dispositivo richiede e scarica APK di configurazione aggiuntivi per le risorse di lingua in questione da Google Play.

Per le app che offrono un selettore lingua all'interno dell'applicazione e che cambiano dinamicamente la lingua, indipendentemente dall'impostazione della lingua a livello di sistema, devi apportare alcune modifiche per evitare arresti anomali dovuti a risorse mancanti. Imposta la proprietà android.bundle.language.enableSplit su false oppure valuta la possibilità di implementare i download dei linguaggi on demand utilizzando la libreria Play Core come descritto nella sezione Scaricare risorse di lingua aggiuntive