2017-06-09 27 views
-1

これは私のbuild.gradleです。ビルドapkをクリックしてapkをビルドすると、このエラーが表示されます。以前にいくつかのクエリを見たことがありますが、ソリューションandroidでapkをビルド中にエラーが発生しました

エラー: ':app:transformClassesWithDexForDebug'タスクの実行に失敗しました。

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "com.example.ranjeet.location" 
     minSdkVersion 14 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.volley:volley:1.0.0' 
    compile 'com.google.code.gson:gson:2.8.0' 
    compile 'com.google.android.gms:play-services:10.2.6' 
    compile 'com.google.android.gms:play-services-maps:10.2.6' 
} 
+1

をいただきましエラー?エラーログを貼り付け、使用しているアンドロイドスタジオのバージョンを伝えます。 –

+0

編集して貼り付けました。 –

+0

最新のappcompatおよびsupport libraryに更新した後、[DexIndexOverflowExceptionの問題が発生する可能性があります](https://stackoverflow.com/questions/26515378/dexindexoverflowexception-issue-after-updating-to-latest-appcompat -and-support-l) – Selvin

答えて

0

あなたはあまりにも多くの方法があります。デックスのための方法は65536しかない。だから、

、以下のようmultidexを有効にします。根本的な問題は、のDalvik命令の現在のセットによって課される

android { 

    defaultConfig { 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    ... 
} 

そして、同様

dexOptions { 
    javaMaxHeapSize "4g" 
    preDexLibraries = false 
} 
2

あなたはあまりにも多くの方法があります。デックスのための方法は65536しかない。

ので、以下のようmultidexを有効にします。

android {  
    defaultConfig { 
     // Enabling multidex support. 
     multiDexEnabled true 
    } 
} 



dependencies { 
compile 'com.android.support:multidex:1.0.0' 
} 
0
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 

をこのコードを貼り付けます。具体的には、invoke- *メソッドのいずれかです。これらは、ターゲットメソッドの参照インデックスを表す16ビットの引数を必要とします。有効な値は0〜65536です。つまり、65,536を超える定義済みメソッドを呼び出すと、この制限を超えることになります。

ソリューション: MultiDexを使用すると、1つのAPKに含まれる複数のDEXファイルを使用できます。いくつかの手順を実行すると、メソッドインデックスの制限に達すると、自動的にクラスがいくつかのDEXファイル(classes.dex、classes2.dex、classes3.dexなど)に分割されます。

より多くのINFOMATIONを取得:https://www.contentful.com/blog/2014/10/30/android-and-the-dex-64k-methods-limit/

0

あなたminSdkVersionが21以上に設定されている場合は、ここで示したように、あなたがする必要があるすべては、あなたのアプリケーションレベルbuild.gradleファイルでtrueにmultiDexEnabledに設定されます。

あなたの minSdkVersionが20以下に設定されている場合
android { 
    defaultConfig { 
     ... 
     minSdkVersion 21 
     targetSdkVersion 25 
     multiDexEnabled true 
    } 
    ... 
} 

しかし、その後、あなたはmultideを使用する必要があります。 Xサポートライブラリを次のように

はmultidexを有効にして、ここに示すように、依存関係としてmultidexライブラリを追加するアプリレベルbuild.gradleファイルを変更します。

android { 
    defaultConfig { 
     ... 
     minSdkVersion 15 
     targetSdkVersion 25 
     multiDexEnabled true 
    } 
    ... 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 

はこのようなアプリケーションクラスを作成します。

public class MyApplication extends MultiDexApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
    } 
} 

このアプリケーションクラスをマニフェストに追加します。

ます。また、このリンクをチェックすることができます。

https://developer.android.com/studio/build/multidex.html

関連する問題