0Pricing
Android Academy · Lezione

Preparare una build per il rilascio

App bundle e riduzione delle dimensioni

Preparare una build per il rilascio è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.

Dal debug alla release

Ogni giorno eseguite la build di debug da Android Studio. Google Play, però, richiede una build di release: più piccola, più rapida e non contrassegnata come sottoposta a debug.

Una build di release differisce in tre aspetti fondamentali: è firmata con la chiave di release, ha debuggable false ed è generalmente sottoposta a riduzione per rimuovere codice e risorse inutilizzati.

In questa lezione preparerete una build di release corretta e produrrete il file richiesto da Google Play: un Android App Bundle (.aab).

Tipi di build in Gradle

Gradle definisce per impostazione predefinita due tipi di build: debug e release. Li configurate nel file build.gradle.kts del modulo.

Il blocco release è il punto in cui attivate le ottimizzazioni. Notate isMinifyEnabled e isShrinkResources riportati di seguito: sono gli interruttori che rendono più piccola l’app.

android {
    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

AAB e APK a confronto

Google Play richiede un Android App Bundle (.aab), non un semplice .apk.

  • Un .apk contiene codice e risorse per ogni dispositivo: tutte le densità dello schermo, tutte le architetture della CPU e tutte le lingue.
  • Un .aab viene caricato su Play, che genera un APK piccolo e ottimizzato per il dispositivo specifico di ogni utente.

Il risultato: gli utenti scaricano meno dati e l’app occupa meno spazio durante l’installazione. Continuate a usare gli APK per i test diretti su un telefono, ma pubblicate un AAB.

Che cos’è R8 / la riduzione

Quando isMinifyEnabled = true, Android Studio esegue R8. R8 svolge tre operazioni in un unico passaggio:

  • Riduzione — rimuove le classi e i metodi che l’app non chiama mai.
  • Offuscamento — rinomina classi e metodi con nomi brevi come a, b, c per risparmiare spazio e ostacolare il reverse engineering.
  • Ottimizzazione — inserisce direttamente il codice delle chiamate e lo riscrive per eseguirlo più rapidamente.

La riduzione delle risorse (isShrinkResources = true) elimina inoltre drawable, layout e stringhe inutilizzati.

Mantenere le regole con ProGuard

R8 a volte rimuove o rinomina il codice a cui si fa riferimento solo tramite reflection (ad esempio con Gson, Retrofit o la serializzazione). È possibile proteggere questo codice con le keep rules in proguard-rules.pro.

Una keep rule indica a R8: "non rinominare o eliminare queste classi".

# proguard-rules.pro

# Keep data classes used with Gson reflection
-keep class com.example.app.model.** { *; }

# Keep Retrofit interface methods
-keepattributes Signature
-keepattributes *Annotation*

# Keep Kotlin metadata used by libraries
-keep class kotlin.Metadata { *; }

Versionare l'app

Ogni release richiede due valori di versione in build.gradle.kts:

  • versionCode — un intero che deve aumentare a ogni caricamento. Play lo usa per determinare quale build è più recente.
  • versionName — una stringa leggibile, come "1.4.0", mostrata agli utenti.

Se dimentica di incrementare versionCode, Play rifiuta il caricamento perché lo considera un duplicato.

android {
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 35
        versionCode = 12
        versionName = "1.4.0"
    }
}

Creare il bundle in Android Studio

Per creare un bundle di release firmato dall'interfaccia:

  • Apra Build → Generate Signed Bundle / APK.
  • Scelga Android App Bundle.
  • Selezioni o crei il keystore e la chiave.
  • Scelga la variante di build release.

Android Studio esegue R8, firma il bundle e salva il file .aab in app/release/. Questo è l'unico file da caricare su Play.

Creare la build dalla riga di comando

Per CI/CD o per gli script, crei il bundle direttamente con Gradle. Il nome del task segue il modello bundle<Variant>.

bundleRelease genera l'AAB. Il file viene salvato in app/build/outputs/bundle/release/.

# Build a release App Bundle (.aab)
./gradlew bundleRelease

# Output:
# app/build/outputs/bundle/release/app-release.aab

# Build a release APK instead (for direct install/testing)
./gradlew assembleRelease

Ispezionare e testare l'AAB

Non è possibile installare direttamente un .aab su un telefono. Per testare gli APK esatti che Play genererebbe, utilizzi bundletool di Google.

Questo strumento crea APK specifici per il dispositivo a partire dal bundle e li installa su un dispositivo connesso: è la soluzione più vicina a un vero download da Play.

# Generate APKs from the bundle for the connected device
java -jar bundletool.jar build-apks \
  --bundle=app-release.aab \
  --output=app.apks \
  --connected-device

# Install them on the device
java -jar bundletool.jar install-apks --apks=app.apks

Rimuovere il codice di debug dalla release

Una build di release non dovrebbe registrare dati sensibili né lasciare attive funzionalità riservate al debug. Utilizzi BuildConfig.DEBUG per scegliere il comportamento. Il suo valore è true solo nelle build di debug.

R8 può persino eliminare i blocchi protetti da una costante false, riducendo così anche le dimensioni.

fun setupLogging() {
    if (BuildConfig.DEBUG) {
        // Verbose logging only in debug builds
        Log.d("App", "Debug logging enabled")
        Timber.plant(Timber.DebugTree())
    } else {
        // Release: send to crash reporting only, no console spam
        Timber.plant(CrashReportingTree())
    }
}

Checklist per una release pronta

Prima di creare il bundle finale, verifichi che:

  • versionCode sia stato incrementato e versionName aggiornato.
  • isMinifyEnabled e isShrinkResources siano attivi per la release.
  • Siano state aggiunte keep rules per tutte le librerie che usano la reflection.
  • targetSdk soddisfi il requisito attuale di Play.
  • Nel codice di release non siano presenti log riservati al debug né endpoint di test.
  • L'AAB sia stato testato tramite bundletool su un dispositivo reale.

Una volta superati questi controlli, il file .aab è pronto per il caricamento.

Verifica rapida

Ha impostato isMinifyEnabled = true e l'app va in crash nella release con un errore "class not found" generato dal parser JSON, mentre in debug funziona correttamente. Qual è la causa più probabile?

Riepilogo: preparare una build di release

Ora sa come trasformare un'app di debug in una build pronta per la pubblicazione:

  • Play richiede un .aab firmato e genera da esso APK specifici per ogni dispositivo.
  • Il tipo di build release abilita R8 tramite isMinifyEnabled e isShrinkResources per ridurre, offuscare e ottimizzare il codice.
  • Le keep rules impediscono che il codice basato sulla reflection venga rimosso.
  • Incrementi sempre versionCode e aggiorni versionName.
  • Crei la build con ./gradlew bundleRelease e testi il risultato con bundletool.

Prossimo argomento: come funziona la firma che rende affidabile questa build.

Domande Frequenti

La lezione «Preparare una build per il rilascio» è gratuita?

Sì — il testo completo di «Preparare una build per il rilascio» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.

Cosa imparerò in «Preparare una build per il rilascio»?

App bundle e riduzione delle dimensioni Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Android Academy?

Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Preparare una build per il rilascio»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Android Academy?

Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Preparare una build per il rilascio
  2. Firma dell'app
  3. Play Console e scheda dell'app
  4. Distribuzioni progressive e aggiornamenti
← Torna a Android Academy