Date: 2015/9/14 Cate: Android, cocos2d-x Tags: ,  

cocos2d-xでCognitoをつかったり広告SDKいろいろ入れてたりしてたら、com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536のエラーが出てしまいました。

dexに含められるメソッドの総数が65536らしく、これを超えるとこのエラーが出てしまうようです。

解決策としては、Multi-dexに対応させるか、proguardで対応するからしく、Multi-dex対応してみるか〜と思って調べてみてもAndroid Studioつかってgradleで設定する方法はいろいろ出てくるのにEclipseつかってantでビルドしてると全然情報がない・・・。
cocos2d-xは最近Android Studioでのビルドに対応したんですけど、いま開発中のゲームはv3.3を使ってるので、どうしたもんかと思い、ひとまずproguardで対応する形にしました。

で、proguardってリリースビルドのときに適用されるものっぽいので、これをデバッグビルドでも対応させる方法を調べたのでメモ。

こちらのブログをみて、build.xmlをちょっといじったらいけました。
また、dex-method-countsをつかってapkとかからdexのメソッド数をカウントできたのでみてみると、このエラー出る前のビルドのapkで65473とギリギリでした・・・そんで広告のSDKを一つアップデートしたら超えてしまった感じですね。
で、proguardで使ってないメソッドを外していくと、46000くらいまで減らせました。よかった。

Leave a Reply