Gradle buildConfigField BuildConfig가 기호를 확인할 수 없습니다.


84

내 Android 애플리케이션을 빌드하기 위해 Gradle을 사용하고 있습니다. 빌드 유형 (릴리스 또는 디버그)에 따라 일부 플래그를 사용하려고합니다.

내 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"Cannot resolve symbol"오류가 발생합니다. 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내 질문에 생성 된 것을 추가했습니다 .
Gaëtan 2014 년

어떤 버전의 플러그인을 사용하고 있습니까? 0.9.1에서는 이것을 볼 수 없습니다 (두 부울이 클래스에 표시됨).
Xavier Ducrohet 2014 년

4
동기화 할 필요는 없지만 (Studio가 모델 변경 여부를 모르기 때문에이를 수행하도록 요청하지만) 빌드하는 동안 빌드해야합니다. BuildConfig 클래스는 build.gradle 파일.
Xavier Ducrohet 2014 년

2
안녕하세요, 저는 구성 설정을 통해 응용 프로그램에서 두 가지 맛을 관리하고 있으며 귀하와 마찬가지로 구성 변수를 만들려고하지만 다른 맛을 사용하려고합니다. 나는 당신의 방법을 시도했지만 flavour / BuildConfig.java에서 어떤 업데이트도 보지 못했고 그 때문에 컴파일 시간에도 변수에 액세스 할 수 없었습니다. 어떠한 제안 !
코드

답변:


85

파일이 올바른 BuildConfig 클래스를 가져 오는지 확인하십시오 . 때로는 다른 프로젝트 라이브러리 또는 모듈이있는 경우 잘못된 buildConfig를 가져올 수 있습니다. 가져 오기가이 com.project.app.BuildConfig 와 같은지 확인하십시오 . 나는 같은 문제를 겪고 있었고 문제는 이것이 누군가를 도울 수 있기를 바랍니다.


2
당신은 내 하루를 구했습니다! 감사합니다 !
Astyan 2016

1
@Astyan 내가 도울 수있어서 기쁘다.
MRodrigues 2011

전체 com.xx가 변경됨에 따라 빌드 vairents로 어떻게이 작업을 수행합니까?
Zapnologica

@Zapnologica 빌드 변형은 이것에 영향을 미치지 않아야합니다. build.gradle 파일에 각 변형에 대한 변수가 정의되어있는 한.
MRodrigues

5 년 후 큰 감사를드립니다. 그것은 나없이 algoliasearch.BuildConfig를 사용하던 내 경우에는 심지어 그것을 가져
dustytrash

46

나는 같은 버그를 얻고 있었다. 저장 오른쪽에있는 동기화 를 클릭하십시오 . gradle sync 후에 그렇게하십시오 .


8
동기화는 어디에 있습니까?
Lucky_girl

파일> "Gradle 파일과 프로젝트 동기화".
Chase Roberts

26

내가 String 필드를 제대로 선언하지 않았기 때문에 나에게 일어났습니다.

이스케이프 캐릭터를 잊어 버렸습니다. 에서 변경 :

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

...에

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

문제를 해결했습니다.


이것은 나를위한 것이었다! 감사! 때로는 정말 : 그 빌어 먹을 작은 것들입니다
MACD

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

이 같은 문제가 일주일 이상 나를 미치게 만들었다. 제 경우에는 단순한 가져 오기가 누락되었습니다. 나는 그것을 찾았지만 어떻게 든 내가 찾을 수있는 문서의 어디에도 BuildConfig 클래스를 어디서나 가져와야한다고 언급하지 않습니다! 그러나 그것은 논리적입니다. 나는 그것이 자동일지도 모른다고 믿었다. 글쎄, 안돼.

따라서 다음 중 하나를 시도하십시오.

  • BuildConfig.오류를 일으키는 코드 부분을 한 번 클릭하십시오 . 도움말 메시지가 파란색 풍선에 다음과 같이 표시되어야합니다. " ? uk.co.package.app.BuildConfig? Alt + ENTER"클릭하면 Android 스튜디오가 누락 된 가져 오기를 자동으로 추가합니다. 또는
  • import uk.co.package.app.BuildConfig;수입품 목록에 추가 하십시오.

재 구축 ... 작동합니다! 글쎄, 어쨌든 그것은 나를 위해했다.

나와 같은 다른 gradle android 초보자를 돕기를 바랍니다!


5

제 경우에는 Android Studio에서 :

  1. 빌드-> 클린 프로젝트;

  2. 파일-> 캐시 무효화 / 다시 시작 ...

  3. 빌드-> 프로젝트 다시 빌드


4

Android Studio에서-Build를 클릭 한 다음 Clean Project를 클릭합니다.-정리 후 Rebuild Project를 클릭합니다. -완료되면 프로젝트를 닫습니다. -프로젝트를 다시 열고 실행하면 오류가 다시 나타나지 않아야합니다.


2

제 경우 문제는 프로젝트의 모듈 이름을 방금 변경했지만 해당 모듈의 이름 참조가 AndroidManifest.xml.

수동으로 이름을 바꾸고 프로젝트를 다시 빌드하면 문제가 해결되었습니다.


일부 리팩토링을 수행했으며 모든 인스턴스를 완전히 변경하지는 않았습니다. 이 대답은 나를 올바른 방향으로 안내했습니다. 감사!
Cezille07

같은 문제. 프로젝트 청소를 시도했습니다. android studion을 다시 시작합니다. 아무것도 작동하지 않았지만 오류는 여전히 존재했습니다. 그런 다음 한 번 더 청소 (Build> Clean Project) 한 다음 강제로 디버그를 실행합니다. 빌드 후 성공했고 오류가 사라졌습니다.
Chief

2

BuildConfig의 발생을 검색하십시오. 나는 다른 곳에서 임의의 코드 줄을 가리키는 대신 존재하지 않는 BuildConfig와 컴파일러를 불법적으로 가져 왔습니다!


0

내 패키지가 내 매니페스트에서 최신 상태가 아닙니다. AndroidManifest.xml 파일을 확인하고 패키지 이름을 수정했습니다. 이것이 제가이 문제를 해결 한 방법입니다.


0

내 2 센트 :

나는 올바른 import xxx.BuildConfig, AS가 그 라인과 내가 가지고 있던 라인을 가리킬 BuildConfig.SOME_VARIABLE것이므로 import라인을 제거 하고 다시 작성하고 오류가 발생하여 BuildConfig is unrecognised reference blah blah가져온 후 다시 작성했습니다.


0

Android 스튜디오에서 이전 프로젝트를 빌드 (디버깅)하는 동안 동일한 오류가 발생했습니다. 오류를 조사했을 때 BuildConfig 클래스가 2 개의 파일에 정의되어 있음을 발견했습니다. 첫 번째는 BuildConfig.java에 있고 두 번째는 BuildConfig2.java에 있습니다.

파일 중 하나를 제거하고 올바르게 작동했습니다.


BuildConfig.java 파일 중 하나를 제거한 다음 프로젝트를 성공적으로 빌드하고 디버깅을 시작했습니다.
Alok Kumar

0

제 경우에는 동일한 변형복사하고 붙여 넣는 어리석은 실수를 저질렀습니다 . 방금 다른 변형의 이름을 바꾸었고 작동했습니다.

여기에 이미지 설명 입력


0

가능한 해결책 : Android X 결제 라이브러리를 사용하는 경우 build.gradle파일에 다음 줄을 추가하면 됩니다.

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

Android 결제 라이브러리에는 Android Studio의 코드 편집기를 혼동 할 수 있는 자체 BuildConfig 클래스도 포함되어 있습니다. 이 경우 import클래스 중 하나에 다음 문을 자동으로 추가 할 수 있습니다.

import com.android.billingclient.BuildConfig;

그게 당신이 사용하고 싶은 게 아니죠? 사용하려는 (디버그 빌드를 수행하는 경우) 여기에있을 수 있습니다.

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

따라서 수정하려면 해당 import 문 줄을 제거하고 다시 빌드하여 오른쪽으로 확인할 수 있는지 확인합니다 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.