[解決済み] dexの実行ができない:メソッドIDが[0, 0xffff]にない:65536
質問
以前にもいろいろなバージョンのdex errosを見たことがありますが、今回のものは新しいものです。ライブラリプロジェクトは無傷で、依存関係も正しくリンクされているようです。
Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
または
Cannot merge new index 65950 into a non-jumbo instruction
または
java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
tl;dr : Googleの公式ソリューションがついに登場!
http://developer.android.com/tools/building/multidex.html
dex-ingを行う際にメモリ不足にならないようにするために必要なことです。
dexOptions {
javaMaxHeapSize "4g"
}
また、信頼性の低い方法でこれを修正できるジャンボモードもあります。
dexOptions {
jumboMode true
}
更新: アプリが肥大化し、メインアプリの内部に多くのメソッドがある場合、以下のようにアプリを再編成する必要があるかもしれません。
http://blog.osom.info/2014/12/too-many-methods-in-main-dex.html
解決方法は?
アップデート3(2014/11/3)
Googleがついにリリース
公式説明
.
アップデート2(2014/10/31)
Gradle プラグイン v0.14.0 (Android版)
サポート追加
マルチインデックスに対応しました。有効化するためには
build.gradle
:
android {
defaultConfig {
...
multiDexEnabled true
}
}
アプリケーションが5.0より前のAndroidをサポートしている場合(つまり、あなたの
minSdkVersion
が 20 以下である場合、動的にパッチを適用する必要があります。
アプリケーションクラスローダ
そうすれば、セカンダリ dex からクラスを読み込むことができます。幸いなことに
ライブラリ
がそれをやってくれます。あなたのアプリの依存関係に追加してください。
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
}
早速、ClassLoaderのパッチコードを呼び出す必要があります。
MultiDexApplication
クラスの
ドキュメント
は、3つの方法を提案しています(ピック
そのうちの1つ
一番使いやすいものを選んでください。)
1 - 宣言する
MultiDexApplication
クラスをアプリケーションとして
AndroidManifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
2
Application
クラスは
MultiDexApplication
クラスがあります。
public class MyApplication extends MultiDexApplication { .. }
3 - 呼び出し
MultiDex#install
から
Application#attachBaseContext
メソッドを使用します。
public class MyApplication {
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
....
}
....
}
アップデート1(2014/10/17)を行いました。
予想通り。
マルチデックスのサポート
は、Android サポートライブラリのリビジョン 21 に同梱されています。android-support-multidex.jar は /sdk/extras/android/support/multidex/library/libs フォルダに格納されています。
マルチdexサポートはこの問題を解決します。dx 1.8ではすでに複数のdexファイルを生成することができます。
Android Lでは、マルチデックスをネイティブにサポートし、次のサポートライブラリの改訂では、API 4までの古いリリースをカバーする予定です。
に記載されています。 これ Anwar GhuloumによるAndroid Developers Backstageポッドキャストエピソード。私は トランスクリプトを掲載 (と一般的なマルチデックスの説明)の該当部分です。
関連
-
NetworkOnMainThreadException
-
AndroidエミュレーターのADBサーバーがACKしない問題
-
ジャークとして。起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりません アクティビティ起動中のエラー
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
Android TextViewにandroid:ellipsize=endのバグがある。
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
Android.support.v7.widget.Toolbar が見つかりませんでした。
-
アンドロイドにおけるトークンの利用
-
android.content.ActivityNotFoundException を解決します。Intent問題を処理するActivityが見つからない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
超シンプルなアンドロイドのタイムディレイ機能
-
アンドロイドの遅延実行のいくつかの方法
-
Android Studioのgitの使用とgitの設定パス
-
Android Studio常见错误之:Rendering Problems/The following classes could not be instantiated
-
[解決済み】Android StudioのGoogle JARファイルでGC overhead limit exceededエラーが発生する。