Android Studio:Gradle-ビルドに失敗しました—タスク ':dexDebug'の実行に失敗しました


82

エラー:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

プロジェクト構造:

ここに画像の説明を入力してください

build.gradle(actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle(vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

このエラーを修正するにはどうすればよいですか?

回答:


90

正解は、jarファイルの一部がコンパイルされないということです。プロジェクトのbuild.gradleファイルに移動し、依存関係を確認する必要があります。

いくつかのjarファイルをインポートするだけの場合は、それらを削除して、一度に1つずつ追加してみてください。これは、エラーの原因を特定するのに役立ちます。

私の場合、それを実行しました。最後のインポートを行ったときに、アプリがコンパイルされました。ですから、本当の問題は、一度にたくさんインポートしていたことだと思います。しかし、今ではすべて機能します。


20
./gradlew assemble --stacktrace --infoを使用してコンパイルすると、どのjarが不良であるかが正確にわかります
Nir Hartmann

@NirHartmann簡単な質問、コマンドはビルドグラドルに配置するものですか?どこに置けばいいのかわからなかった。
Fallenreaper 2015

2
@Fallenreaperは私があなたの質問を理解しているかどうかわかりません、私はあなたのルートプロジェクトディレクトリにexec gradlewファイルがあることを意味しました、私が言ったようにターミナルまたはcmdからそれを起動すると、問題がどこにあるかがわかり、それを修正できます。
Nir Hartmann

@ Fallenreaper-ターミナルでgradle / gradleに移動し、。/ gradlew assemble --stacktrace --infoを入力しましたが、そのようなディレクトリはありません。これはあなたの提案で意味したことですか?
dancebush 2015

これは私にとって本当に助けになります
bhavesh kaila 2015年

68

注目に値する変更がなかった後、私は突然同じ問題を抱えました。

app/buildディレクトリを削除して問題を解決し、gradleにプロジェクト全体を新しくビルドさせました。


2
メインアクティビティを置き換えるアクティビティを追加する場合も、同じ問題が発生します。クリーンを実行しましたが、機能しませんでした。このソリューションをありがとう。
2015

1
また、アプリに含める可能性のあるライブラリプロジェクトのapp / buildフォルダーをクリーンアップしてみてください
Voy 2015

1
良い試みですが、私の問題は解決しませんでした:/
Maxime T

1
私の問題を修正してください。ありがとう
dian 2015年

1
ビルドフォルダを削除することは本当に助けになります。
bhavesh kaila 2016

16

同じJARが再度インポートされているかどうかを確認する必要があります。私の場合、別のjarにインポートされていたjar内のクラスがありました。したがって、lib /クラスファイルがプロジェクト全体に2回含まれているかどうかを確認してください。


1
これは私にとって技術的には正しいものでしたが、build.gradleファイルの依存関係に、プロジェクトに新しいアクティビティを追加した後、2つの異なるバージョンでAndroidサポートライブラリが2回含まれていたために発生しました。
Josh

これが解決されたとき、私は終わっていませんでした、しかしそれは私の道に私を導きました。ありがとう。
アンドレアス・ルドルフ

私にとっては問題を解決しましたが、エラーメッセージから、JARが重複しているという問題については考えもしませんでした。Volleyをプロジェクトレベルでモジュールとしてインポートしていましたが、ASでのビルドとCordovaでのビルドを切り替えたいので、VolleyをCordovaプラグインとして取り込む環境を設定しました。ある時点でプラットフォームを再生成した後、このエラーメッセージが表示されました。同じライブラリが2回インポートされているというコメントから、「インポートされたライブラリとしてのボレー」設定を削除する必要があることに気づきました。ありがとうございます。
マークバーベック2015

4

Java JRE 1.8を使用してEclipseでutilsライブラリjarをコンパイルし、Android Studio1.1.0の/ libs /で使用しようとすると、同じ種類のエラーが発生しました。

AndroidStudioでJDK1.8.0を使用するように設定しました。

EclipseをJRE1.7で動作するように切り替えたところ、エラーが修正されました。Eclipse:[ウィンドウ]-> [設定]-> [Java]タブ-> [コンパイラ]-> [コンプライアンスレベル1.7]。ほとんどの場合、JREシステムライブラリをjdk1.7.x_xに切り替えるように求められます。

エクスポートするときは、必ず「compressjar」のチェックを外す必要があるかもしれません。効果があるかどうかはテストしていません。私はそれが関連していたとは思わない。


ありがとう!これにより、Android Studio 1.4とGradleの実験的な問題が解決しました-0.2.1;)この問題を完全に修正するには、JDK 1.7.1に戻す必要がありました
Stef 2015年

4

私も同じ問題を抱えていました。私の場合、問題は再起動後に始まりました。アプリを閉じてから、Android Studio(私の場合はV1.1.0)を閉じ、最後に通常のシャットダウンを行いました。その後、1つのJavaファイルを変更してRadioGroupオブジェクトを追加すると、問題が発生しました。

問題の根本原因はGradleの実行プロセスで生成されたため、Gradle構成ファイルの「1」を単純な「0」に変更するだけで問題を解決しました。以前はバージョン「1.0.0」を使用していましたが、写真にあるように「1.1.0」に変更しました。

Gradle構成の場所が変更されました Gradle構成の場所が変更されました

(ファイル->設定-> Gradle->実験的)から正しいバージョンを取得した場所 (ファイル->設定-> Gradle->実験的)から正しいバージョンを取得した場所


gradletootsバージョン1.1.0への変更は私のために働いた。ありがとう!
kalan nawarathne 2015

4

問題は約ではありません Execution failed for task ':dexDebug'

赤で表示されたエラーの上を見ると、これが表示されます

ここに画像の説明を入力してください

この問題を永続的に解決するには、build.gradleファイルにこれらの行を追加するだけです。

android {
    dexOptions {
        jumboMode = true
    }
}

詳細については、この質問を確認してください:ここ


3

AndroidManifestファイルのマニフェストノードにパッケージ名が含まれていることを確認してください。パッケージ名を設定すると、この問題が修正されました。


私の場合、パッケージ名は2つのライブラリサブプロジェクトで複製されました。
sasha_trn 2014

3

ANDROID STUDIOユーザーはこれを試してください:-

Gradleファイルの依存関係に以下を追加する必要があります。

compile 'com.android.support:multidex:1.0.0'

次に、マニフェストのapplicationタグに以下の行(multidexサポートアプリケーション)を追加します。

android:name="android.support.multidex.MultiDexApplication"

2

追加することでこれを修正できます

compile 'com.android.support:support-v4:18.0.0'

vertretungsplan build.gradleの依存関係に合わせて、この行をコンパイルしてから削除し、再度コンパイルします。

今それは動作します


なぜ「v4:18.0.0」なのですか?なぜ 'v4:+'
IgorGanapolsky 2013

4
@IgorGanapolskyは、一般に動的バージョンでは予期しない結果が生じるためです。
aga 2014

1

私は同じ問題を抱えていました、あなたはするべきです:

File -> Invalidate Caches / Restart


1

サポートライブラリとappcompatの両方を使用しようとしたため、この問題が発生しました。

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

サポートライブラリを削除して古いバージョンに変更した後、次のようにコンパイルされました。

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}

1

互換性のない依存関係が2つありました。

以下の依存関係がエラーの原因でした。

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

フィットネスの依存関係をバージョン8.4.0に変更することで、アプリを実行できました。

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

0

AndroidStudioとmircrosoftのWebブラウザへのアップグレードで非常に興味深い問題を見つけました。私は「ばかげて」最新バージョンのIEにアップグレードしました。もちろん、マイクロソフトは無限の知恵を持っており、セキュリティをどうするかを正確に知っています。アプリをコンパイルしようとすると、Gradle-ビルドが失敗しました-タスクの実行に失敗しましたというエラーが表示され続けました。スタックを見ると、java.exeへのパスが認識されていないことがわかりました。前日にコンパイルできたので、奇妙だと思いました。システムの環境変数にJAVA_HOMEを追加し、Android Studioを閉じて、再度開きました。低く、ファイアウォールのナグ画面が表示されない場合は、jave.exeをすべて実行するかどうかを尋ねられます。

なんてクラスターだ!


0

(問題がより具体的に見えるため、これは間違ったスレッドである可能性がありますが、問題のキーワードを検索したときに見つけたスレッドです)

すべての良いヒントにもかかわらず、私を助けた唯一のこと、そして他のすべてがうまくいかない場合に備えて共有したいと思います:

ホームディレクトリの.gradleディレクトリを削除し、AndroidStudioで再構築/再ダウンロードしてもらいます。

Android Studio自体もSDKも再インストールしても修正できなかった、あらゆる種類の奇妙なエラーを修正しました。


0

Eclipse IDEからインポートした後、ライブラリが重複する可能性があります。

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

コメントの後、私は同じ問題を抱えていました:

//compile files('libs/google-play-services.jar')

アプリはエラーを受け取りません。


ローカルjarをlibsフォルダーから削除し、中央リポジトリに依存する必要があります。
WonderCsabo 2015年

0

私は同じ問題に直面しました。これを行うことで解決しました。actionbarsherlock->モジュール設定->依存関係に移動します。サポートv4ライブラリを削除します。左下にプラスボタンがあり、そこから1つのライブラリ依存関係を追加します(support-v4を選択)。完了したら、gradleを再同期してプロジェクトをクリーンアップします。


0

ここでの回答の多くは、重複する依存関係を見つけるための試行錯誤ですが、Execution failed for task ':app:dexDebug'.行から少し上にスクロールすると、重複のヒントが得られます。

ヒント付きのエラー

私の場合、次のエラーが発生しました。

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

したがって、このバグを修正するには、定義する重複する依存関係を見つける必要があることを知っていました parse.AbstractQueryController

私の場合、2つの異なるParseライブラリにロードされている2つのインポートされたモジュールがありました。プロジェクトを1つだけロードするようにすると、問題が修正されました。


0

また、クラスファイルの1つにあるパッケージのスペルが間違っていると、このエラーが発生しました。これらの回答の多くはすぐにJarファイルにジャンプしますが、パッケージのスペルが正しいことも確認します。


0

build.gradleを追加するだけです

コンパイル 'com.parse.bolts:bolts-android:1。+'

コンパイル 'com.parse:parse-android:1.11.0'

プロジェクトをGradleファイルと同期しますがここに画像の説明を入力してください 、libsに解析Jarを追加しないでください:) OKK


0

クラスパスのようにメインファイルへの依存関係としてguavaも使用している場合、DaggerまたはButterknife追加する必要がある場合build.gradle

com.google.guava:guava:20.0

一方、Gradleデーモンのヒープが大きいことに問題がある場合は、radleファイルへの追加を増やすことができます。

 dexOptions {
        javaMaxHeapSize "4g"
    } 


-1

ビルドインメニューバーを使用してプロジェクトをクリーンアップすると、Android Studioの多くのエラーシナリオで機能するため、この場合は機能します。


これでこの問題が解決する理由について何か情報はありますか?
グレッグベア2016

1
build.gradleのライブラリを除外できない方法でCozを実行し、受け入れられたソリューションでは、コンパイルできなかったjarファイルを削除して追加するように指示されています。したがって、問題を引き起こしたのはjarファイルではありませんでした。 、問題が発生する前に機能していましたが、前述の方法を使用して解決した後も機能しているため、ビルドの問題とコードがコンパイルされませんでした。したがって、ビルドが失敗した場合の最善の方法は、プロジェクトをクリーンアップして再構築することです。ありがとうございました!
code4salvation 2016

ほとんどの人にとって、このメッセージは、プロジェクトを構築しようとしている場合に表示されます。したがって、これは間違いなく解決策ではありません
maysi 2016

1
依存関係がコンパイルされていないためにビルドが失敗し、「プロジェクトをビルド」したときにのみ表示されるという回答をお読みください。AndroidStudioとの同期を維持するには、Javaを利用可能な最新バージョンのcozに更新してください。前後で話が違います。
code4salvation 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.