gradle _4.10.1
_とAndroid Gradleプラグインを_3.3.0
_に更新すると、次の警告が表示されます:
警告:API '
variantOutput.getPackageApplication()
'は廃止され、 'variant.getPackageApplicationProvider()
'に置き換えられました。
周囲のコンテキストを含む行(ビルドバリアントによって出力ファイル名を割り当てています):
_applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.getBuildType().getName() in rootProject.archiveBuildTypes) {
def buildType = variant.getBuildType().getName()
if (variant.versionName != null) {
def baseName = output.baseName.toLowerCase()
String fileName = "${rootProject.name}_${variant.versionName}-${baseName}.apk"
// this is the line:
outputFileName = new File(output.outputFile.parent, fileName).getName()
}
}
}
}
_
移行ガイド はあまり役に立ちません。 _variant.outputs.all
_に問題がある可能性があります-何を置き換えるかについての手掛かりがありません-移行ガイドはタスクを参照しており、バリアントをビルドすることを参照していません。 _File → Settings → Experimental → Gradle → Only sync the active variant
_を無効にすると、非推奨の警告がさらに表示されます(要点は、これらのメソッドが直接呼び出されていないことです)。
_WARNING: API 'variant.getAssemble()' is obsolete and has been replaced with 'variant.getAssembleProvider()'.
WARNING: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
WARNING: API 'variantOutput.getProcessManifest()' is obsolete and has been replaced with 'variantOutput.getProcessManifestProvider()'.
WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
WARNING: API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.
WARNING: API 'variant.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()'.
WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
_
Q:新しいAPIへの移行により、これらの非推奨の警告をどのように回避できますか?
少し危険なソリューション:
def variant = findYourVariantSomehow()
def output = findCorrectOutputInVariant(variant)
def fileName = output.outputFileName
def fileDir = variant.packageApplicationProvider.get().outputDirectory.get()
def apkFile = file("$fileDir/$fileName")