본문 바로가기

프로그래밍/Android 짜투리 지식

[android] dex index

google play service 추가 시 dex index 초과 오류

[2014-06-03 16:56:23 - Dex Loader] Unable to execute dex: Cannot merge new index 66570 into a non-jumbo instruction!

[2014-06-03 16:56:23 - TestApplication] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 66570 into a non-jumbo instruction!


compile 시 dex table의 갯수가 2^16(65536)개 인데, 초과하면 dex loader에서 오류 발생. indexoverflow와 같은 이치. 

때문에 index 초과를 해결할 방법이 필요함.

해결방법

  1. project.properties에 dex.force.jumbo=true 추가 (ADT 21 이후 부터 가능)
  2. multi dex 파일 구성 (ant build 해야함)

multi dex의 경우 complile 시 원래의 dex를 읽고, 찾을 수 없을경우 임의로 생성한 sub dex파일을 읽어서 method를 동적으로 불러옴. 때문에 ant build가 필수

참고 사이트

1. dex.force.jumbo 

http://tools.android.com/download/adt-21-preview

2. multi dex

http://android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html

http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110120966664


추가.

1. google advertising id를 얻기위해 google play service sdk를 참조해서 위의 오류가 발생함.

2. ad에 관련된 툴이 2014년 8월 1일 부로 google play service sdk에 포함되어, 개발자는 sdk 변경을 권장함 https://developers.google.com/mobile-ads-sdk/download#downloadandroid

3. android studio에서는 dex index 늘리는 방법도 있다.

☞ http://hatti.tistory.com/entry/gradle-dex-size-limit-%EB%AC%B8%EC%A0%9C


'프로그래밍 > Android 짜투리 지식' 카테고리의 다른 글

[android] google analytics froyo 문제  (0) 2015.02.10
[android] google advertising id  (0) 2014.07.02
[android] 한줄 팁  (0) 2014.04.04
[android] get resource id by String  (0) 2014.02.07
[android] ImageView Matrix  (0) 2014.01.09