Skip to content

Instantly share code, notes, and snippets.

@andhikayuana
Created May 30, 2018 06:45
Show Gist options
  • Save andhikayuana/aa7642778a1ac464cccf18edd2b680a5 to your computer and use it in GitHub Desktop.
Save andhikayuana/aa7642778a1ac464cccf18edd2b680a5 to your computer and use it in GitHub Desktop.
Dependencies Management for Android

How to use

in your build.gradle file like this

...
apply from: 'dependencies.gradle'

dependencies {

    implementation supportLibs
    implementation googlePlayLibs
    implementation networkLibs
    implementation rxJavaLibs
    implementation otherLibs

    debugImplementation debugLibs
    releaseImplementation releaseLibs

    debugImplementation(sherlock) {
        transitive = true
    }

    // APT dependencies
    annotationProcessor annotationProcessorLibs
    testAnnotationProcessor daggerCompiler
    androidTestAnnotationProcessor daggerCompiler

    testImplementation unitTestLibs
    androidTestImplementation androidTestsLibs
}
ext {
versions = [
support : "27.0.2",
firebase : '11.8.0',
okHttp : "3.9.1",
retrofit : '2.3.0',
dagger : '2.14.1',
butterKnife : '8.8.1',
rxJava : '2.1.5',
rxJavaAndroid : '2.0.1',
rxPermissions : '0.9.4@aar',
sqlbrite : '1.1.2',
traceur : '1.0.1',
stetho : '1.5.0',
timber : '4.5.1',
glide : '4.4.0',
chuck : '1.1.0',
leakcanary : '1.5.4',
sherlock : '1.0.4@aar',
espresso : '3.0.1',
testRunner : '1.0.1',
hamcrest : '1.3',
restMock : '0.2.2',
mockito : '2.13.0',
junit : '4.12',
robolectric : '3.4.2',
assertj : '1.2.0'
]
mockito = [mockito: "org.mockito:mockito-core:$versions.mockito"]
junit = [junit: "junit:junit:$versions.junit"]
restMock = [restMock: "com.github.andrzejchm.RESTMock:android:$versions.restMock"]
supportDeps = [
cardView : "com.android.support:cardview-v7:$versions.support",
appcompatV7 : "com.android.support:appcompat-v7:$versions.support",
design : "com.android.support:design:$versions.support",
recyclerView : "com.android.support:recyclerview-v7:$versions.support",
supportAnnotation: "com.android.support:support-annotations:$versions.support",
gridLayout : "com.android.support:gridlayout-v7:$versions.support"
]
rxJava = [
rxJava : "io.reactivex.rxjava2:rxjava:$versions.rxJava",
rxAndroid : "io.reactivex.rxjava2:rxandroid:$versions.rxJavaAndroid",
traceur : "com.tspoon.traceur:traceur:$versions.traceur",
rxRermissions : "com.tbruyelle.rxpermissions:rxpermissions:$versions.rxPermissions"
]
retrofit = [
retrofit : "com.squareup.retrofit2:retrofit:$versions.retrofit",
rxAdapter : "com.squareup.retrofit2:adapter-rxjava2:$versions.retrofit",
gsonConverter: "com.squareup.retrofit2:converter-gson:$versions.retrofit",
sqlbrite : "com.squareup.sqlbrite:sqlbrite:$versions.sqlbrite"
]
okHttp = [
logger: "com.squareup.okhttp3:logging-interceptor:$versions.okHttp",
okhttp : "com.squareup.okhttp3:okhttp:$versions.okHttp",
stetho : "com.facebook.stetho:stetho-okhttp3:$versions.stetho"
]
googlePlay = [
maps : "com.google.android.gms:play-services-maps:$versions.firebase",
crash : "com.google.firebase:firebase-crash:$versions.firebase",
firebaseCore : "com.google.firebase:firebase-core:$versions.firebase",
firebaseMessaging: "com.google.firebase:firebase-messaging:$versions.firebase"
]
onlyDebug = [
chuck : "com.readystatesoftware.chuck:library:$versions.chuck"
]
onlyRelease = [
chuckNoOp : "com.readystatesoftware.chuck:library-no-op:$versions.chuck",
sherlockNoOp : "com.github.ajitsing:sherlock-no-op:$versions.sherlock"
]
unitTest = [
harcrestCore : "org.hamcrest:hamcrest-core:$versions.hamcrest",
harmcrestLib : "org.hamcrest:hamcrest-library:$versions.hamcrest",
hamcrestIntegration : "org.hamcrest:hamcrest-integration:$versions.hamcrest",
robolectric : "org.robolectric:robolectric:$versions.robolectric",
supportAnnotation : "com.android.support:support-annotations:$versions.support",
restMock : "com.github.andrzejchm.RESTMock:android:$versions.restMock",
assertj : "com.squareup.assertj:assertj-android:$versions.assertj",
] + junit + mockito + restMock
androidTests = [
mockitoAndroid : "org.mockito:mockito-android:$versions.mockito",
espressoCore : "com.android.support.test.espresso:espresso-core:$versions.espresso",
espressoContrib : "com.android.support.test.espresso:espresso-contrib:$versions.espresso",
espressoIntents : "com.android.support.test.espresso:espresso-intents:$versions.espresso",
espressoAcc : "com.android.support.test.espresso:espresso-accessibility:$versions.espresso",
espressoIdle : "com.android.support.test.espresso:espresso-idling-resource:$versions.espresso",
espressoConcurrent : "com.android.support.test.espresso.idling:idling-concurrent:$versions.espresso",
espressoNetIdle : "com.android.support.test.espresso.idling:idling-net:$versions.espresso",
testRunner : "com.android.support.test:runner:$versions.testRunner",
testRules : "com.android.support.test:rules:$versions.testRunner"
] + mockito + restMock
leakCannary = "com.squareup.leakcanary:leakcanary-android:$versions.leakcanary"
timber = "com.jakewharton.timber:timber:$versions.timber"
sherlock = "com.github.ajitsing:sherlock:$versions.sherlock"
dagger = "com.google.dagger:dagger:$versions.dagger"
daggerCompiler = "com.google.dagger:dagger-compiler:$versions.dagger"
butterKnife = "com.jakewharton:butterknife:$versions.butterKnife"
butterKnifeCompiler = "com.jakewharton:butterknife-compiler:$versions.butterKnife"
glide = "com.github.bumptech.glide:glide:$versions.glide"
glideCompiler = "com.github.bumptech.glide:compiler:$versions.glide"
glideOkhttp = "com.github.bumptech.glide:okhttp3-integration:$versions.glide"
googlePlayLibs = googlePlay.values()
supportLibs = supportDeps.values()
networkLibs = retrofit.values() + okHttp.values()
rxJavaLibs = rxJava.values()
otherLibs = [butterKnife, timber, dagger, glide, glideOkhttp]
debugLibs = onlyDebug.values() + leakCannary
releaseLibs = onlyRelease.values() + leakCannary
annotationProcessorLibs = [butterKnifeCompiler, daggerCompiler, glideCompiler]
unitTestLibs = unitTest.values() + leakCannary
androidTestsLibs = androidTests.values() + supportLibs
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment