Mar*_*ler 24 gradle build.gradle android-gradle-plugin deprecation-warning build-variant
随着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()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该迁移指南是不是太有帮助; 虽然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()'.
Run Code Online (Sandbox Code Playgroud)
问:如何通过迁移到新API来避免这些弃用警告?
Mar*_*ler 12
variantOutput.getPackageApplication()由更改的变体API引起。
更改
output.outputFile.parent为variant.getPackageApplicationProvider().get().outputs.files[1]至少是一个临时解决方法。
资料来源:@Selvin。
该io.fabric插件引起了variant.getExternalNativeBuildTasks()。
下一个版本的
io.fabric插件将使用variant.getExternalNativeBuildProviders()。
这些是由于com.google.gms.google-services:
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'
这篇博客文章介绍了如何com.google.gms.google-services通过添加该插件生成的XML资源来完全摆脱该插件。从build/generated/res/google-services/debug/values/values.xml成常规debug/values/values.xml。
最简单,最省力的方法可能是:
buildscript {
repositories {
google()
maven { url "https://maven.fabric.io/public" }
}
dependencies {
//noinspection GradleDependency
classpath "com.android.tools.build:gradle:3.2.1"
classpath "io.fabric.tools:gradle:1.28.1"
}
}
Run Code Online (Sandbox Code Playgroud)
有关调试信息: ./gradlew -Pandroid.debug.obsoleteApi=true mobile:assembleDebug
这些都不会warnings以任何方式改变行为。
将Fabric Gradle插件更新为1.28.1
dependencies {
classpath 'io.fabric.tools:gradle:1.28.1'
}
Run Code Online (Sandbox Code Playgroud)
变更日志:https : //docs.fabric.io/android/changelog.html#march-15-2019
通过切换到Gradle的任务配置避免API(如果有),消除了过时的API警告。
| 归档时间: |
|
| 查看次数: |
17944 次 |
| 最近记录: |