안드로이드(Android) Debug 모드 상태 체크하는 방법 |
환경: Eclipse Mars, Android 4.2.2 |
개발을 하다 보면 디버그/배포 모드를 구분해서 로그를 출력해야 하는 경우가 있습니다. 배포는 어느 정도 개발이 된 상태이기 때문에 디버그 로그는 빼고 주요 로그만 보게 됩니다. 이렇게 디버그/배포 모드를 구분할 수 있으면 현재 상태를 판단해서 로그 출력을 할 것인지 결정하면 됩니다. 안드로이드에서 Debug/Release 를 판단할 수 있는 상수값은 BuildConfig.Debug 입니다.
▼ 현재 구동한 프로그램의 모드가 디버그/배포인지 알 수 있는 상태코드 값은 ADT 17 이상에서는 BuildConfig.Debug 상수값입니다. 이클립스에서는 기본값이 true 입니다. BuildConfig 클래스를 열어 보면 다음과 같습니다.
BuildConfig.java |
/** Automatically generated file. DO NOT MODIFY */ package com.dante2k.test; public final class BuildConfig { public final static boolean DEBUG = true; }
▼ 이 소스는 apk 로 배포할 때 false 로 바뀝니다. 그래서 소스에 아래 처럼 표현하면 삭제하지 않아도 디버그 할 때만 출력해서 볼 수 있는 것이죠.
public class DebugmodeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_debugmode); if(BuildConfig.DEBUG){ Log.d("mode test", "Debug mode"); } } }
▼ 위의 소스를 줄이기 위해 별도의 로그 클래스를 만드는 경우도 있습니다. Log.d()함수가 들어간 클래스가 되겠죠. 그럼 Logger.d(“mode test”, “Debug mode”) 한 줄로 표현이 가능하게 됩니다. 그리고 Debug 모드라고 해서 이클립스에 있는 구동할 때 Debug 와 같은 의미는 아닙니다. RunAs 로 구동해도 Debug 모드 입니다. 이 때 말하는 Debug 모드는 개발 모드 입니다. apk 로 배포하기 전 소스 형태를 말하는 것이죠. 헷갈리지 마세요. Visual C++ 에는 debug 와 release 로 생각하시면 안됩니다.
import android.util.Log; import com.example.sampleandroidinfo.BuildConfig; public class Logger { public static final void w(String TAG, String message) { if (BuildConfig.DEBUG){ Log.w(TAG, message); } } public static final void i(String TAG, String message) { if (BuildConfig.DEBUG){ Log.i(TAG, message); } } public static final void d(String TAG, String message) { if (BuildConfig.DEBUG){ Log.d(TAG, message); } } public static final void v(String TAG, String message) { if (BuildConfig.DEBUG){ Log.v(TAG, message); } } }
'안드로이드 개발' 카테고리의 다른 글
안드로이드 개발 자료 관리를 위한 SharedPreferences 사용하는 방법 (0) | 2018.03.24 |
---|---|
안드로이드 개발 DB 변경 결과 이후 작업을 위한 옵져버 ContentObserver 활용하는 방법 (0) | 2018.03.24 |
안드로이드 개발 전화번호 조회 퍼미션 에러 해결하는 방법 (0) | 2018.03.12 |
안드로이드 개발 SMS 조회 퍼미션 에러 해결하는 방법 (0) | 2018.03.07 |
안드로이드 개발 Vibration 이용해서 스마트폰 진동 설정하는 방법 (0) | 2018.02.22 |
안드로이드 개발 SensorManager, SensorEventListener 이용해서 나침판 구현하기 (0) | 2018.02.12 |
안드로이드 개발 레이아웃 인플레이션(LayoutInflater)으로 추가한 화면 삭제하는 방법 (0) | 2018.01.28 |
안드로이드(Android) SensorManager 와 SensorEventListener 이용해서 x, y, z 축 감지하는 방법 (0) | 2018.01.26 |