API 'option.getMergeResources()' устарел и был заменен на 'option.getMergeResourcesProvider()' - программирование
Подтвердить что ты не робот

API 'option.getMergeResources()' устарел и был заменен на 'option.getMergeResourcesProvider()'

Я получаю очень раздражающее предупреждение в своих проектах:

WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
REASON: It is currently called from the following trace:

...

WARNING: Debugging obsolete API calls can take time during configuration. It recommended to not keep it on at all times.
Affected Modules: app

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

Я обновил плагин Gradle, плагин Google Play Services и все зависимости, но проблема все еще остается.

Вот файл уровня проекта build.gradle:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath 'com.google.gms:google-services:4.3.0'
    }
}

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

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

А вот файл модуля приложения build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.foo.bar"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 9
        versionName "1.08"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        checkReleaseBuilds false
        //If you want to continue even if errors found use following line
        abortOnError false
    }
}

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

apply plugin: 'com.google.gms.google-services'

Как видите, я не использую getMergeResources() напрямую, поэтому это должна быть одна из зависимостей. Я закомментировал зависимости по очереди и, наконец, получил пустой список зависимостей. Однако предупреждение все равно было брошено. Затем я понял, что комментирование apply plugin: 'com.google.gms.google-services' решает проблему. Но я использую последний плагин для служб Google и, очевидно, не могу использовать что-либо связанное с Firebase без него.

Как я могу это исправить? Я не люблю понижение версии Gradle, поскольку это только временное исправление.

4b9b3361

Ответ 1

Это вызвано двумя версиями подключаемого модуля сервисов Google (4.3.0 и 4.3.1), и обновление версии до 4.3.2, похоже, решает проблему;


В вашем файле уровня проекта build.gradle под buildscript -> dependencies. Проверьте, есть ли у вас эта строка

classpath 'com.google.gms:google-services:4.3.x'

если это так, измените его на

classpath 'com.google.gms:google-services:4.3.2'

Ответ 3

Пожалуйста, измените вашу зависимость от classpath на уровне проекта Gradle:

buildscript {

    dependencies {

         classpath 'com.android.tools.build:gradle:3.1.4'
    }
 }

Я использую это. Работает нормально. Это стабильная версия. Надеюсь, что эта проблема будет исправлена в будущей версии этой зависимости.