- 100% Kotlin.
- App architecture - (MVVM).
- Asynchronous programming - (Corountines).
- Dependency injection - (Koin).
- Observable data holder class - (Livedata).
- HTTP client - (OkHttp).
- Type-safe HTTP client - (Retrofit).
- A Java serialization/deserialization library to convert Java Objects into JSON and back - (Gson).
- Android logging - (Timber).
- Android SharedPreferences delegation library for Kotlin - (Kotpref).
- A beautiful, fluid, and extensible dialogs API for Kotlin & Android - (material-dialogs).
- Android library which makes playing with sensor events & detecting gestures a breeze - (Sensey).
- Useful extensions to eliminate boilerplate code in Android SDK and focus on productivity - (KAndroid).
- Android utilities - (AndroidUtilCode).
- Code Formatting - (ktlint) & (ktlint-gradle).
Manually:
// build.gradle (app)
android {
...
buildTypes {
def BASE_URL = "BASE_URL"
def DEV = "\"" + "<ENTER_YOUR_HOST>" + "\""
def PROD = "\"" + "<ENTER_YOUR_HOST>" + "\""
debug {
buildConfigField "String", BASE_URL, DEV
}
release {
buildConfigField "String", BASE_URL, PROD
...
}
}
...
}
Dynamically:
You can shake your real device, or you can use Cmd+M
when running in an Android emulator on Mac OS and Ctrl+M
on Windows and Linux to open dialog menu.
The dialog menu is disabled in release (production) builds.