안드로이드 프로젝트를 인수인계 받은지 며칠되었는데 그동안 웹개발만 하다가 앱개발을 하려니 막히는 게 너무 많다. 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
다시 원점으로 돌아왔다.
결국 위의 사이트를 통해 내가 여러가지 시도를 통해 접근하려 했던 것들을 실패하고 google play service 라이브러리 소스를 제거했다.
일단 성공했다. 성공하고 나니 어플리케이션 상에서 동작하지 않는 것들이 눈에 띈다.
이 정도는 아무것도 아니야. 실행은 되니까. ㅠㅠ
https://github.com/mihaip/dex-method-counts
를 이용해서 생성된 apk 의 메소드 수를 확인해 보니 61000 개 가량.. 조금 위험하다.
더 삭제해야 할 것이 있지만 당장은 넘어가겠다.
안드로이드 생초보에게 method 초과 에러는 너무 가혹했다.
앞으로의 안드로이드 개발이 심히 걱정이 된다.