web-dev-qa-db-fra.com

Android Gradle - Où ajouter "Android.debug.obsoleteApi = true"

J'ai mis à jour vers AndroidStudio 3.3 qui donne maintenant un avertissement sur les bibliothèques obsolètes:

AVERTISSEMENT: l'API 'variant.getExternalNativeBuildTasks ()' est obsolète et a été remplacée par 'variant.getExternalNativeBuildProviders ()'. Il sera supprimé à la fin de 2019. Pour plus d'informations, voir https://d.Android.com/r/tools/task-configuration-avoidance . Pour déterminer ce qui appelle variant.getExternalNativeBuildTasks (), utilisez -Pandroid.debug.obsoleteApi = true sur la ligne de commande pour afficher une trace de pile. Modules concernés: application

Il y a plus d'informations sur leur site Web:

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

mais je ne le comprends pas exactement. Ils disent:

Pour voir les informations supplémentaires, vous devez inclure les éléments suivants dans le fichier gradle.properties de votre projet:

Android.debug.obsoleteApi = true

J'ai donc pris le build.gradle qui est marqué avec (Projet: [mon projet])

Le document ressemble à ceci:

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()
}

Cependant, je ne comprends pas où je dois ajouter cette ligne maintenant. Et peu importe où je le mets, je reçois toujours une erreur.

Par exemple. lors de l'écriture directement dans la première ligne:

Impossible d'obtenir la propriété inconnue 'Android' pour le projet racine [mon projet] de type org.gradle.api.Project.

Alors, où est-ce censé être ajouté? Ou est-ce que je mélange les définitions de "Projet" et "application" pour les fichiers Gradle?

25
Tobias Reich

Vous devez le mettre dans gradle.properties fichier présent au niveau du projet, en dehors du dossier de l'application pas dans build.gradle fichier que vous essayez actuellement de faire.

Depuis la documentation du développeur Android

Meilleures informations de débogage lors de l'utilisation d'une API obsolète: lorsque le plugin détecte que vous utilisez une API qui n'est plus prise en charge, il peut désormais fournir des informations plus détaillées pour vous aider à déterminer où cette API est utilisée. Pour voir les informations supplémentaires, , vous devez inclure les éléments suivants dans le fichier gradle.properties de votre projet :

Android.debug.obsoleteApi = true
Vous pouvez également activer l'indicateur en passant -Pandroid.debug.obsoleteApi = true à partir de la ligne de commande.

Vous pouvez vérifier cela Lien .

38
Nitesh

Le moyen le plus simple est de le faire dans le terminal à la racine du projet Android.

Exécutez la commande suivante:

 ./gradlew -Pandroid.debug.obsoleteApi=true
6
Allen

Comme indiqué dans le message d'erreur, vous devez ajouter que dans gradle.properties fichier et pas dans l'un de vos build.gradle des dossiers

3
Vivek Mishra