티스토리 뷰

tip

tip6. 디버그 모드 구분하기

구름나드리 2018. 5. 25. 17:51

tip6. 디버그 모드 구분하기 





안드로이드에는 디버그 모드가 있다.  어플리케이션이 디버그가 가능한 상태인지 표시하는 플래그로 기본 값은 false이다. 보통 알려진 설정 방법은 AndroidManifest.xml 의 <application> 부분에 android:debuggable 값을 true/false로 설정하는 것이다.

그런데 이 플래그는 구글 플레이 스토어에 apk를 올릴 때 필터링 대상이라 AndroidManifest.xml 안에 저 값을 그대로 두면 apk를 업로드할 수 없다. 또한 IDE에서는, 사용자가 임의로 설정하지 말고 디버그용으로 apk를 만들 때와 릴리즈용으로 apk를 만들 때 자동으로 설정이 되도록 놔두라고 가이드 한다.  IDE에서 에뮬레이터나 단말로 Run/Debug를 실행하면 android:debuggable=”true”가 되고, 키스토어를 이용해 사인을 하면 android:debuggable=”false”가 되는 셈이다.

정리하면,

  • 디버그 용 키스토어
    바이너리 종류에 관계없이 로그 출력
  • 릴리즈용 키스토어
    바이너리 종류에 관계없이 로그 미출력

 

그럼 이제 디버그 모드를 사용해 보자. 어플리케이션의 디버그 모드를 확인하는 방법은 여기에 잘 정리되어 있는데, 나는 BuildConfig.DEBUG가 사용하기 편리하고  깔끔하기 때문에 애용한다. 이 디버그 모드는 로그를 출력할 때 유용한데, 상태에 따라 로그의 출력 여부를 조절하도록 Log 클래스를 감싸면 좋다. (참고로, Log 클래스는 final 이다.)

단, 주의 할 점은 Android SDK 17 이후 버전에서 제공하는 것으로 그 이하 버전을 사용하는 경우는 늘 로그가 출력될 수 있다. 그냥 안드로이드 스튜디오를 쓰자.









@Override
protected void onCreate(Bundle savedInstanceState) {
if (!BuildConfig.DEBUG) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}

super.onCreate(savedInstanceState);

FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(getFragmentContainerId());

if (fragment == null) {
try {
fragment = createFragment();
fm.beginTransaction()
.add(getFragmentContainerId(), fragment)
.commit();
} catch (IllegalStateException e) {
LogUtil.d(TAG, "onCreate() : " + e.getMessage());
}
}
}
}


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함