App Bundle & Play Store
TrailLog now has a signing identity from the previous lesson — but signing alone doesn't get an app in
front of real users. Google Play requires the actual uploaded file to be an Android App
Bundle (.aab), not the .apk format used for installing straight
onto a device or emulator during development. This lesson covers what that format actually buys you,
how to build one for TrailLog, and what happens after it's built.
App Bundle vs. APK: What Actually Changes
An .apk is a complete, ready-to-install package containing everything TrailLog needs for
every device it might run on — every screen density's images, every supported CPU architecture. An
.aab contains that same content but organized so Google Play itself can do something an
APK can't: at install time, Play generates a smaller optimized APK containing only
what that specific device actually needs — the right screen density's images, the right CPU
architecture's native code — rather than shipping every variant to every device. The practical result
is a meaningfully smaller download and install size for the end user, without TrailLog's own code
changing at all.
Building a Signed Release Bundle
With the signingConfig wired into the release build type as shown in
App Signing & Keystore, building a signed
.aab is one Gradle command:
./gradlew bundleRelease
Gradle compiles TrailLog's release build type, runs R8 shrinking as configured in
Gradle Kotlin DSL, signs the result with the release keystore, and
produces app/build/outputs/bundle/release/app-release.aab — the exact file uploaded to
the Play Console.
Play Console: Developer Account & App Listing
Uploading that .aab happens through the Play Console, Google's
publishing dashboard, which requires a one-time developer account and, for each app, a new app listing
created before any bundle can be uploaded to it.
Store Listing Essentials
| Field | What it needs |
|---|---|
| Title & description | TrailLog's name and a short/long description of what it does for hikers |
| Screenshots | Actual screens — the trail list, trail detail, add-trail form |
| Feature graphic | A banner image shown at the top of the Play Store listing page |
| Privacy policy URL | A hosted page explaining what data TrailLog collects and why |
The privacy policy URL deserves special attention: it's not optional for TrailLog. Play requires a privacy policy for any app that requests sensitive permissions, and TrailLog requests both location (see Fused Location Provider) and camera (see CameraX) access to log a trail's GPS position and photos — without a valid privacy policy URL in place, Play will reject the listing outright.
Staged Rollout: Testing Tracks
Rather than releasing straight to everyone, Play Console offers staged testing tracks to catch problems before a wide release: internal testing for a small, immediately-available group like TrailLog's own development team; closed testing for a larger, invite-only group of real outside testers; and open testing, publicly joinable but still opt-in, before a full production release. Moving through these tracks in order gives real usage data and crash reports from progressively wider audiences before TrailLog reaches every user on the Play Store.
The Pre-Launch Report
Once a bundle is uploaded to any track, Play Console also generates a pre-launch report — TrailLog installed and exercised automatically on a range of real physical devices in Google's test lab, surfacing crashes, rendering issues on unusual screen sizes, or accessibility problems before a single real user ever installs that build.