마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

전역적으로 디버깅 코드를 배제할 수 있는 방법 없을까요?

0 추천

디버깅용 코드를 작성하기 위한 이러한 코드를 본적이 있습니다

public class MyClass {
    final static boolean DEBUG_MODE = true;
    
    public void myMethod {
        if (DEBUG_MODE) {
            ...
        }
    }
}

클래스 상수 변수를 이용하여 실제 릴리즈 일때만 값을 바꾸어
디버깅용 코드가 동작하지 않도록 되어있긴 한데

실제 실행은 되지 않지만 바이너리에 포함되는 문제는 둘째 치더라도
일일이 클래스를 찾아 클래스 변수의 값을 바꿔줘야하는 번거로움은 좀 큰것 같거든요

이러한 디버깅용 코드를 전역적으로 실행을 배제할 수 있는 어떤 좋은 방법이 없을까요?

익명사용자 님이 2017년 2월 23일 질문

3개의 답변

+1 추천

http://stackoverflow.com/questions/2446248/remove-all-debug-logging-calls-before-publishing-are-there-tools-to-do-this

 

Log.w("==== [App] === MainActivity | onCreate", "|" + BuildConfig.DEBUG);
if (BuildConfig.DEBUG) {
  Log.w("==== [App] === MainActivity | onCreate", "|" + "debug");
  Toast.makeText(this, "debug", Toast.LENGTH_SHORT).show();
}
else {
  Log.w("==== [App] === MainActivity | onCreate", "|" + "release");
  Toast.makeText(this, "release", Toast.LENGTH_SHORT).show();
}

이렇게 해보니 릴리즈 모드로 만든 apk 에서는 release 라는 토스트가 뜨네요. 

 

쎄미 (162,410 포인트) 님이 2017년 2월 23일 답변
0 추천
예전에 시그니쳐값 확인해서 구분했던 기억이 나네요.

프로그램 코드상에서 서명 확인할수 있는 방법이 있는데

자동으로 생성되는 디버그서명 이름은 debug라고 명시적으로 나와서 이걸로 구분했었지요.

 

코드를 찾으려고 했는데 코드는 못찾겠네요. 참고해보세요.
Development Guy (70,570 포인트) 님이 2017년 2월 23일 답변
0 추천
aucd29 (218,390 포인트) 님이 2017년 2월 23일 답변
...