http://code.google.com/p/android/issues/detail?id=5817
여기에 토론되어있는 문제이다.

안드로이드 공부 중, try/catch 문을 사용했더니 난데없이

"Conversion to Dalvik format failed with error 2"

에러가 나왔다.

Eclipse Helios SR2, JDK 1.6, Google API 2.3 사용중...

eclipse 속도향상을 위해 eclipse.ini에서
-XX:+AggressiveOpts 을 추가했었는데, 이것이 문제라고 한다.
(http://tynahan-textcube.blogspot.com/2010/09/eclipse-gives-to-dalvik-format-failed.html)

이 옵션이 무엇인가?
소수점 컴파일을 최적화시켜준다고 되어있다.
(http://www.waltercedric.com/java-j2ee-mainmenu-53/107-eclipse/1298-boost-eclipse-speed-performances.html)
Turn on point performance compiler optimizations that are expected to be default in upcoming releases. (Introduced in 5.0 update 6.)

그리고 AggressiveOpts 옵션은 아래와 같은 flag를 enable 시킨다.
-XX:+EliminateAutoBox
-XX:AutoBoxCacheMax=20000
-XX:BiasedLockingStartupDelay=500
-XX:+DoEscapeAnalysis
-XX:+OptimizeStringConcat
-XX:+OptimizeFill
(http://mail.openjdk.java.net/pipermail/hotspot-gc-use/2011-May/000868.html)

그런데 위의 flag 이름만 봐도 소수점 컴파일에만 연관되어있는 문제는 아닌 것 같다.
특이한 것은 AggressiveOpts 를 지우고 위의 flag들을 추가시켰더니 에러가 발생하지 않는다.
뭔가 다른 flag를 enable시키는 것 같은데..사용상 문제가 없다. 더 구글링을 해도 추가적인 내용은 나오지 않는다.

아직 experimental한 옵션이라고 하니 지우고 사용해야겠다.


(이런 문제가 발생할 때마다, 아이폰 개발 환경(DX:Developer eXperience)가 얼마나 좋은지 실감하게 된다.)

신고
Posted by whitemetal