An Android app for monitoring new releases of libraries and dependencies such as AndroidX, Firebase and other popular 3rd party libraries on GitHub. Get notified when your favourite library has a new release.
The main goal of this project is to experiment with some of the latest technologies including, libraries, architecture, infrastructure, tooling, design patterns in Android development, and apply them in a non-trivial project. Therefore it's expected that the focus will be mostly on the technologies rather than adding new features. Current tech stack is documented below.
100% Kotlin.
TODO
TODO
TODO
TODO
To get a visualization of the project's dependency graph (Graphviz required):
./gradlew projectDependencyGraph
The generated project dependency graph is available at ./build/reports/dependency-graph/project.dot.png
.
TODO
In addition to Android Lint, detekt has been configured for Kotlin static analysis.
We use CircleCI for CI/CD. We also have a separate workflow for running instrumented tests with GitHub Actions.
- build (CircleCI) - assembles the release APK and App Bundle
- unit_tests (CircleCI) - runs all unit tests
- static_analysis (CircleCI) - runs Android Lint and detekt
- Run Instrumented Tests (GitHub Actions) - runs instrumented tests on Emulators
- deploy_to_play (CircleCI) - deploys the release App Bundle to Google Play's internal test channel
reactivecircus/android-sdk is used for running CI jobs. Dockerfiles are available on GitHub
Running proper automated UI tests on CI remains a challenge especially when operating with free plans for side projects.
Therefore we are running our instrumented tests with a custom GitHub Action - Android Emulator Runner which installs, configures and runs Android Emulators on macOS virtual machines with hardware acceleration enabled.
A Bugsnag API key is required. Place the following in ~/.gradle/gradle.properties
:
RELEASE_PROBE_BUGSNAG_API_KEY=<key>
The following will generate the unsigned APK and AAB (App Bundle) files.
./gradlew assemble bundle
Signed APK and AAB will be generated when the release keystore and signing credentials are provided, which happens on CI builds.