DEV Community

Mahendran
Mahendran

Posted on β€’ Originally published at mahendranv.github.io

3 2

Android Utility belt β€” Collection of dependencies for a greenfield project

Starting an android project will bring in a new set of challenges πŸ‘€ aka adding tons of Gradle dependencies.

Even though you use these dependencies in almost all your applications, you can't just grab them from the previous project because it might be an outdated version. By the time you find the latest version and add it to the project, you'd lose half the energy. Coming to the point!!

…

In this post, I composed a list of dependencies that I use in most of my projects. They're at the latest version when I write it(Oct 2021). For convenience, hyperlinked the maven central page so that picking the latest version is just a click away.

I highly recommend using this template project for greenfield projects. From DI/logger to instrumentation test everything has been perfectly set up. Though, the network dependencies are not present in the template. So, look up below and add dependencies as you see fit.

…

Network

OkHttp3

implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.2"))
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:logging-interceptor")

or

implementation 'com.squareup.okhttp3:okhttp:4.9.2'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.2'
testImplementation("com.squareup.okhttp3:mockwebserver:4.9.2")
implementation 'com.squareup.okhttp3:mockwebserver3:5.0.0-alpha.2'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œokhttp-bom   πŸ“Œ logging-interceptor

πŸ“Œ mockwebserver   πŸ“Œ mockwebserver3

…

Retrofit

implementation 'com.squareup.retrofit2:retrofit:2.9.0'

implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ retrofit   πŸ“Œconverter-gson

πŸ“Œ converter-moshi   πŸ“Œ adapter-rxjava2

πŸ“Œ adapter-rxjava3


Threading and dispatchers

Coroutines

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.5.2'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œcoroutines-core   πŸ“Œ coroutines-android

πŸ“Œ coroutines-test

…

RXJava

  implementation 'io.reactivex.rxjava3:rxjava:3.1.2'    
  implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ rxjava   πŸ“Œrxandroid


Serialization

Moshi

implementation 'com.squareup.moshi:moshi:1.12.0'
implementation 'com.squareup.moshi:moshi-kotlin-codegen:1.12.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ moshi   πŸ“Œmoshi-codegen

…

GSON

implementation 'com.google.code.gson:gson:2.8.8'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ gson


Jetpack

Following dependencies are also available in Google maven.

Livedata / viewmodel

implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ viewmodel-ktx   πŸ“Œ livedata-ktx

…

UI

implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
implementation 'androidx.recyclerview:recyclerview:1.2.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ material   πŸ“Œconstraintlayout

πŸ“Œ recyclerview

…

Fragment

implementation 'androidx.fragment:fragment-ktx:1.3.6'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ fragment-ktx

…

Navigation

implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'


androidTestImplementation 'androidx.navigation:navigation-testing:2.3.5'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ navigation-fragment-ktx   πŸ“Œnavigation-ui-ktx

πŸ“Œ navigation-testing

…

Room - DB

 def room_version = "2.3.0"

implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
 // optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
// optional - Test helpers
testImplementation "androidx.room:room-testing:$room_version"

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ room-ktx


Dependency injection

Dagger

Guide: https://developer.android.com/training/dependency-injection/dagger-android

// app level Gradle
apply plugin: 'kotlin-kapt'


{
    implementation 'com.google.dagger:dagger:2.39.1'
  kapt 'com.google.dagger:dagger-compiler:2.39.1'
}

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ dagger

…

Hilt

Guide: https://developer.android.com/training/dependency-injection/hilt-android#groovy

// project level gradle
buildscript {
    dependencies {
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.39.1'
    }
}

// app level gradle
apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'

dependencies {
    implementation "com.google.dagger:hilt-android:2.39.1"
    kapt "com.google.dagger:hilt-compiler:2.39.1"

    implementation 'com.google.dagger:hilt-android-testing:2.39.1'
}

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ hilt-android   πŸ“Œhilt-android-testing


Image loaders

Glide

implementation 'com.github.bumptech.glide:glide:4.12.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ glide

…

Coil

implementation 'io.coil-kt:coil:1.4.0'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ coil


Testing

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

testImplementation 'com.google.truth:truth:1.1.3'

Enter fullscreen mode Exit fullscreen mode

πŸ“Œ Google truth

Image of Timescale

πŸš€ pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applicationsβ€”without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post β†’

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more