Cool Dependency Setup for building Android App from Scratch
Tags: tools, notes, softwaredevelopment, programming
Published: 2019-10-01 17:40:05

---
title: Cool Dependency Setup for building Android App from Scratch
published: true
tags: Tools,Notes,software development,Programming
cover_image: https://esabook.files.wordpress.com/2019/10/2494990_fde0_2.jpg
canonical_url: https://esabook.wordpress.com/2019/10/01/cool-dependency-setup-for-building-android-app-from-scratch/
---

> Good notes to get better on Android App Development, including for:

- Small Apk size
- Smoothness Experience
- Testable
- Easy for Error Inspection
- Easy for Code Change
- Easy Development
- Monitored

# **Core**

*Goal: Write Once for all android compatibility.*
  - [Android KTX](https://developer.android.com/kotlin/ktx.html)

# **Networking**

*Goal: Caching, Fail Handler, Simple usage, Overriddable*
  - [Retrofit](https://square.github.io/retrofit/)
  - [Volley](https://developer.android.com/training/volley/index.html) for complex customization
  - [OkHttp3](https://square.github.io/okhttp/)

# **Image Loader**

*Goal: Faster in current competition than other for lazy loading*
  - [Glide](https://bumptech.github.io/glide/)

# **Local Database**

*Goal: Fast DB access, small footprint, easy migration*
  - [ObjectBox](https://objectbox.io/)

# **Logging Manager**

*Goal: Single gate keeper for other logger or analytics.*
  - [Timber](https://github.com/JakeWharton/timber)

# **Resource Builder**

*Goal: Vector, animation support*
  - [Lottie](https://github.com/airbnb/lottie-android)
  - [Verctor Drawable](https://developer.android.com/guide/topics/graphics/vector-drawable-resources)

# **Media Recognition**

*Goal: Easy to use, Active Community*
  - [ZXing](https://github.com/zxing/zxing)
  - [OpenCV](https://opencv.org/android/)

# **Tools**

*Goal: Faster Development*
  - [Dagger](https://github.com/google/dagger)
  - [Gson](https://github.com/google/gson)
  - [AutoValue](https://github.com/google/auto/blob/master/value/userguide/index.md)
  - [EventBus](http://greenrobot.org/eventbus/)
  - [DataBinding](https://developer.android.com/topic/libraries/data-binding)
  - [AndroidX](https://developer.android.com/jetpack/androidx)
  - [Guava](https://github.com/google/guava)
  - [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager/basics)

# **Testing**

*Goal: Easy Integration, Validation*
  - [Mockito](https://site.mockito.org/)
  - [JUnit](https://junit.org/junit5/)
  - [Robolectric](https://github.com/robolectric/robolectric)
  - [PowerMock](https://github.com/powermock/powermock)
  - [Espresso](https://developer.android.com/training/testing/espresso)
  - [SpotBugs](https://github.com/spotbugs/spotbugs)
  - [Benchmark](https://developer.android.com/studio/profile/benchmark.html)
  - [UI Automator](https://developer.android.com/training/testing/ui-automator)
  - [Leak Canary](https://square.github.io/leakcanary/fundamentals/)

# **CI/CD**
  - [Bundle Tool](https://developer.android.com/platform/technology/app-bundle)
  - [MMKV](https://github.com/Tencent/MMKV)
  - [Google Firebase](https://firebase.google.com/docs/)/[Microsoft AppCenter](https://appcenter.ms/)/[AWS Amplify](https://aws.amazon.com/amplify/)/[Bitrise](https://www.bitrise.io/)