variantOutput.getPackageApplication() の警告を解消する
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.outputFile
を outputFileName
に置き換えます。
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
関連(するかもしれない)記事
おススメ