Android Kotlin Boilerplate refers to standardized methods, procedures and files that may be used over again for efficiency developing new Android mobile applications.
- An Android app with modular architecture and MVVM architectural pattern.
- Splash screen with app version and empty MainActivity.
- Network connectivity interceptor for HTTP requests.
- Dagger2 for dependencies injection.
- ViewBinding for activities and fragments.
- Timber for logging purposes.
- Android Studio EditorConfig file to maintain consistent coding styles.
- Gradle’s Kotlin DSL.
- SonarQube configuration files.
- JaCoCo maven plugin to generate test coverage reports.
- ktlint for static code analysis.
- LeakCanary for memory leaks detection.
- Fastlane for CI/CD tasks.
- SonarCloud for static code analysis.
- Github workflows for automated PR actions and Firebase app distribution.
- Azure DevOps Pipelines workflows for automated PR actions.
- dokka for Kotlin's documentation generation.
Clone this repository and import it into Android Studio
git clone https://github.com/celerik/android-kotlin-boilerplate.git
Herein you can find multiple targets that the app takes into account:
Staging | Production | |
---|---|---|
Internal |
Debug | Debug |
External |
Release | Release |
Where the following formed variants are built for staging purposes:
- stagingInternalDebug
- stagingInternalRelease
And these ones for production purposes:
- productionInternalDebug
- productionInternalRelease
- productionExternalDebug
- productionExternalRelease
Sidenote: environments with Internal keyword, for example, could set a specific timeout for debug servers, whereas environments with External keyword could have another timeout according to production servers' features. In the other hand, environments with Debug keyword, could keep a debug logger activated; whereas environments with Release keyword don't.
In order to sign your debug app build using debug-keystore.jks keystore, these are the credentials you will have to take in mind:
STORE_FILE = ./app/debug-keystore.jks
STORE_PASSWORD = android
KEY_ALIAS = android_celerik
KEY_PASSWORD = android