Error: when I replace compile with implementation in gradle(dependency)

Aashish picture Aashish · Mar 27, 2018 · Viewed 10.3k times · Source

I update my Android Studio from 3.0.1 to 3.1.0

But after the update when I build my project it shows 2 warning:

1. Replace compile with implementation (and compile support will be ended at end of 2018)

2. Replace testCompile with testImplementaion (and testCompile support will be ended at end of 2018)

So, finally do these changes but after that, it shows some error:

error

build.gradle(Module:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "biz.coolpage.aashish.app"
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 4
        versionName "1.2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:design:27.1.0'
    implementation project(':library')
}

build.gradle(Project:Abc)

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
        maven {
            url "https://maven.google.com"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Answer

HawkPriest picture HawkPriest · Mar 27, 2018

Try using api instead of implementation inside your library's gradle. If you have submodules and want to expose the libraries in a transitive manner api should be used. implementation would import the library for the specific project. Also you might have to add

implementation (project(":library")) {
    transitive = true
}

For example in your build.gradle file of your library module use:

api 'com.android.support:appcompat-v7:27.1.0' 

instead of

implementation 'com.android.support:appcompat-v7:27.1.0'

If nothing works you can try to invalidate cache and restart