WARNING: API ‘variant.getPreBuild()’ is obsolete and has been replaced with ‘variant.getPreBuildProvider()’.

タイトルの件、
Gradle のバージョンアップにともない警告され出したのでメモしておきます。

はじめに、
本記事投稿(2019/10/22)時点では警告の解消には至っておらず、未解決です。

警告箇所を特定した手順と、
解決のための忘備録として未解決の理由を残しておくものとします。

なにがあったのか

きっかけは compileSdkVersion と targetSdkVersion の更新作業中の Gradle Sync の実行でした。

BUILD SUCCESSFUL in 0s 12 actionable tasks: 2 executed, 10 up-to-date WARNING: API 'variant.getPreBuild()' is obsolete and has been replaced with 'variant.getPreBuildProvider()'. It will be removed at the end of 2019. For more information, see https://d.android.com/r/tools/task-configuration-avoidance. To determine what is calling variant.getPreBuild(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information. Affected Modules: app

ビルドが成功しているので、現時点では気にしなくて良いんだろうけど、今のうちに解消しておくかと思い立ち、警告文にあるようにデバッグ情報を見るために gradle.properties に下記オプションを追加して再度 Gradle Sync を実行。

android.debug.obsoleteApi=true

下記、コンソールに出力された StackTrace の抜粋ですが、どうも OssLicensesPlugin が原因のよう?

REASON: It is currently called from the following trace:
java.lang.Thread.getStackTrace(Thread.java:1556)
com.android.build.gradle.internal.errors.DeprecationReporterImpl.reportDeprecatedApi(DeprecationReporterImpl.kt:79)
com.android.build.gradle.internal.api.BaseVariantImpl.getPreBuild(BaseVariantImpl.java:251)
com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated.getPreBuild(null:-1)
...
com.google.gms.oss.licenses.plugin.OssLicensesPlugin$_apply_closure1.doCall(OssLicensesPlugin.groovy:37)
...

というわけで、私のアプリの場合はOSSのライセンスリストを自動作成するのに利用している OSS Licenses Gradle Plugin と断定して良さそうでした。

解決方法を模索

とりあえずプラグインのバージョンを上げてみるという行き当たりばったり発動させて、
ルートの build.gradle と、

    dependencies {
        ...
//        classpath 'com.google.gms:oss-licenses:0.9.2'
        classpath 'com.google.android.gms:oss-licenses-plugin:0.10.0'
        ...
    }

モジュールの build.gradle の当該プラグインのバージョンを更新しました。
※0.9.5 くらいでパッケージ変わっている?

//apply plugin: 'com.google.gms.oss.licenses.plugin'
apply plugin: 'com.google.android.gms.oss-licenses-plugin'

改めて Gradle Sync 実行すると、

BUILD SUCCESSFUL in 4s
12 actionable tasks: 12 executed
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:
java.lang.Thread.getStackTrace(Thread.java:1556)
com.android.build.gradle.internal.errors.DeprecationReporterImpl.reportDeprecatedApi(DeprecationReporterImpl.kt:79)
com.android.build.gradle.internal.api.BaseVariantImpl.getMergeResources(BaseVariantImpl.java:349)
com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated.getMergeResources(null:-1)
...
com.google.android.gms.oss.licenses.plugin.OssLicensesPlugin$_apply_closure1.doCall(OssLicensesPlugin.groovy:72)
...

WARNING: API ‘variant.getMergeResources()’ is obsolete and has been replaced with ‘variant.getMergeResourcesProvider()’.

なんかちょっと内容変わりましたが、ほぼ進展ありませんでした。。

結局どうするの?

最終的に、警告の内容をもって Google 先生に聞いたところ Github Issue に行き着きました。

This should be fixed by #102, which unfortunately was not in the 0.10.0 release.

https://github.com/google/play-services-plugins/issues/57

私も同様の結果を得たため、時点の最新バージョンにおいても、まだ問題として残っているそうです。

今後解決されると思われるので、
Github Issue を確認するのを忘れないようにしないといけません。

が、ひとまず以上です!

コメント

タイトルとURLをコピーしました