땀이 삐질삐질 나는 개발 일기

BuildConfig 이용해서 Debug와 Release 모드의 같은 변수 다른 값 사용하기 본문

개발 Tip

BuildConfig 이용해서 Debug와 Release 모드의 같은 변수 다른 값 사용하기

삐질 2019. 6. 14. 00:47
안녕하세요. 삐질삐질 개발하는 개발자 삐질입니다.

오늘은 우리가  Release 와 Debug모드 시 같은 용도 이름의 변수를 다른 값으로 변환 해줘야 할 상황이 생깁니다.

오늘은 그 상황에 매번 값을 수동으로 변환 하지 않고, 자동화하는 방법에 대해 알아보겠습니다.


키워드는 BuildConfig 입니다. 
 
BuildConfig란, Build의 형태 ( Release, Debug)에 따라, 만들어지는 Zone 쯤으로 가볍게 이해하시면 되는데요.

코드로 보겠습니다.

buildTypes {
    release {

        buildConfigField "String", "BASE_URL", "\"https://naver.com\""
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug{
        buildConfigField "String", "BASE_URL", "\"https://daum.net\""

    }
}

위와 같이 추가할 수 있습니다. 



사용은 빌드를 성공적으로 하신 뒤,

실제 코드작성 부분에서 BuildConfig.BASE_URL과 같이 가져다 쓸수 있습니다.

빌드 후  Debug,Release에서 각각 아래와같이 자동으로 public static final 변수가 형성되게 됩니다.

이때 주의해야 할 부분은 

buildConfigField "String", "BASE_URL", "\"https://naver.com\""
buildConfigField "Integer", "type", "1"

위와 같이 Gradle 파일 속에는 Value를 항상 “”안에 작성해야 하기 때문에, String과 Integer의 입력 형태에 \” 차이가 발생하게 됩니다.



빌드 후 만들어지는 BuildConfig (내부적으로 자동으로 만들어 지는 클래스)의 내부는 아래와 같습니다.

public final class BuildConfig {
  public static final boolean DEBUG = false;
  public static final String APPLICATION_ID = "com.ppizil.alaramtestpj";
  public static final String BUILD_TYPE = "release";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Fields from build type: release
  public static final String BASE_URL = "https://naver.com";
}


public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.ppizil.alaramtestpj";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
  // Fields from build type: debug
  public static final String BASE_URL = "https://daum.net";



안드로이드 초보 개발자를 위해 아래와 같은 카카오 오픈톡을 운영 중입니다


Comments