J'utilise Gradle pour construire mon application Android. J'essaie d'utiliser des indicateurs en fonction du type de construction (release ou debug).
Mon fichier Gradle ressemble à ceci:
Android {
buildTypes {
debug {
buildConfigField 'boolean', 'PREPROD', 'true'
buildConfigField 'boolean', 'STAGING', 'false'
}
release {
buildConfigField 'boolean', 'PREPROD', 'false'
buildConfigField 'boolean', 'STAGING', 'false'
}
}
}
Et si j'essaie d'appeler BuildConfig.PREPROD
Ou BuildConfig.STAGING
, Le message d'erreur "Impossible de résoudre le symbole" s'affiche. La synchronisation de Gradle a été réussie, donc je ne sais pas si j'ai oublié des étapes pour pouvoir utiliser cette fonctionnalité?
Le fichier BuildConfig.Java
Généré est le suivant (dans build/source/buildConfig/debug/com.example.myapp
):
package com.example.myapp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String PACKAGE_NAME = "com.example.myapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 400;
public static final String VERSION_NAME = "";
}
Assurez-vous que votre fichier importe la bonne classe BuildConfig. Parfois, si vous avez d'autres bibliothèques ou modules de projet, il se peut que le buildConfig incorrect soit importé. Assurez-vous que votre importation ressemble à ceci com.project.app.BuildConfig. J'avais le même problème et le problème était celui-ci, j'espère que cela pourra aider quelqu'un.
Je devenais le même bug. Essayez de cliquer sur synchroniser, à droite de enregistrer. Faites cela après gradle sync.
Cela m'est arrivé parce que je n'avais pas déclaré correctement un champ String.
J'ai oublié les personnages qui s'échappent. Changer de:
buildConfigField "String", "FOO", "foo"
à
buildConfigField "String", "FOO", "\"foo\""
résolu le problème.
Assurez-vous d’ajouter votre paramètre également à defaultConfig. Vous exécutez probablement le buildVarient par défaut alors que votre paramètre est défini dans un buildVariant spécifique.
dans le fichier de construction, utilisez ceci:
defaultConfig { buildConfigField('String' , 'myParameter', 'someValue') }
Ensuite, dans le code, utilisez ceci:
String myParam= BuildConfig.myParameter;
J'espère que ça aide, M.A :)
Les modifications apportées aux fichiers de construction Gradle n'actualisent pas la génération de la classe BuildConfig, même si vous cliquez sur la barre jaune "Sync Now" en haut. Un nettoyage complet obligera à générer ce fichier.
Dans Android Studio: Construire -> Nettoyer le projet
Ce même problème me rend fou depuis plus d'une semaine. Dans mon cas, c'était une simple importation manquante. Je l'ai cherché, mais je ne trouve nulle part dans la documentation que vous ayez besoin d'importer la classe BuildConfig n'importe où! Et pourtant, c'est logique. J'ai continué à croire que cela pourrait être automatique. Eh bien, ce n'est pas le cas.
Alors essayez soit:
BuildConfig.
partie du code à l'origine de l'erreur. Un message d’aide devrait apparaître dans une bulle bleue et indiquer quelque chose comme: "? uk.co.package.app.BuildConfig? Alt + ENTER
"Cliquez dessus et Android studio ajoute automatiquement l’importation manquante. Ouimport uk.co.package.app.BuildConfig;
quelque part dans la liste de vos importations.reconstruire ... ça marche! eh bien, ça l’a fait de toute façon.
J'espère que cela aidera un autre diplômé Android newbie comme moi!
Rechercher des occurrences de BuildConfig. J'ai eu une importation non fiable de BuildConfig et du compilateur inexistants au lieu de le capturer ailleurs que sur une ligne de code aléatoire!
Dans mon cas, le problème était que je venais de renommer un module de mon projet, mais les références de nom de ce module n'étaient pas automatiquement mises à jour sur le AndroidManifest.xml
.
Les renommer manuellement et reconstruire le projet ont résolu le problème.
Mon colis n'était pas à jour dans mon manifeste. J'ai vérifié le fichier AndroidManifest.xml et corrigé le nom de mon paquet. Voici comment j'ai résolu ce problème.