apkに含まれるメソッド数が65535を超えると「java.lang.ClassNotFoundException」とかよくわからないエラーを吐きまくって、アプリの起動さえできない状態になるようです。※Lolipop以降では問題ないらしい
このメソッド数にはライブラリも含まれるため、どんな小さなアプリでもライブラリの肥大化で突然とばっちりを受けるかも。今回はplay-services:10+にしたタイミングで65535を超えました。
AndroidStudioでは通常、65535を超えているとビルド時にエラーとなるようですが、ビルドが通っても一部端末ではエラーが出るようです(クラッシュレポートより推測)
これをmultidex support libで対応する。
build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 |
defaultConfig { : multiDexEnabled true //multiDexを有効にする } //最大ヒープサイズを4Gに設定 dexOptions { javaMaxHeapSize "4g" } : dependencies { : compile 'com.android.support:multidex:1.0.0' // support libを依存関係に含める } |
※ヒープサイズを指定しないと失敗することがあるらしいので設定しておく
AndroidManifest.xml
1 2 3 4 5 |
: <application : android:name="android.support.multidex.MultiDexApplication" > |