実装プロジェクトが正常に機能した後、サードパーティのライブラリ (zxing) を使用してプロジェクトを実装しました。次に、プロジェクトを単体テストするためのテスト プロジェクトを 1 つ作成した後です。エラーが発生しますが、メイン プロジェクトのそのメソッド内で zxing フレームワーク クラスが使用されている場合、実行時にまだコンパイル時に上記のエラーが発生します。この問題を解決する方法を教えてください。
9 に答える
サードパーティのライブラリ参照が 2 回追加されたため、このエラーが発生しています。テスト プロジェクトのビルド パスにアプリケーション パスを追加しました。そのため、ライブラリ参照が自動的にテスト プロジェクトに追加されます」。プロパティ - > Android の下のテスト プロジェクトのライブラリ参照を削除します。
参考までに、詳細な説明については、 ここをクリックしてください。
これは、zxing jar ファイルが 2 回読み込まれているためです。コンパイル時に zxing ライブラリを「提供済み」として設定する必要があるため (Maven を使用してコードをコンパイルしている場合)、ライブラリがバイトコードに追加されません。そうすれば、エラーは発生しません
残念ながら、私が見た最善の解決策は、これらのコード行でスクリプトを使用し、Espresso v2.0 を使用することです。
adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
adb shell stop installd
adb shell start installd
テストを開始する前に実行してください。一度だけ行う必要があります。
Intelij Idea でテストプロジェクトの設定を変更しました。Modules -> Dependencies に移動し、テスト済みプロジェクトのスコープを 'Provided' に設定します。
Guava を使用していて、Espresso にも Guava が含まれているため、このエラーが発生しました。
Gradle と Android Studio を使用している場合、次のようにパッケージを依存関係から除外できます。
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
exclude group: 'com.google.guava'
}
Eclipse のプロジェクトの Java ビルド パスの下にある [注文とエクスポート] タブから jar (私の場合はマップと Google Play サービス jar) のチェックを外します。ただし、[ライブラリ] タブに追加します。OK、Clean projects and build now をクリックします。できます。