본문 바로가기

ANDROID/Debug Logs

[안드로이드] 앱 스토어 릴리즈용 APK 혹은 Bundle을 만들고자 할 때 발생하는 “Exception while processing task java.io.IOException: Please correct the above warnings first”

곧 시범 릴리즈를 앞두고 앱 빌드를 하는중에 예기치 못한 거대한 숙제에 직면했다.



“Exception while processing task java.io.IOException: Please correct the above warnings first”


라는 메시지와 함께 400개가 넘는 오류를 보여주었는데, 자잘자잘한 경고항목들을 수정하는 중에


개별 항목을 전부 수정할 필요가 없다는 것을 알았다. 물론 몇백개의 오류들이 이 문제 때문에 애초에 발생한 것이기 때문에

상당수의 경고를 줄일 수 있었던것이다.


문제는 프로젝트 내에서 사용하는 RxKotlin 때문인데, Rx관련 코드들을 Proguard가 난독화하는 과정에서

오류가 나는 것으로 여겨졌다.


첫번째로 시도한 해결방법은

build.gradle(Module:app) 에서

configuration에 

all*.exclude group: "io.reactivex", module:"rxjava"

를 포함하는 것이다.



허나 이를 적용한 뒤에도 빌드가 완전히 이뤄지지 않았고, Rx관련 클래스를 가져올 수 없다는 오류까지 동반하는 것을 확인했다.




다음으로 시도한 방법은


     난독화 라이브러리 ProGuard의 rule을 손보는 것이다. (proguard-rules.pro)



이 파일이 보통 어느위치에 있는지는 잘 모르겠지만, 본인의 경우 프로젝트 폴더의 최상단에 위치하는 걸 볼 수 있었다.


굳이 파일탐색기를 통해 편집할 필요 없이 안드로이드 스튜디오에서 찾아 수정이 가능하다.


여기에서  기존에 빌드를 하는데 문제가 있던 클래스들을 선별해 난독화에서 제외할 수도 있고,


이외에도 다양한 난독화 옵션을 제공하고 있으니 쓰기 나름이라고 본다.



그리고 단순히 옵션을 막 구겨넣어 빌드를 성공하게 할 수도 있겠지만, 코드 난독화라는 기존의 목적을 잊어버리는 경우가


생길 수도 있으니 여유가 된다면 빌드된 프로젝트를 직접 추출해 난독화 정도를 확인하는 것도 좋은 방법이 되겠다.



두번째 방법을 끝으로 gradle 파일 생성에 성공했고, 다음으로 APK 키 성명 등록을 준비중에 있다!





<참조>


https://stackoverflow.com/questions/48641227/proguard-error-exception-while-processing-task-java-io-ioexception-please-cor


https://dwfox.tistory.com/18


https://www.guardsquare.com/en/products/proguard/manual/usage