我刚刚升级了gradle,我收到一个关于过时通话的警告.怎么修?

Kri*_*lsh 12 android gradle android-build android-studio

我正在使用gradle插件版本3.3.0并且我的gradle包装器正在使用 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

我在我的app/build.gradle文件中使用以下代码:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def apk = output.outputFile //happens here (line 26)
        def newName

        if (variant.buildType.name == "release") {
            newName = "ediary.apk"
        } else {
            newName = "ediary-debug.apk"
        }

        output.outputFileName = new File(
                "./build/",
                output.outputFile.name)

        if (output.zipAlign) {
            output.outputFileName = new File(
                    "./build/",
                    newName.replace("-unaligned", ""))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该项目构建,但我收到此警告:

警告:API 'variantOutput.getPackageApplication()'已过时且已替换为'variant.getPackageApplicationProvider()'.它将在2019年底删除.有关更多信息,请参阅https://d.android.com/r/tools/task-configuration-avoidance.原因:来自:C:\ Users\my name\StudioProjects\core\app\build.gradle:26

我如何重写这个以避免警告?

Aag*_*oEx 0

这是 Android 构建工具 3.3.0 中记录的更改。(我不确定 gradle 4.10 及以上版本)我不是 gradle 专家或类似的专家,但是,我很确定您上面共享的代码不会导致此警告。它可能是您的依赖项之一正在使用警告中提到的 API,但现在已弃用。如果您想继续使用 android build tools 3.3.0,唯一的解决方法是暂时关闭警告。

类似的情况也发生在 Butterknife 图书馆。检查一下,您可能会发现一些有用的信息 Butterknife Issue 1431

我个人将消除此警告并继续前进。只需在 gradle.properties 中添加以下行

android.jetifier.blacklist = butterknife-compiler //replace with possible artifact name
Run Code Online (Sandbox Code Playgroud)