The goal of this Template is to be our starting point for new projects, following the best development practices. It's our interpretation and adaptation of the official architecture guidelines provided by Google. And it's inspired by Google's NowInAndroid.
- Data (for database, API and preferences code)
- Domain (for business logic and models)
- AndroidApp (for UI logic, with MVVM)
- Mockk library
- Unit tests
- Application tests
- example on how to work with tests
- Activity tests (with Compose Testing)
- example on how to work with coroutine scopes in tests
- This version brings Modularization
- Version Management (with Version catalog)
- Shared Build Logic (with Convention plugins)
- Dependency injection (with Hilt)
- Network calls (with Ktor)
- Reactive programming (with Kotlin Flows)
- Android architecture components to share ViewModels during configuration changes
- Splash Screen Support
- Google Material Design library
- Declarative UI (with Jetpack Compose)
- Compose Navigation (with Hilt Support and Assisted Inject Example)
- Edge To Edge Configuration
- Download this repository extract and open the template folder on Android Studio
- Rename the app package
io.bloco.template
- Check if the manifest package was renamed along with the package
- Replace composables with the Template name
- On
androidApp/build.gradle
, change the applicationId to the new app package - On
androidApp/build.gradle
, update the dependencies Android Studio suggests - On
string.xml
, set your application name
If you run the Project inside the NewProjectCI all the above steps are done by you automatically, you can run the project using Android Studio then Opening the Main.kt file and press "Run MainKt". You will be prompted about a new package name and app name
- On
Theme.kt
&Color.kt
set your application style - Replace the App Icons
- Delete unwanted example files
- Run
./gradlew dependencyUpdates
and check for dependencies - Ready to Use
And you're ready to start working on your new app.
- Android Template contains
.github/workflows
for lint check, unit testing and dependency checks. You can easily take this project worflow and repurpose it with a few path changes, you can also find a commented example in test.yml for Instrumentation Testing and CodeCoverage that we advice to keep a clean project, you will however need to replace the secret keys with your own.