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くらいまで減らせました。よかった。