개발중에 Log.d Log.i를 많이 사용합니다.
문제는
앱 배포시에 저걸 일일이 전부 커맨트 처리를 해줘야 하나요??
그냥 배포하면.... 다른 개발자가 앱을 실행해서 Log가 찍히는게 전부 보이기에...
다른 분들은 어찌 처리 하나 궁금해서 물어봅니다~!
//낭만폭풍,건방진...
ㅎㅎ 그리 간단한 방법이 있었군요 tip 감사합니다.
//congbab
그게 제가뭘 잘못했는지.. 똑같이 보이더라구요~! ㅠ.ㅠ
제가 찾는방법은 congbab님이말씀한것 처럼 뭔가 설정 하나로 할 수 있는게 있지 않을까 해서 질문해봤습니다
저같은 경우는 낭만폭풍님과 같은 방법을 사용했습니다.
플래그값을 final 로 줘버리고.. 해당 값을 변경함으로서 일괄적으로 모든 로그를 안보이도록 하는거죠..
건방진프로그래머 님 방식처럼 리플레이스를 예전에 사용했다가 피본적이 있어서요..
Log.i("asdfasdf" +
"asdfasfsdfs");
이렇게 로그가 길어서 두줄로 작성된것들은.. 리플레이스 했다가 하나하나 수정해줘야 하는 문제점이 생기드라구요;; ㅎㅎ;;
그리고 플래그값을 final로 사용한 뒤 일괄적으로 if문에서 걸러내는 경우는.. 컴파일단계(?맞나요?)에서 최적화가 이루어지면서 해당 문장은 없어진다고 하네요.. 그러면 필요없는 log처리 부분은 실제 배포되는 소스상에서는 제거된 상태기 때문에 성능상의 우위를 차지할수도 있다고 합니다.
하지만.. 제가 아직 제눈으로 확인을 못해봐서;;; 조만간 디컴파일 한번 해봐야 겠네요.. 책보고 익힌거라... 말이에요;; ㅎㅎ
디버깅이 안먹힌다면 가장 간단하기 log메소드를 하나만드셔서 쓰시면 됩니다.
--------------------------------------
static boolean printDebug;
PackageInfo pInfo;
try {
pInfo = getPackageManager().getPackageInfo(
AYApp.getInstance().getPackageName(), 0);
printDebug = (pInfo.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) > 0 ? true
: false;
} catch (NameNotFoundException e) {
printDebug = false;
}
이렇게 현재 디버깅용인지 구해놓고
public static void print_log(String s){
if(printDebug){
Log.d("test", s);
}
}
이런식으로 디버그용일때만 출력하게.......
대충 짠거라 틀린곳 있을 수도 있어요 ㅎ




Log 클래스를 래핑해서 다른 클래스를 만들어요. (상속 받을 필요 없습니다)
클래스 내부에 특정 플래그를 주고
플래그의 값에 따라 로그 표시 여부를 결정하도록 만듭니다.