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

Tob*_*ich 21 android android-studio android-gradle-plugin

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

警告:API'variable.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 =真

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

该文件如下:

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()
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

那么这应该添加到哪里?或者我是否将gradle文件的"Project"和"app"的定义混合在一起?

Nit*_*esh 33

你需要把它放在gradle.properties文件,该文件存在在项目层次,应用程序文件夹之外没有build.gradle你目前要做的文件.

来自android开发者文档

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

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

您可以查看此链接.


All*_*len 5

最简单的方法是在android项目根目录的终端中。

运行以下命令:

 ./gradlew -Pandroid.debug.obsoleteApi=true
Run Code Online (Sandbox Code Playgroud)