0Pricing
Android Academy · Lektion

Einen Release-Build vorbereiten

App Bundles und Shrinking

Einen Release-Build vorbereiten ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Von Debug zu Release

Jeden Tag führen Sie den Debug-Build aus Android Studio aus. Google Play benötigt jedoch einen Release-Build: kleiner, schneller und nicht als debuggable gekennzeichnet.

Ein Release-Build unterscheidet sich in drei wesentlichen Punkten: Er ist mit Ihrem Release-Schlüssel signiert, enthält debuggable false und wird normalerweise verkleinert, um ungenutzten Code und ungenutzte Ressourcen zu entfernen.

In dieser Lektion bereiten Sie einen ordnungsgemäßen Release-Build vor und erstellen die von Google Play erwartete Datei: ein Android App Bundle (.aab).

Build-Typen in Gradle

Gradle definiert standardmäßig zwei Build-Typen: debug und release. Sie konfigurieren sie in der build.gradle.kts Ihres Moduls.

Im Block release aktivieren Sie die Optimierungen. Beachten Sie unten isMinifyEnabled und isShrinkResources – diese Schalter sorgen dafür, dass Ihre App kleiner wird.

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

AAB vs. APK

Google Play erfordert ein Android App Bundle (.aab) und nicht einfach ein .apk.

  • Ein .apk enthält Code und Ressourcen für jedes Gerät – alle Bildschirmdichten, alle CPU-Architekturen und alle Sprachen.
  • Ein .aab wird zu Play hochgeladen. Play erstellt daraus für jedes Gerät des Benutzers ein kleines, optimiertes APK.

Das Ergebnis: Benutzer laden weniger herunter und Ihre App wird kleiner installiert. Für direkte Tests auf einem Smartphone verwenden Sie weiterhin APKs, veröffentlicht wird jedoch ein AAB.

Was ist R8/Shrinking?

Wenn isMinifyEnabled = true gesetzt ist, führt Android Studio R8 aus. R8 erledigt in einem Durchlauf drei Aufgaben:

  • Shrinking – entfernt Klassen und Methoden, die Ihre App nie aufruft.
  • Obfuscation – benennt Klassen und Methoden in kurze Namen wie a, b und c um, um Speicherplatz zu sparen und Reverse Engineering zu erschweren.
  • Optimierung – bettet Code ein und schreibt ihn um, damit er schneller ausgeführt wird.

Das Resource Shrinking (isShrinkResources = true) entfernt zusätzlich ungenutzte Drawables, Layouts und Strings.

Keep-Regeln mit ProGuard

R8 entfernt oder benennt manchmal Code um, der nur über Reflection referenziert wird (zum Beispiel durch Gson, Retrofit oder Serialisierung). Sie schützen diesen Code mit Keep-Regeln in proguard-rules.pro.

Eine Keep-Regel weist R8 an: „Diese Klassen dürfen weder umbenannt noch gelöscht werden.“

# 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 { *; }

Versionierung Ihrer App

Jedes Release benötigt zwei Versionswerte in build.gradle.kts:

  • versionCode — eine Ganzzahl, die sich bei jedem Upload erhöhen muss. Play verwendet sie, um zu erkennen, welcher Build neuer ist.
  • versionName — eine für Menschen lesbare Zeichenfolge wie "1.4.0", die den Nutzern angezeigt wird.

Wenn Sie vergessen, versionCode zu erhöhen, lehnt Play den Upload als Duplikat ab.

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

Das Bundle in Android Studio erstellen

So erstellen Sie über die Benutzeroberfläche ein signiertes Release-Bundle:

  • Öffnen Sie Build → Generate Signed Bundle / APK.
  • Wählen Sie Android App Bundle.
  • Wählen oder erstellen Sie Ihren Keystore und Schlüssel.
  • Wählen Sie die release-Build-Variante.

Android Studio führt R8 aus, signiert das Bundle und legt die Datei .aab unter app/release/ ab. Genau diese eine Datei laden Sie bei Play hoch.

Erstellen über die Befehlszeile

Für CI/CD oder Skripte erstellen Sie das Bundle direkt mit Gradle. Der Name der Task folgt dem Muster bundle<Variant>.

bundleRelease erzeugt die AAB-Datei. Die Datei wird unter app/build/outputs/bundle/release/ abgelegt.

# 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

AAB untersuchen und testen

Sie können eine .aab-Datei nicht direkt auf einem Smartphone installieren. Um genau die APKs zu testen, die Play erzeugen würde, verwenden Sie Googles bundletool.

Damit werden gerätespezifische APKs aus Ihrem Bundle erstellt und auf einem verbundenen Gerät installiert — das kommt einem echten Play-Download am nächsten.

# 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

Debug-Code aus dem Release entfernen

Ein Release-Build sollte keine vertraulichen Daten protokollieren und keine Funktionen enthalten, die nur für das Debugging gedacht sind. Verwenden Sie BuildConfig.DEBUG, um das Verhalten zu unterscheiden. Dieser Wert ist nur in Debug-Builds true.

R8 kann sogar Blöcke entfernen, die durch eine konstante false-Bedingung geschützt sind, und so zusätzlich die Größe reduzieren.

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())
    }
}

Checkliste für ein Release

Bevor Sie das finale Bundle erstellen, prüfen Sie:

  • versionCode wurde erhöht und versionName aktualisiert.
  • isMinifyEnabled und isShrinkResources sind für das Release aktiviert.
  • Für alle auf Reflection basierenden Bibliotheken wurden Keep-Regeln hinzugefügt.
  • targetSdk erfüllt die aktuellen Anforderungen von Play.
  • Der Release-Code enthält weder Debug-Logging noch Test-Endpunkte.
  • Sie haben die AAB mit bundletool auf einem echten Gerät getestet.

Wenn alle Punkte erfüllt sind, ist Ihre .aab-Datei zum Hochladen bereit.

Kurzer Check

Sie haben isMinifyEnabled = true gesetzt, und Ihre App stürzt im Release mit dem Fehler „class not found“ aus Ihrem JSON-Parser ab, funktioniert im Debug-Modus aber problemlos. Was ist die wahrscheinlichste Ursache?

Zusammenfassung: Einen Release-Build vorbereiten

Sie wissen nun, wie Sie aus einer Debug-App einen veröffentlichungsfähigen Build erstellen:

  • Play benötigt eine signierte .aab-Datei und erzeugt daraus gerätespezifische APKs.
  • Der release-Build-Typ aktiviert über isMinifyEnabled und isShrinkResources R8, um den Code zu verkleinern, zu verschleiern und zu optimieren.
  • Keep-Regeln schützen Code, der auf Reflection basiert, vor dem Entfernen.
  • Erhöhen Sie immer versionCode und aktualisieren Sie versionName.
  • Erstellen Sie den Build mit ./gradlew bundleRelease und testen Sie das Ergebnis mit bundletool.

Als Nächstes erfahren Sie, wie die Signierung funktioniert, die diesen Build vertrauenswürdig macht.

Häufig gestellte Fragen

Ist die Lektion „Einen Release-Build vorbereiten“ kostenlos?

Ja — der vollständige Text von „Einen Release-Build vorbereiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Einen Release-Build vorbereiten“?

App Bundles und Shrinking Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Einen Release-Build vorbereiten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Einen Release-Build vorbereiten
  2. App-Signierung
  3. Die Play Console und der Store-Eintrag
  4. Rollouts und Updates
← Zurück zu Android Academy