Ошибка: когда я заменяю компиляцию реализацией в gradle (зависимость)

Я обновляю свою Android Studio с 3.0.1 до 3.1.0

Но после обновления, когда я собираю свой проект, он показывает 2 предупреждения:

1. Замените компиляцию реализацией (и поддержка компиляции будет прекращена в конце 2018 года)

2. Замените testCompile на testImplementaion. (и поддержка testCompile будет прекращена в конце 2018 года)

Итак, наконец, внесите эти изменения, но после этого он показывает какая-то ошибка:

Ошибка: когда я заменяю компиляцию реализацией в gradle (зависимость)

build.gradle (Модуль: приложение)

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 (Проект: 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
}

Можете ли вы показать, что находится в вашем build.gradle

Pulkit 27.03.2018 16:37

@Pulkit обновил мой вопрос с помощью build.gradle

Aashish 27.03.2018 16:45

Можете ли вы показать, каким был ваш файл Gradle до этого?

WoogieNoogie 27.03.2018 16:52

@WoogieNoogie до этого в разделе dependency вместо implementation было написано compile вот и все.

Aashish 27.03.2018 16:58

Как насчет файла gradle вашей библиотеки?

WoogieNoogie 27.03.2018 16:59

В файле gradle моей библиотеки я делаю те же изменения. то есть заменить компиляцию реализацией.

Aashish 27.03.2018 17:01

Можете ли вы добавить второй build.gradle, просто хотите быть уверенным в одном

Pulkit 27.03.2018 17:09
5
7
9 547
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте использовать api вместо implementation внутри градиента вашей библиотеки. Если у вас есть подмодули и вы хотите предоставить библиотеки транзитивным способом, следует использовать api. implementation импортирует библиотеку для конкретного проекта. Также вам, возможно, придется добавить

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

Например, в вашем файле build.gradle вашего библиотечного модуля используйте:

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

вместо

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

Если ничего не работает вы можете попробовать аннулировать кеш и перезапустить

Я уже пытался сделать кеш недействительным и перезапустить, но ошибка все еще сохраняется.

Aashish 27.03.2018 17:03

вы добавили api вместо implementation в модуль вашей библиотеки, например api "com.android.support:appcompat-v7:${supportLibVersion}"?

HawkPriest 27.03.2018 17:07

Спасибо, это работает, когда я заменяю реализацию на api, вся ошибка исчезает. Но я хочу знать, почему предлагается заменить на implementation вместо api.

Aashish 27.03.2018 17:17

как упоминалось в комментарии, implementation является окончательным импортом для уровня проекта, и у вас не может быть транзитивного свойства, для которого вам нужно, чтобы api проверил этот ответ stackoverflow.com/questions/44493378/…

HawkPriest 27.03.2018 17:26

Лучше поместить эту ссылку на комментарий в свой ответ в качестве ссылки.

Aashish 27.03.2018 17:35

Был там; просто убедитесь, что ваш плагин gradle обновлен, и вы ничего не добавляли и не удаляли в исходный код плагинов, и все готово

Другие вопросы по теме