Hyun Chul's Utopia
Android 빌드시 Proguard에서 Log 출력 제거시 발생하는 문제점. assumenosideeffects 본문
Android 빌드시 Proguard에서 Log 출력 제거시 발생하는 문제점. assumenosideeffects
디프시다루핀 2015. 8. 12. 10:30개발중이던 앱에서 릴리즈로 뽑아내기만 하면.. 백그라운드에서 CPU를 미친듯이 점유하는 문제가 발생하였습니다.
디버그 모드일땐 전혀 문제가 없던데.. 꼭 릴리즈로 빌드하고 나면 그러더군요..
원인을 찾기 위해 여러가지로 삽질 했지만.. 처음부터 Proguard를 확인했더라면 수고가 좀 덜했을걸.. 하더군요.
결론적으로 Proguard에..
-assumenosideeffects class android.util.Log { *; }
위와같이 옵션을 와일드카드로 넣어둔게 화근이었습니다.
해당 옵션으로 인하여 Log클래스 안에 있는 모든 메소드에 대하여 Proguard가 반영이 되게 되는데..
그 과정에서 Object - wait() 메소드가 포함되어 문제가 발생할 수 있다고 합니다.
따라서 Log를 제거하기 위해선 사용될 메소드만 개별적으로 정해두어야 합니다.
-assumenosideeffects class android.util.Log {
public static int v (...);
public static int d (...);
public static int i (...);
public static int w (...);
public static int e (...);
public static int wtf (...);
}
이런식으로 말이죠..
누군가 또 이런 문제로 삽질하는 일이 없기를 바라며 간단히 적어 보았습니다.
참고자료
- http://qiita.com/gfx/items/e412dab7f127b7ae44d8
- https://github.com/gfx/ProguardRemovesObjectWait
- http://stackoverflow.com/questions/12390466/android-proguard-not-removing-all-log-messages
'프로그래밍 > Android' 카테고리의 다른 글
Android 유용한 라이브러리 모음 (0) | 2016.04.29 |
---|---|
Gradle 배포 저장소 (0) | 2016.01.19 |
Android WebView에서 SSL인증을 제대로 수행 못할때 CertPathValidatorException (1) | 2015.03.11 |
Android Studio 빌드시 UNEXPECTED TOP-LEVEL ERROR 에러 (0) | 2015.01.11 |
Android DEX method 제한 (빌드가 안되는 경우, MultiDex) (0) | 2014.12.11 |