2013-07-31 11 views
6

Android StudioのプロジェクトでFacebook SDKを使用しようとしています。私はthisチュートリアルのステップ3に従っています。アプリケーションを実行しようとすると、「Gradle:実行に失敗しました:FacebookApp:dexDebug」というメッセージが表示されます。エラー。 C:アンドロイド-SDKの\ビルドツール\ 18.0.0 \ \ dx.bat --dex --output C:\ユーザーエラーFacebook SDKを使用しようとしているときにGradleビルドに失敗しました

Gradle: Execution failed for task ':FacebookApp:dexDebug'. 

は、コマンドを実行するために失敗した場合、以下の出力でありますC:\ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ classes \ debug C:\ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ libs \ \ dependency-cache \ debug C:\ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ Build \ exploded-bundles \ FacebookAppProjectLibrariesFacebookUnspecified.aar \ classes.jar C:\ Users \ Brandon \ AndroidStudioProjects \ FacebookAppProject \ FacebookApp \ build \ exploded-bundles \ FacebookAppProjectLibrariesFacebookUnspeci fied.aar \ libs \ android-support-v4.jar C:\ android-sdk \ extras \ android \ m2repository \ com \ android \ support \ support-v4 \ 13.0.0 \ support-v4-13.0.0.jar エラーコード:出力: 予期しない上位レベルの例外: java.lang.IllegalArgumentException:既に追加されています:Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl; com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) com.android.dx.dex.file.DexFile.add(DexFile.java:163) at com.android。 dx.command.dexer.Main.processClass(Main.java:490) (com.android.dx.command.dexer.Main.processFileBytes(Main.java:459) 、com.android.dx.command.dexer)。 Main.access $ 400(Main.java:67) com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:398) (com.android.dx.cf.direct.ClassPathOpener.processArchive( ClassPathOpener.java:245) (com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 、com.android.dx .command.dexer.Main.processOne(Main.java:422) (com.android.dx.command.dexer.Main.processAllFiles(Main.java:333) 、com.android.dx.command.dexer.Main) .run(Main.java:209) (com.android.dx.command.dexer.Main.main(Main.java:174) 、com.android.dx.command.Main.main(Main.java:91) ) 1エラー。ここで

を中断することは、Facebookのモジュールのbuild.gradleです:

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 

apply plugin: 'android-library' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 

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

そしてプロジェクトのbuild.gradle:

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

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile project(':libraries:facebook') 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

私が何か間違ったことをやっていますか?

答えて

16

アンドロイドサポートライブラリを2回追加すると、デクスマージの競合が発生します。主なプロジェクトは'com.android.support:support-v4:13.0.+'のMavenライブラリを指し、Facebookプロジェクトはfiles('libs/android-support-v4.jar')でそれを参照しています。 Gradleはローカルjarファイル間の競合を解決できないため、mavenを介してそれらを参照する必要があります。

はに自分のFacebookのbuild.gradleのdependenciesセクションを変更します。

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

、すべてが動作するはずです。

+1

最初にこれが動作しない場合は、(アンドロイドスタジオのみ)[ファイル]> [キャッシュ/再起動を無効にする]> [無効にして再起動] –

+0

@Greg:私のライブラリには 'android-support-v4.jar'ファイル。したがって、このライブラリの 'build.gradle'では、' fileTree(dir: 'libs'、include: '* .jar')をコンパイルするか、またはMaven経由で 'Library Depency'を追加する場合は' Android-support -v4'? –

1

アンドロイドスタジオでは、これがサポートライブラリとfacebook SDKをどのように含めるかです。私はAPI 15+をサポートしています。

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'fr.avianey:facebook-android-api:[email protected]' 
    compile 'com.android.support:support-v13:20.0.0' 
    ... 
} 
0

私は同様の問題を抱えていました。 2つの異なるgradle.buildファイルの中にcom.android.tools.build:gradle:1.1.2と1.1.1の矛盾したバージョンがありました。

アプリ/ gradle.build

dependencies { 
    ... 
    compile 'com.android.tools.build:gradle:1.1.2' 
    ... 
} 

トップレベルのgradle.build

dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 
    } 

私は、私のプロジェクトのgradle.buildファイルの行をコメントアウトコマンドラインからgradlew cleanを走った、Androidのメーカーを再起動宇宙で秩序が回復した。

関連する問題