variantOutput.getPackageApplication() の警告を解消する

2019/07/15

Androidのアプリ開発で何も考えずにGradleやらなにやらのバージョンを上げていたら、ビルド時にこんな感じの警告が出るようになってしまいました。

WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
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 variantOutput.getPackageApplication(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app

エラーメッセージに書かれている通りオプションを追加して詳細を見てみます。

コマンドラインに指定するのではなく gradle.properties に設定を追加すればOK。(コマンドラインでもいいですけど)

android.debug.obsoleteApi=true

もう一度ビルドしてみるとメッセージが変わります。

WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
REASON: Called from: E:\AndroidStudio\EXAMPLE_APP\app\build.gradle:64
WARNING: Debugging obsolete API calls can take time during configuration. It's recommended to not keep it on at all times.
Affected Modules: app

build.gradle の64行目が犯人、と。

64行目近辺はapkのファイル名をいい感じにつけるために追加した処理でした。具体的に見ていくと output.outputFile が問題のようです。

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) { // この行が問題
            def nameSuffix = variant.buildType.hasProperty('versionNameSuffix') ? variant.buildType.versionNameSuffix : ""
            nameSuffix = nameSuffix == null ? "" : nameSuffix
            outputFileName = "${APPLICATION_NAME}-${defaultConfig.versionName}${nameSuffix}.apk"
        }
    }
}

output.outputFileoutputFileName に置き換えます。

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        if (output.outputFileName != null && output.outputFileName.endsWith('.apk')) { // 修正後
            def nameSuffix = variant.buildType.hasProperty('versionNameSuffix') ? variant.buildType.versionNameSuffix : ""
            nameSuffix = nameSuffix == null ? "" : nameSuffix
            outputFileName = "${APPLICATION_NAME}-${defaultConfig.versionName}${nameSuffix}.apk"
        }
    }
}

これで警告が出なくなりました。めでたしめでたし。

参考URL




関連(するかもしれない)記事


おススメ