Android Studio 프로젝트 릴리즈 빌드할때 Proguard를 이용해 로그제거하기

마켓에 애플리케이션을 릴리즈하기 전에 해야할 일 중 하나는 로그를 제거하는 작업입니다.

소스코드를 수정하지 않고 릴리즈 빌드할때 Proguard를 이용해 로그(android.util.Log) 메서드 호출을 간단하게 제거할 수 있습니다.

build.gradle에서 다음과 같이 릴리즈 빌드할때 Proguard를 적용하도록 정의해 줍니다.

    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
        }
    }

그리고 proguard-rules.txt를 아래와 같이 수정해 줍니다.

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

이렇게 설정하고 gradle assembleRelease로 빌드하면, Log.d(), Log.v() 호출은 제거됩니다. (리턴값을 참조하지 않는다면)

중요한 포인트는 -assumenosideeffects 옵션은 optimize 단계를 거쳐야만 적용이 된다는 점입니다. 때문에 proguard-android.txt가 아닌 proguard-android-optimize.txt를 사용하도록 설정해야 합니다.

이 파일들은 안드로이드 SDK의 tools/proguard 디렉토리에 위치하고 있습니다.

ProTrieve 2.0 릴리즈

드디어 저희팀의 첫번째 제품이 릴리즈 되었습니다. 작년 10월부터 개발을 시작하여, QA의 테스트를 거쳐, 오늘 저녁 일본 고객사에 전달하였습니다. (2명의 개발자가 억대 가치를 가지는 제품을 개발 할 수 있는 것을 보면 소프트웨어의 부가가치는 상당한데 현 정부는 왜 그걸 모르는지 모르겠습니다.)

개발자 선에서 테스트를 하다가 QA 분들이 가세하여 테스트를 수행하면서 테스트 결과로부터 버그를 발견하고, 버그를 해결하는 힘겨운 과정을 모두 통과하였습니다. 여유없는 일정에 불평 한마디 없이 충실히 테스트를 수행해 주신 QA 분들께 감사할 따름입니다. QA 과정 없이 제품이 그대로 나갔더라면… 생각만 해도 아찔하더군요. 
제품 릴리즈와 관련하여 고객지원을 위해 아마도 6월 중순부터 1, 2주간 일본에 출장을 다녀오게 될 것 같습니다. 덕분에 오늘은 여권 발급을 위한 이런저런 처리를 한다고 정신이 없었네요. 
뿌듯하면서도 한편으로는 여러가지로 아쉬움이 많이 남습니다. 처음부터 좀 더 프로답게 신경써서 개발을 했더라면, 문서화를 좀 더 잘했더라면, 스펙을 잘 정리하고 개발했더라면… 등등. 그래도 저에게는 큰 자산이 될만한 소중한 경험이었습니다. 고객사에서 잘 동작하기를 기원합니다!