This is an sample project to experiment with architectures, modules structures, frameworks etc.
- Checkout repository
- Open with Android Studio Arctic Fox (current stable)
- Have a ☕ and wait for Android Studio to finish syncing
- Create free account at https://www.thedogapi.com/ for api token
- add x-api-key from mail as property dogApiKey to your local gradle.properties Example: dogApiKey=XXXX
./gradlew dependencyUpdates
./gradlew projectDependencyGraph -Pcustom
./gradlew connectedDebugAndroidTest
// run ui tests
Build release apk
gradle :app:assembleRelease -PenableReleaseSigning=true
- multimodule project (feature wise)
- dynamic modules
- clean architecture
- mvi with compose
Consuming following api: https://www.thedogapi.com/
Try all the android stuff: Jetpack Libraries
Here what is interesting:
- benchmark
- splash api
- room
- datastore
- savedstate
- paging
- startup
- testing
- workmanager
- all compose
- compose navigation
- app
- feature
- domain
- data
- ui
- remote
- cache
- test-data
- common
- common-android
- common-remote
- common-cache etc.
- Junit5 based mockito tests with coroutines & turbine for flow testing
- Robolectric for integration tests with hilt
- Shot for compose screenshot testing
with paparazzi: https://github.com/cashapp/paparazzi with shot: https://github.com/pedrovgs/Shot
For android 10 or higher
- adb shell settings put global hidden_api_policy 1
gradle debugExecuteScreenshotTests -Precord
gradle debugExecuteScreenshotTests
- test pyramid implementation
- offline first poc
- kover usage
- moshix usage
- run gradle task
gradle dogs-ui:compileReleaseKotlin -PcomposeCompilerReports=true -Pandroidx.enableComposeCompilerReports=true -Pandroidx.enableComposeCompilerMetrics=true --rerun-tasks
- go to build/compose_compiler directory
- check x_release-classes.txt & other files for more detailed info
gradle-profiler --benchmark --scenario-file gradle-comp.scenarios