Android Gradle - 在哪里添加“android.debug.obsoleteApi=true”

Android Gradle - Where to add "android.debug.obsoleteApi=true"

提问人:Tobias Reich 提问时间:1/15/2019 更新时间:1/13/2020 访问量:11882

问:

我更新到了 AndroidStudio 3.3,它现在给出了有关已弃用库的警告:

警告:API 'variant.getExternalNativeBuildTasks()' 已过时且 已替换为“variant.getExternalNativeBuildProviders()”。它 将于 2019 年底删除。有关详细信息,请参阅 https://d.android.com/r/tools/task-configuration-avoidance。自 确定调用 variant.getExternalNativeBuildTasks() 的内容,使用 -Pandroid.debug.obsoleteApi=true 以显示堆栈跟踪。受影响的模块:app

他们的网站上提供了更多信息:

https://developer.android.com/studio/releases/gradle-plugin?utm_source=android-studio#behavior_changes

但我并不完全理解。他们说:

要查看其他信息,您需要在 项目的 gradle.properties 文件:

android.debug.obsoleteApi=true

所以我拿了标有 (Project: [my project]) 的 build.gradle

该文档如下所示:

buildscript {
    ext.kotlin_version = '1.3.10'
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.google.gms:google-services:4.0.1'
        classpath 'com.github.triplet.gradle:play-publisher:1.1.5'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://jitpack.io"
        }
        mavenCentral()
    }
}

project.ext.preDexLibs = !project.hasProperty('disablePreDex')

subprojects {
    project.plugins.whenPluginAdded { plugin ->
        if ("com.android.build.gradle.AppPlugin" == plugin.class.name) {
            project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
        } else if ("com.android.build.gradle.LibraryPlugin" == plugin.class.name) {
            project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
        }
    }
}
repositories {
    mavenCentral()
}

但是,我不明白,我现在应该在哪里添加那行。无论我把它放在哪里,我总是会遇到错误。

例如,当直接写在第一行时:

无法获取根项目 [我的项目] 的未知属性“android” 类型为 org.gradle.api.Project。

那么这应该在哪里添加呢?还是我混合了 gradle 文件的“项目”和“应用”的定义?

安卓 android-studio android-gradle-插件

评论

0赞 sunlover3 8/19/2019
现在您知道了这个问题的解决方案,你找到警告的解决方案了吗?我在过时的variant.getMergeResources()上遇到了同样的问题。我可以使用任何提示。谢谢!
0赞 Tobias Reich 8/20/2019
老实说,我已经有一段时间没有看过这个问题了,但一旦你发现任何事情,请告诉我。:)

答:

51赞 Nitesh 1/15/2019 #1

您需要将其放在项目级别的文件中,该文件位于应用程序文件夹之外,而不是您当前尝试执行的文件中。gradle.propertiesbuild.gradle

来自 android 开发者文档

使用过时的 API 时提供更好的调试信息:当插件检测到您正在使用不再受支持的 API 时,它现在可以提供更详细的信息来帮助您确定该 API 的使用位置。要查看其他信息,您需要在项目的 gradle.properties 文件中包含以下内容

android.debug.obsoleteApi=true 您还可以通过从命令行传递 -Pandroid.debug.obsoleteApi=true
来启用该标志。

您可以查看此链接

评论

0赞 Tobias Reich 1/15/2019
谢谢,那是我的错误!
0赞 Nitesh 1/15/2019
乐于帮助:)
0赞 toto_tata 1/19/2019
它和'gradle-wrapper.properties'文件一样吗?
0赞 Leonardo Sibela 7/4/2019
@Regis_AG 不,他们不是。更多信息可以在这里找到:stackoverflow.com/questions/48701867/...
4赞 Vivek Mishra 1/15/2019 #2

如错误消息中所述,您应该将其添加到文件中,而不是添加到任何文件中gradle.propertiesbuild.gradle

评论

0赞 Tobias Reich 1/15/2019
谢谢你的提示。这就是解决方案。
11赞 Allen 8/7/2019 #3

最简单的方法是在 android 项目根目录的终端中执行此操作。

运行以下命令:

 ./gradlew -Pandroid.debug.obsoleteApi=true