Solve the compatibility problem of the support library version: the support package is underlined in red when it is introduced

If the support library version of the referenced third-party library is lower (or inconsistent) than that in app build.gradle, the following problems may occur:

all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes)

As shown in the figure below:

It is difficult to change the version of the support library used by the third-party library. If there are many libraries used, the workload will be very heavy. At this time, we can consider forcing all modules to use the same support library version.

Add in app build.gradle:

configurations.all{
    resolutionStrategy.eachDependency{ DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.1.0'
            }
        }
    }
}

Among them, 27.1.1 is the version number of the support library you want to use. You can change it to another one as needed. Attach the build.gradle file

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'

android {
    compileSdkVersion 27


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    //Force all modules to use the same support library version
    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '27.1.1'
                }
            }
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')

    testImplementation 'junit:junit:4.12'
    api 'com.android.support.test:runner:1.0.2'
    api 'com.android.support.test.espresso:espresso-core:3.0.2'
    api 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation project(':mavo-annotations')

    //Android Support package
    api 'com.android.support:design:27.1.1'
    api 'com.android.support:appcompat-v7:27.1.1'
    api 'com.android.support:support-v4:27.1.1'

    //Font Icon
    api 'com.joanzapata.iconify:android-iconify-ionicons:2.2.2'
    api 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2'

    //fragmentation
    api 'me.yokeyword:fragmentation:1.3.6'
    api 'me.yokeyword:fragmentation-swipeback:1.3.6'

    //Butter Knife
    api 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    //Network request dependency
    api 'com.squareup.okio:okio:1.13.0'
    api 'com.squareup.okhttp3:okhttp:3.8.1'
    api 'com.squareup.retrofit2:retrofit:2.3.0'
    api 'com.squareup.retrofit2:converter-scalars:2.3.0'

    //AVLoadingIndicatorView
    api 'com.wang.avi:library:2.1.3'

    //JSON relies on Android
    api 'com.alibaba:fastjson:1.1.57.android'

    //banner dependence
    api 'com.bigkoo:convenientbanner:2.0.5'
    api 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar'

    //Log
    api 'com.orhanobut:logger:2.1.1'
    //Database dependency
    api 'org.greenrobot:greendao-generator:3.2.2'
    api 'org.greenrobot:greendao:3.2.2'
}

Tags: Mobile Android Gradle ButterKnife Junit

Posted on Mon, 09 Dec 2019 01:28:53 -0800 by Rabioza123