Я обновляю свою Android Studio с 3.0.1 до 3.1.0
Но после обновления, когда я собираю свой проект, он показывает 2 предупреждения:
1. Замените компиляцию реализацией (и поддержка компиляции будет прекращена в конце 2018 года)
2. Замените testCompile на testImplementaion. (и поддержка testCompile будет прекращена в конце 2018 года)
Итак, наконец, внесите эти изменения, но после этого он показывает какая-то ошибка:
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
}
@Pulkit обновил мой вопрос с помощью build.gradle
Можете ли вы показать, каким был ваш файл Gradle до этого?
@WoogieNoogie до этого в разделе dependency вместо implementation было написано compile вот и все.
Как насчет файла gradle вашей библиотеки?
В файле gradle моей библиотеки я делаю те же изменения. то есть заменить компиляцию реализацией.
Можете ли вы добавить второй build.gradle, просто хотите быть уверенным в одном
Попробуйте использовать 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'
Если ничего не работает вы можете попробовать аннулировать кеш и перезапустить
Я уже пытался сделать кеш недействительным и перезапустить, но ошибка все еще сохраняется.
вы добавили api вместо implementation в модуль вашей библиотеки, например api "com.android.support:appcompat-v7:${supportLibVersion}"?
Спасибо, это работает, когда я заменяю реализацию на api, вся ошибка исчезает. Но я хочу знать, почему предлагается заменить на implementation вместо api.
как упоминалось в комментарии, implementation является окончательным импортом для уровня проекта, и у вас не может быть транзитивного свойства, для которого вам нужно, чтобы api проверил этот ответ stackoverflow.com/questions/44493378/…
Лучше поместить эту ссылку на комментарий в свой ответ в качестве ссылки.
Был там; просто убедитесь, что ваш плагин gradle обновлен, и вы ничего не добавляли и не удаляли в исходный код плагинов, и все готово
Можете ли вы показать, что находится в вашем build.gradle