【发布时间】:2019-06-09 22:33:08
【问题描述】:
使用 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()
}
}
}
}
migration guide 不太有用;虽然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()'.
问:如何通过迁移到新 API 来避免这些弃用警告?
【问题讨论】:
-
output.outputFile.parent=>variant.getPackageApplicationProvider().get().outputs.files[1].... google 应该修复它,因为问题是output.outputFile它在内部调用getPackageApplication() -
@Selvin 这至少修复了一个警告;然后它抱怨:
variant.getExternalNativeBuildTasks()已过时...需要替换为variant.getExternalNativeBuildProviders() -
呵呵
variant.getExternalNativeBuildProviders()这来自...。让我猜猜... io.fabric 插件... -
@Selvin 你是对的;启用调试后,提示:
com.crashlytics.tools.gradle.ProjectVariantState.resolveDebugNativeLibsPath(ProjectVariantState.groovy:130)。添加评论作为答案,我会接受它,因为它回答了主要问题。 -
所以...这都是 Google 的错...与来自
com.google.gms.google-services的registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)相同...我放弃了...我花了 2 天时间分析这些警告
标签: gradle android-gradle-plugin build.gradle deprecation-warning build-variant