Gradle buildConfigFieldBuildConfigはシンボルを解決できません


84

Gradleを使用してAndroidアプリケーションをビルドしています。ビルドタイプ(リリースまたはデバッグ)に基づいていくつかのフラグを使用しようとしています。

私のGradleファイルは次のようになります:

android {
    buildTypes {
        debug {
            buildConfigField 'boolean', 'PREPROD', 'true'
            buildConfigField 'boolean', 'STAGING', 'false'
        }

        release {
            buildConfigField 'boolean', 'PREPROD', 'false'
            buildConfigField 'boolean', 'STAGING', 'false'
        }
    }
}

また、電話をかけようとしBuildConfig.PREPRODたりBuildConfig.STAGING、「シンボルを解決できません」というエラーが発生した場合。Gradleの同期が成功したので、この機能を使用できるようにするためのいくつかの手順を忘れたかどうかわかりませんか?

生成されるBuildConfig.javaファイルは次のとおりです(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 = "";
}

適切なBuildConfigクラスが作成されたことを確認できますか。それは次の場所にありますbuild/source/buildconfig/debug/...
Xavier Ducrohet 2014年

生成さBuildConfig.javaれたものを質問に追加しました。
ガエタン

どのバージョンのプラグインを使用していますか?0.9.1では、これは表示されません(両方のブール値がクラスに表示されます)。
Xavier Ducrohet 2014年

4
同期する必要はありませんが(Studioはモデルを変更したかどうかわからないため、同期するように求められます)、BuildConfigクラスはビルド中に生成されるため、同期する必要があります。 build.gradleファイル。
Xavier Ducrohet 2014年

2
こんにちは、私は構成設定を介してアプリケーションで2つのフレーバーを管理しています。あなたのように、いくつかの構成変数を作成しようとしていますが、フレーバーは異なります。私はあなたのやり方を試しましたが、flavour / BuildConfig.javaに更新が表示されなかったため、コンパイル時でも変数にアクセスできませんでした。なにか提案を !
CoDe 2015

回答:


85

ファイルが正しいBuildConfigクラスをインポートしていることを確認してください。他のプロジェクトライブラリまたはモジュールがある場合、間違ったbuildConfigをインポートすることがあります。インポートがこのcom.project.app.BuildConfigのようになっていることを確認してください。私は同じ問題を抱えていました、そして問題はこれでした、それが誰かを助けることができることを願っています。


2
あなたは私の日を救った!ありがとうございます !
Astyan 2016年

1
@Astyan私が助けることができてうれしいです。
MRodrigues 2016年

com.xx全体が変更されたときに、ビルドvairentでこれを行うにはどうすればよいですか?
Zapnologica

@Zapnologicaビルドバリアントはこれに影響を与えないはずです。各バリアント、build.gradleファイルで変数が定義されている限り。
MRodrigues 2018年

5年後、私はあなたに大きな感謝を借りています。それは私なしalgoliasearch.BuildConfigを使用していた私のケースでも、それをインポートする
dustytrash

46

同じバグが発生していました。保存の右側にある[同期]をクリックしてみてください。gradlesyncの後にそれを行います。


8
同期はどこにありますか?
Lucky_girl 2018

ファイル>「プロジェクトをGradleファイルと同期する」。
チェイスロバーツ

26

Stringフィールドを適切に宣言しなかったため、私に起こりました。

エスケープ文字を忘れてしまいました。からの変更:

buildConfigField "String", "FOO", "foo"

buildConfigField "String", "FOO", "\"foo\""

問題を解決しました。


これは私にとってそれでした!ありがとう!時々それは本当にそれらの気の小さなことです:)
MacD20年

24

Gradleビルドファイルを変更しても、上部にある黄色の[今すぐ同期]バーをクリックしても、BuildConfigクラスの生成は更新されません。完全にクリーンアップすると、このファイルが強制的に生成されます。

Android Studioの場合:ビルド->クリーンプロジェクト


16

defaultConfigにもパラメータを追加してください。パラメータが特定のbuildVariantで定義されているときに、デフォルトのbuildVarientを実行している可能性があります。

ビルドgradleファイルでこれを使用します:

 defaultConfig {
        buildConfigField('String' , 'myParameter', 'someValue')
    }

次に、コードでこれを使用します。

String myParam= BuildConfig.myParameter;

これがお役に立てば幸いです、MA :)


14

buildConfigFieldにアクセスできるようにするには、最初に目的のビルドバリアントを選択する必要があります

ここに画像の説明を入力してください


これは私を助けました。すでにビルドバリアントを選択しましたが、それを変更すると再構築が発生し、エラーがなくなりました。
LarsH

14

同じことが私にも起こりました。プロジェクトルートでこれを実行すると修正されました。

./gradlew assembleDebug

11

このタイプの問題が発生した場合は、プロジェクトをクリーンアップして再構築してください。

ありがとう。


5

これと同じ問題が1週間以上私を悩ませてきました。私の場合、それは単純なインポートの欠落でした。私はそれを探しましたが、どういうわけか私が見つけたドキュメントのどこにも、BuildConfigクラスをどこにでもインポートする必要があるとは書かれていません!それでも、それは論理的です。私はそれが自動かもしれないと信じ続けました。まあ、それはそうではありません。

したがって、次のいずれかを試してください。

  • BuildConfig.エラーの原因となっているコードの部分を1回クリックします。ヘルプメッセージが青いバブルに表示され、次のようになります。 " ? uk.co.package.app.BuildConfig? Alt + ENTER"クリックすると、AndroidStudioによって不足しているインポートが自動的に追加されます。または
  • import uk.co.package.app.BuildConfig;インポートのリストのどこかに追加します。

再構築...それは動作します!まあ、とにかくそれは私のためにした。

それが私のような別のgradleandroid初心者に役立つことを願っています!


5

私の場合、AndroidStudioでは次のようになります。

  1. ビルド->クリーンプロジェクト;

  2. ファイル->キャッシュの無効化/再起動...

  3. ビルド->プロジェクトの再構築


4

Android Studioで、-[ビルド]、[プロジェクトのクリーンアップ]の順にクリックします-クリーニング後、[プロジェクトの再構築]をクリックします。-完了したら、プロジェクトを閉じます。-プロジェクトを再度開いて実行します。エラーが再度表示されることはなく、クリアされています。


2

私の場合、問題は、プロジェクトのモジュールの名前を変更したばかりなのに、そのモジュールの名前参照がで自動的に更新されなかったことAndroidManifest.xmlです。

それらの名前を手動で変更し、プロジェクトを再構築すると、問題が解決しました。


私はいくつかのリファクタリングを行いましたが、すべてのインスタンスを完全に変更したわけではありません。この答えは私を正しい方向に向けました。ありがとう!
cezille 0719

同じ問題。プロジェクトを掃除してみました。androidstudionを再起動します。エラーはまだありました。次に、もう一度クリーンアップし([ビルド]> [プロジェクトのクリーンアップ])、強制的にデバッグを実行します。ビルド後に成功し、エラーは消えました。
チーフ

2

BuildConfigのオカレンスを検索します。どこか別の場所にあるランダムなコード行を指すものをキャッチする代わりに、存在しないBuildConfigとコンパイラの不正なインポートがありました!


0

マニフェストでパッケージが最新ではありませんでした。AndroidManifest.xmlファイルを確認し、パッケージの名前を修正しました。これが私がこの問題を解決した方法です。


0

私の2セント:

私は正しいものを持っていましたimport xxx.BuildConfig、ASはその行と私が持っていたそれらの行を指すBuildConfig.SOME_VARIABLEので、私はimport行を削除して再構築し、それを言うエラーが発生しBuildConfig is unrecognised reference blah blah、その後それをインポートして再構築しました。


0

Android Studioで古いプロジェクトをビルド(デバッグ)しているときに同じエラーが発生しました。エラーを調査したところ、BuildConfigクラスが2つのファイルで定義されていることがわかりました。1つ目はBuildConfig.javaにあり、2つ目はBuildConfig2.javaにありました。

ファイルの1つを削除し、正しく動作しました。


BuildConfig.javaファイルの1つを削除してから、プロジェクトビルドを正常に実行し、デバッグを開始しました。
AlokKumar19年

0

私の場合、同じバリエーションをコピーして貼り付けることで、ばかげた間違いをしました他のバリアントの名前を変更したところ、機能しました。

ここに画像の説明を入力してください


0

考えられる解決策:Android X課金ライブラリを使用している場合は、build.gradleファイルに次の行を追加します。

implementation 'com.android.billingclient:billing:2.2.0'

Android課金ライブラリには、AndroidStudioのコードエディタを混乱させる可能性のある独自の BuildConfigクラスも含まれていることに注意してください。これが発生した場合、次のimportステートメントがクラスの1つに自動的に追加される可能性があります。

import com.android.billingclient.BuildConfig;

それはあなたが使いたいものではありませんよね?使用したいもの(デバッグビルドを実行している場合)は次のとおりです。

./build/generated/source/buildConfig/debug/com/example/myapp/BuildConfig.java

したがって、修正するには、そのインポートステートメント行を削除し、再構築して、正しく解決できるかどうかを確認しますBuildConfig.java。それができない場合import com.example.myapp.BuildConfig.javaは、パッケージからこのファイルのバージョンが必要であり、他のバージョンは必要ないことを明確にするために、を介して明示的に名前を付ける必要があります。

お役に立てれば!



0

モジュールを右クリックしてモジュールを再構築し、 Rebuild Module 'module name'

または短いキーを使用します。Ctrl+ Shift+F9

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.