만족
[Android] BuildConfig.DEBUG가 릴리즈 모드에서도 true가 되는 현상 본문
[Android] BuildConfig.DEBUG가 릴리즈 모드에서도 true가 되는 현상
FrontEnd/Android Satisfaction 2020. 9. 11. 05:28앱을 개발하다 보면 디버그 모드에서만 활성화해야 하는 기능이 존재한다.
단적인 예로, 구글 애드몹의 경우 디버그 모드에서 광고를 초기화하는 행위가 누적되면 계정이 정지되기 때문에 디버그 모드에선 그것을 막아두어야 한다.
처음엔 노가다로 디버그 할 때는 주석처리 해두었다가 릴리즈 시 해당 주석을 해제하는 방법을 사용했지만,
BuildConfig클래스를 안 뒤로는 손으로 하지 않는다.
BuildConfig는 <applicationId>.BuildConfig 위치에 존재한다.
만약 내 applicationId가 com.example.www 라면 com.example.www.BuildConfig 위치에 있다.
해당 클래스로 버전 코드, 디버그 여부 등을 유용하게 쓰고 있었는데 간혹 릴리즈 모드에서도 DEBUG값이 false로 바뀌지 않는 문제가 발생하였다.
위 코드는 광고 프래그먼트의 일부인데 DEBUG값이 true로 고정되어버리면 광고는 항상 표시되지 않게 된다.
이 외에도 문제가 좀 심각한데...
개발용에서 값 확인을 위해 띄우는 Toast 메시지 등이 릴리즈 모드에서도 다 떠버린 데다
개발용 서버가 꽂힌 상태로 릴리즈 되버렸다.
stackoverflow.com/questions/9855834/when-does-adt-set-buildconfig-debug-to-false
찾아보니 2012년에 문제가 처음 제기되었는데 현 시간 기준 최신 버전의 gradle을 사용하고 있는 데도 같은 문제가 발생하는 걸 보면 고질적인 문제인 것 같다...
해결법은 다음과 같다.
buildTypes {
debug {
buildConfigField "Boolean", "DEBUG_MODE", "true"
}
release {
buildConfigField "Boolean", "DEBUG_MODE", "false"
}
}
app레벨의 build.gradle에 다음을 추가한다.
이것의 의미는 위의 BuildConfig클래스에
디버그 모드 빌드일 떄는 public static final DEBUG_MODE= true 를 추가하고
릴리즈 모드 빌드일 떄는 public static final DEBUG_MODE= false 를 추가한다.
금방 발견해서 처리했으나... 좀 짜증은 난다...
두 번째 해결법으로는
빌드 폴더를 싹 밀어버리고 다시 빌드하는 방법인데, 매번 하기엔 너무 귀찮으므로 첫 번째 방법을 추천한다.
'FrontEnd > Android' 카테고리의 다른 글
[Android] java.lang.IllegalArgumentException: LayoutManager is already attached to a RecyclerView (0) | 2020.11.09 |
---|---|
[Android] 갤러리에서 사진 선택 기능 구현 (0) | 2020.09.14 |
[Android] 현재 Activity의 Foreground/Background 상태 확인 (0) | 2020.08.06 |
[Android] Google Play - 앱, 타사 광고, 기기 기능 방해 정책 위반 (0) | 2020.08.06 |
[Android] boommenu 라이브러리 오류 (java.lang.IndexOutOfBoundsException) (0) | 2020.07.31 |