android:debuggable에 따라 로그출력 여부 바꾸기

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

<application
    android:debuggable="true"
    ...
>

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

정리하면,

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

 

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

public class LogUtil
{
    public static void v( String tag, message )
    {
        if ( BuildConfig.DEBUG )
            Log.v( tag, message );
    }
}

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

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.