2014년 3월 14일 금요일

프로가드 오류

 던전워즈
SDK에 기본적으로 포함되어있는 프로가드를 사용해서 유니티 프로젝트로 부터 뽑은 안드로이드 프로젝트를 난독화 하게 되면
오류가 발생한다.
유니티의 classes.jar 파일이 이미 난독화 처리가 되어 프로가드가 해당 파일을 읽을때 오류가 발생하는 문제인데
Caused by: java.io.IOException: Can't process class [com/unity3d/player/UnityPlayer.class] (Unknown verification type [230] in stack map frame)
대략 이런 유형의 에러메시지가 난다.

이번에 ADT버전업을 하면서 프로가드 까지 갱신되버려서 또 같은 문제가 생겼다.

 인터넷에 나와 있는 여러가지 해결책을 모두 적용해봐도 해결이 안돼서 한동안 고심했었다.
프로가드 제작자가 제시한 해결책은 stack map frame관련해서 소스의 특정 부분을 어떤 값으로 바꾸고 재컴파일하면된다고
했던 기억만 가물가물하게 나는데
구체적으로 어떻게 해결했는지 자세히 기억은 안나지만
소스를 수정하고 다시 컴파일해서 proguard.jar파일을 만든다음
해당 파일을 안드로이드 sdk의
adt-bundle-windows-x86\sdk\tools\proguard\lib\ 대략 이런 경로에 있는 프로가드 jar파일과 교체하면된다.

Unknown verification type [230] in stack map frame 라고 구글링을 해보면 자세한 내용이 나올테지만 귀찮아서 안할란다.
다행히 그때 만든 jar파일을 하드 구석탱이에서 찾아서 넣어보니 잘된다.



다운로드 링크
https://dl.dropboxusercontent.com/u/211062767/proguard.jar

댓글 2개:

  1. proguard.jar 가 다운로드 되지 않은데 공유해 주실수 있으신지 문의 드립니다.

    답글삭제
    답글
    1. 링크가 작동하지 않는지 몰랐네요, 다른링크에 라이브러리를 올려놨습니다.

      삭제