2

Espresso でインストルメンテーション テストを実行しようとしていますが、テストをコンパイルすると、gradle make がエラーを返します。

エラー: Gradle: バイトコードを dex に変換中にエラーが発生しました: 原因: com.android.dex.DexException: 複数の dex ファイルが Landroid/databinding/DataBindingComponent を定義しています。

いくつかの依存関係エラーがあると想定し、次のような依存関係をリストしました。
.\gradlew app:dependencies

そして奇妙なことがありました:私はデータバインディングバージョン1.0-rc4を使用していますが、リストされた依存関係には1.0-rc3がありました:

default - Configuration for default artifacts.
+--- com.android.databinding:library:1.0-rc3                                     
|    +--- com.android.databinding:baseLibrary:1.0-rc3
|    \--- com.android.support:support-v4:21.0.3 -> 23.1.1
|         \--- com.android.support:support-annotations:23.1.1
+--- com.android.databinding:adapters:1.0-rc3
|    \--- com.android.databinding:library:1.0-rc3 (*)
+--- com.android.support:appcompat-v7:23.1.1
|    \--- com.android.support:support-v4:23.1.1 (*)
+--- com.android.support:recyclerview-v7:23.1.1
|    +--- com.android.support:support-annotations:23.1.1
|    \--- com.android.support:support-v4:23.1.1 (*)
+--- com.google.dagger:dagger:2.0    
|    \--- javax.inject:javax.inject:1
\--- com.trello:rxlifecycle-components:0.4.0
     +--- com.trello:rxlifecycle:0.4.0
     |    +--- com.jakewharton.rxbinding:rxbinding:0.3.0
     |    |    +--- com.android.support:support-annotations:23.1.0 -> 23.1.1
     |    |    \--- io.reactivex:rxjava:1.0.14 -> 1.0.16
     |    \--- io.reactivex:rxjava:1.0.16
     +--- com.android.support:appcompat-v7:23.1.1 (*)
     \--- io.reactivex:rxjava:1.0.16 

provided - Classpath for only compiling the main sources.
+--- com.android.databinding:compiler:1.0-rc4                                     
|    \--- com.android.databinding:baseLibrary:1.0-rc4
\--- javax.annotation:javax.annotation-api:1.2

この 1.0-rc3 はどこから来たのですか? プロジェクト全体にそのような文字列「rc3」はありません(生成されたdex-cacheファイルを除く)。

UPD:
これは android gradle-plugin の問題だと思います。同じコードが gradle 1.5 で動作しますが、gradle 2.0.0-beta2 と 2.0.0-beta4 では失敗するためです。
UPD2:
問題を解決しました。
プロジェクトは比較的古く、android-databindingプラグインはベータ版から成長しましたgradle 1.5.0-beta1
。データバインディングを有効にするには、追加するだけです

dataBinding {
    enabled = true
}

あなたのandroid{}セクションで。

したがって、このような問題に直面した場合は、ファイルからこれらの文字列を削除したことを確認してくださいbuild.gradle:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3)apt 'com.android.databinding:compiler:1.0-rc4'

4

1 に答える 1

1

問題を解決しました。
プロジェクトは比較的古く、android-databindingプラグインはベータ版から成長しましたgradle 1.5.0-beta1
。データバインディングを有効にするには、追加するだけです

dataBinding {
    enabled = true
}

あなたのandroid{}セクションで。

したがって、このような問題に直面した場合は、ファイルからこれらの文字列を削除したことを確認してくださいbuild.gradle:
1) apply plugin: 'com.android.databinding'
2) classpath 'com.android.databinding:dataBinder:1.0-rc4'
3)apt 'com.android.databinding:compiler:1.0-rc4'

于 2016-02-19T06:02:37.147 に答える