web-dev-qa-db-ja.com

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

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 = "";
}
65
Gaëtan

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

64
MRodrigues

同じバグが発生していました。 saveの右側にあるsynchronizeをクリックしてみてください。 gradle syncの後に行います。

40
brunodles

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

逃げるキャラクターを忘れました。からの変更:

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

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

問題を解決しました。

17
Louis

DefaultConfigにもパラメーターを追加してください。パラメーターが特定のbuildVariantで定義されている間に、おそらくデフォルトのbuildVarientを実行しているでしょう。

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

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

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

String myParam= BuildConfig.myParameter;

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

13
MoranAk

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

Android St​​udio:ビルド->プロジェクトのクリーン

7
user465363

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

次のいずれかを試してください:

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

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

私のような別の卒業生Android初心者に役立つことを願っています!

5
Litome

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

enter image description here

4
Mohammad Alotol

BuildConfigの出現を検索します。存在しないBuildConfigとコンパイラの不正なインポートがありましたが、それはどこか別の場所にあるコードのランダムな行を指すのではなく、キャッチしました。

2
RRK

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

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

1
Renan Ferrari

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

0
Jack'