Getting Started
This guide gets the project running on your machine: clone, build the debug variant, then optionally configure Firebase and release signing.
Prerequisites
- Android Studio Quail 2 (2026.1.2), or a later release supporting AGP 9.3. Check the official compatibility table before choosing an IDE; this project pins AGP 9.3.1.
- JDK 21 for both Android Studio's Gradle JDK and command-line builds (
JAVA_HOME). Check the command-line runtime with./gradlew --versionafter cloning. - Android SDK Platform 37 (the project's
compileSdk) and Android SDK Platform-Tools, installed through Android Studio's SDK Manager. Accept the SDK licenses when prompted. - An Android device or emulator running API 24 (Android 7.0) or higher. Use an emulator image with Google Play services when testing Google Sign-In.
Quick Start
-
Clone and enter the checkout:
-
Open the checkout in Android Studio, select JDK 21 as the Gradle JDK, and let Gradle sync. Studio records your SDK location in ignored
local.properties. For command-line-only setup, create that file withsdk.dir=/absolute/path/to/Android/sdkfor your SDK installation. -
Build the debug variant:
The APK is written to
app/build/outputs/apk/debug/app-debug.apk. -
Start an emulator, or connect a device with USB debugging enabled and authorize the computer. Select it in Android Studio and run the
appconfiguration. Alternatively, with one device connected, install from the terminal:Then open Jetpack from the device's launcher. Installation alone does not launch the app.
The tracked template google-services.json allows a fresh checkout to build and open the app.
Authentication and remote sync require your own Firebase project; a successful build does not
verify access to those services. Follow the setup below before testing sign-in and Firestore.
Setting Up Firebase Features
This project includes Firebase integration for authentication, Firestore, and crash reporting. The app also includes Analytics and Performance SDK dependencies; see the Firebase guide for the configured scope.
Note
For complete setup instructions, see the Firebase Setup Guide. It covers creating
your Firebase project, configuring Authentication (Google Sign-In and Email/Password), setting up
Firestore, and downloading google-services.json.
Release Build Setup
Create a keystore file using Android Studio's "Generate Signed Bundle/APK" tool, then place it in
the app/ directory. Create keystore.properties in the project root:
storePassword=your-store-password
keyPassword=your-key-password
keyAlias=your-key-alias
storeFile=your-keystore-file.jks
storeFile is resolved relative to app/, so the example names a file directly inside that
directory. These values are placeholders; use your own signing credentials.
Build the release variant:
Caution
If keystore.properties is missing, app/build.gradle.kts does not fail the build — it silently
signs the release variant with the debug key, warning only via a println that's easy to miss
in build output. A debug-signed release APK can be installed, but Google Play rejects debug-signed uploads.
Switching to a different signing certificate normally prevents an in-place update of an installed
app; keep the same signing identity for updates. Uninstalling to change certificates removes app data.
Never commit keystore.properties, the keystore file, or your real google-services.json.
IDE Setup
- Android Studio reads the project's
.editorconfig; use the project's Spotless commands for repository formatting (see Build & Tooling). - After Gradle sync, open a Kotlin file with an
@Previewcomposable and select Design or Split to view it. See Compose Preview and the project's component guide for preview setup. - Use the provided
.run/configurations for common tasks — "Signing Report" gets the debug SHA-1 needed for Google Sign-In
Further reading
- Firebase Setup Guide — configure Firebase features in your project
- Architecture — how the app is structured
- Adding a Feature — step-by-step feature walkthrough
- Build & Tooling — CI/CD, Spotless, Play Store publishing
- Troubleshooting — build, Firebase, and release issues