From download to first run
This walkthrough uses the MVVM + Compose preset. Select that preset to reproduce it. Other configurations can require additional steps; the README in your download is specific to your choices.
1. Check the configuration and prerequisites
Use project name MyAndroidApp, package com.example.myandroidapp, MVVM, Jetpack Compose, Hilt, Retrofit, and no database. Install JDK 17, Android SDK 35, and Gradle 8.11.1.
These are the configured template requirements, not a claim of compatibility with every SDK release. The validation record lists the SDKs and combinations previously checked.
2. Inspect the archive before running commands
Generate the ZIP, extract it, and open a terminal inside the folder containing README.md. Preview the source tree in the generator before downloading. The default configuration currently produces 25 files, including the following entry points:
app/build.gradle.ktsapp/src/main/AndroidManifest.xmlapp/src/main/java/com/example/myandroidapp/presentation/home/HomeViewModel.ktsettings.gradle.kts
3. Set up and run the starter
java -version
gradle wrapper --gradle-version 8.11.1
./gradlew assembleDebug
./gradlew testDebugUnitTestAfter building, open the extracted project in Android Studio, sync Gradle, and run the app on an emulator or connected device. The home screen should show a zero count and increment when tapped. The debug APK is under app/build/outputs/apk/debug/ for this unflavored preset.
4. Understand what the included test proves
app/src/test/java/com/example/myandroidapp/CounterRepositoryTest.kt is generated with this preset:
package com.example.myandroidapp
import org.junit.Test
import org.junit.Assert.assertEquals
import kotlinx.coroutines.runBlocking
import com.example.myandroidapp.data.repository.MemoryCounterRepository
class CounterRepositoryTest { @Test fun retainsValue() = runBlocking { val repository = MemoryCounterRepository(); repository.save(3); assertEquals(3, repository.load()) } }
The repository test checks the small in-memory contract. It does not prove that authentication, remote APIs, persistence, or release signing work. Add tests around your own behavior before replacing the demo repository.
5. Connect one real feature
Replace the memory repository through the application’s dependency container. Keep the screen dependent on its state owner, add an initial load and a recoverable failure state, then test a successful operation and an unavailable data source. API clients have placeholder endpoints; selecting an authentication screen does not create a real sign-in service.
Common setup problems
gradle or ./gradlew not found
Install local Gradle 8.11.1, then create the wrapper from the extracted root. On Windows use gradlew.bat for subsequent commands.
SDK location not found
Set ANDROID_HOME or create local.properties with sdk.dir pointing to your Android SDK. Install the compile SDK selected in your configuration.
Java or plugin compatibility failure
Use JDK 17 with the configured AGP 8.9.2, Kotlin 2.1.20, and Gradle 8.11.1 baseline. Check the Gradle JDK setting in Android Studio as well as your shell.
assembleDebug differs from the README
Build-variant options change task names. A flavor configuration can require assembleDevelopmentDebug. The downloaded README reflects your selected options; these commands describe the default preset.
Choosing supported options
The template baseline uses a coordinated Android build toolchain. Hilt and Room use kapt. The starter ViewModel receives a repository through a factory even when a DI integration is selected. Secure preferences is an interface to implement, and build variants change the available Gradle tasks.
If a combination fails, report the configuration and first error. For more context, read the source walkthrough or consult Android’s command-line build documentation.