[Android] preprocessor(전처리기) 흉내내기
2022. 8. 1. 16:23ㆍIT관련
반응형
디버깅과 릴리즈시 변수의 값을 다르게 가져가고 싶을때 C/C++ preprocessor로 처리하면 편한데, java는 기본적으로 preprocessor를 지원하지 않는다.
하지만 비슷하게 gradle의 build type에 따라 변수의 값을 바꿔줄 수 있는 기능이 있어 소개한다.
gradle은 android studio용 빌드 툴키이라고 설명되어 있는데, 뭐 그냥 android studio용 makefile이라고 보면 될 것 같다.
자세한 내용은 Android developer를 참고할 것.
build.gradle에 buildConfigField를 추가했다.
buildTypes {
release {
......
buildConfigField "String", "SOME_KEY", '"xxxxxx"'
}
debug {
......
buildConfigField "String", "SOME_KEY", '"yyyyyyy"'
}
}
위 의미는 release 빌드시 BuildConfig.java에 아래와 같이 변수가 추가된다.
// Field from build type: release
public static final String SOME_KEY = "xxxxxx";
debug 시에는 당연히 아래와 같이 될 것이다.
// Field from build type: debug
public static final String SOME_KEY = "yyyyyyy";
정리하면 C의 preprocessor로 아래와 같이 표현할 것을 gradle를 이용하여 android에 적용한 거라고 이해 하면 될 것 같다.
#if _DEBUG
public static final String SOME_KEY = "yyyyyyy";
#else
public static final String SOME_KEY = "xxxxxxx";
#endif
Android에서 build type은 Build > Select Build Variants에서 변경 가능하다.
BuildConfig에 변수로 추가하는거 외에 리소스에도 추가 가능하다. 이번엔 buildConfigField 말고 resValue라는 것을 사용한다.
buildTypes {
release {
resValue "string", "app_type1", "릴리즈"
}
debug {
resValue "string", "app_type1", "테스트1"
}
}
Build를 하면 app_type1이라는 String 리소스가 gradleResValue.xml 파일에 자동으로 추가된다.
이제 layout xml에서 사용할 수 있다.
<TextView
android:text="@string/app_type1" />
/>
뭐든 편한걸로 하자.
반응형
'IT관련' 카테고리의 다른 글
Openproject with Docker (0) | 2022.12.19 |
---|---|
Ubuntu Service 등록 (0) | 2022.12.19 |
라즈베리파이에 pyenv 설치 (0) | 2022.02.04 |
부팅시 flask 웹서버 구동 (0) | 2021.12.02 |
pyenv로 python 3.10.0 설치시 필요한 추가 라이브러리 (0) | 2021.12.01 |