본문 바로가기

Dev Life/Android

DEX 64K Methods Limit - Unable to execute dex: method ID not in [0, 0xffff]: 65536

안드로이드 프로젝트를 인수인계 받은지 며칠되었는데 그동안 웹개발만 하다가 앱개발을 하려니 막히는 게 너무 많다. 2년간 자바를 했던 경험과 한달정도 심심풀이로 앱개발했던 경험으로 덤벼든게 너무 무모했나보다.

예전에도 느낀 바 있지만 프로젝트를 돌아가록 만드는 것은 참 어려운 일이다.


Unable to execute dex: method ID not in [0, 0xffff]: 65536


이런 에러를 만났다.

솔직히 뭔 소리인지 몰랐다. 이 에러를 잡으려고 지금껏 많은 시간을 허비했다.

분명히 잘 돌아가던 서비스였고 난 인수인계만 받았을 뿐인데 결론적으로 메소드가 기준을 초과했다는 것이다. 더 추가한 라이브러리가 있는 것도 아닐텐데 왜 그럴까.


구글 안드로이드 개발자 사이트에서 조언을 구해보려 했는데 구글 안드로이드 개발자 사이트는 이제 Android Studio (IntelliJ 기반) 을 기준으로 설명하고 있고 이클립스는 구글링으로만 정보를 얻을 수 있었다.


https://developer.android.com/intl/ko/tools/building/multidex.html


안드로이드 개발툴이 안드로이드 스튜디오로 향하는 것 같고 이 참에 인텔리제이도 읽히고 겸사겸사 툴을 교체하는 것을 시도했다.


생소했다. 이클립스와는 좀 달랐고 에러가 에러같이 보이지도 않고.. 

하여튼 하라는대로 import 를 했는데 무수한 에러가 뜬다. 첫번째 만난 에러는 svn 관련 에러였다. 

당장 중요한 에러는 아니니 빌드만 먼저 성공시키자는 생각에 넘겼다. gradle 을 만났다. 

메이븐을 활용할 수 있고 groovy 라는 언어로 되어 있어 외관상으로는 직관적이고 좋았다.

며칠간 이런 저런 삽질을 하다가 android annotation api 관련 에러를 만났다. 


http://blog.yageek.net/blog/2014/01/20/android-studio/


여기서 다시 좌절.


안드로이드 스튜디오에서 dex 64K 메소드 제한을 좀 더 쉽게 해결할 수 있는 것 같아 툴 전향까지했는데 예상치 못한 곳에서 해결이 되지 않아 다시 이클립스로 돌아왔다. 서글펐다.

언젠가 다시 안드로이드 스튜디오로 돌아가리라.


이클립스로 돌아와서 다시 보니 툴이 익숙해서 역시 좀 할 맛이 났다.

그러나 안드로이드 스튜디오를 하면서 바꿨던 소스 구조로 인해 이런 저런 에러를 해결하고 나니


Unable to execute dex: method ID not in [0, 0xffff]: 65536


다시 원점으로 돌아왔다.


http://proy.tistory.com/563


결국 위의 사이트를 통해 내가 여러가지 시도를 통해 접근하려 했던 것들을 실패하고 google play service 라이브러리 소스를 제거했다.


일단 성공했다. 성공하고 나니 어플리케이션 상에서 동작하지 않는 것들이 눈에 띈다.

이 정도는 아무것도 아니야. 실행은 되니까. ㅠㅠ


https://github.com/mihaip/dex-method-counts


를 이용해서 생성된 apk 의 메소드 수를 확인해 보니 61000 개 가량.. 조금 위험하다.

더 삭제해야 할 것이 있지만 당장은 넘어가겠다.


안드로이드 생초보에게 method 초과 에러는 너무 가혹했다. 

앞으로의 안드로이드 개발이 심히 걱정이 된다.