私はgradle 0.5でandroid studio 0.2.3を使用しており、次のようにormlite依存関係をbuild.gradle
ファイルに追加しました:
compile 'com.j256.ormlite:ormlite-android:4.9'
Gradle は 2 つの jar ファイルをダウンロードしました:ormlite-android.jar
とormlite-core.jar
. 問題は、jar ファイルに同じ名前のクラスが含まれていることです。したがって、次のよく知られた例外が発生します。
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/j256/ormlite/dao/BaseDaoImpl$1;
maven の同じ問題に対する他の解決策が存在し、ormlite-core.jar
. からのすべてのクラスormlite-core.jar
が含まれている場合、これは機能するはずですormlite-android.jar
-私はこれをチェックしませんでした。その場合、ormlite-core がこの ormlite android 依存パッケージにある理由がわかりません...上記のスニペットでわかるように、明示的に ormlite-android を追加しています。
しかし、gradle で ormlite-core.jar を除外する方法。私が見つけたものはすべてgradle 1.6用でしたが、android studioはgradle 0.5を使用していますか、これはandroid gradle wrapperのバージョンですか?
。:編集:。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:18.0.+'
compile 'com.android.support:appcompat-v7:18.0.+'
compile 'com.google.android.gms:play-services:3.1.+'
compile 'com.j256.ormlite:ormlite-android:4.9'
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
}
2 つの ormlite ライブラリに同じクラスがあると思うのはなぜですか? ==> スクリーンショットを参照してください。開封されたパッケージは同一ではありませんか? ソースさえある。私が見つけた唯一の異なるクラスSqliteAndroidDatabaseType
は、com.j256.ormlite.android
パッケージ内の と でした。