内容へ移動
MSS Wiki 開発者ブログ (メモ?)
ユーザ用ツール
ログイン
サイト用ツール
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
最近の変更
メディアマネージャー
サイトマップ
トレース:
dexindexoverflowexception_通称65k問題_の対応
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
===== DexIndexOverflowExceptionについて ===== メソッド数が65k(65536)を超えると下記のビルドエラーが発生します。\\ ライブラリ等のメソッド数も含まれるため、大きめのライブラリをいくつか使用しているとわりと遭遇する。\\ UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 ===== MultiDexのSupportライブラリで対応する ===== サポートライブラリはビルドツールv21.1.0以上から利用出来ます。\\ ・build.gradle android { buildToolsVersion "21.1.0" defaultConfig { ... // Enabling multidex support. multiDexEnabled true } } dependencies { compile 'com.android.support:multidex:1.0.0' } Applicationクラスを実装している場合は、継承をMultiDexApplicationに変更し、attachBaseContextをOverrideする。\\ ・MyApp.java public class MyApp extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } Applicationクラスを実装していない場合は、AndroidManifestの<application>にMultiDexApplicationを指定する。\\ ・AndroidManifest.xml <application> ... android:name="android.support.multidex.MultiDexApplication"> ... </application> ===== multidexビルドが遅い場合の対応 ===== minSdkVersion が21 以上の場合と21 未満の場合では、multidex の仕組みが異なり ます。 minSdkVersion 21 以上であればART 環境で実行されることが保証できるため、ART が もっている複数のdex ファイルを一つのoat ファイルにまとめる機能を前提とすることが できます。そのため、クラス間の依存を気にせずに複数のdex ファイルへ分割を行うこと ができます。 minSdkVersion 21 未満の場合はDalvik 環境で実行される可能性があるため、ひとつ目 のdex ファイルのみでアプリを起動し、その中の処理でふたつ目以降のdex ファイルを読 み込む処理を実行する必要があります。ひとつ目のdex ファイルに入れておかなければな らないクラスとふたつ目以降のdex ファイルでも問題のないクラスを、クラスの依存関係 を解析したうえで適切に振り分ける必要があります。 この解析処理は時間がかかるため、minSdkVersion が21 未満のアプリでmultidex を有 効化する場合は別途minSdkVersion が21 のProduct Flavor を追加し普段の開発はこの追 加したProduct Flavor で行うのがお勧めです。\\ (引用:Android実践プログラミング) ===== 参考URL ===== http://developer.android.com/intl/ja/tools/building/multidex.html\\
dexindexoverflowexception_通称65k問題_の対応.1448843682.txt.gz
· 最終更新: 2015/11/30 09:34 by
sou
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ