5

私はgradle 0.5でandroid studio 0.2.3を使用しており、次のようにormlite依存関係をbuild.gradleファイルに追加しました:

compile 'com.j256.ormlite:ormlite-android:4.9'

Gradle は 2 つの jar ファイルをダウンロードしました:ormlite-android.jarormlite-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パッケージ内の と でした。 開封されたパッケージは同一ではありませんか?

4

2 に答える 2

13

使用している ormlite-android jar は間違いなく間違っています。私の推測では、誰かがエクスポートされた ormlite-core で間違ってビルドしたため、マージの競合が発生しています。ormlite-android のソースを見ると、これらのパッケージ/クラスのほとんどが含まれているとは想定されていません。

ormlite-android のバージョン管理がどのように機能するかはわかりませんが、4.9 (2011 年 1 月 26 日更新) ではなく、4.46 が実際の最新バージョン (2013 年 7 月 29 日更新) のようです。代わりに 4.46 を使用することをお勧めします (それが私にとってはうまくいきます)。

'com.j256.ormlite:ormlite-android:4.46'
于 2013-08-05T22:36:31.597 に答える
1

@cproinger に、別の関連する質問の回答に感謝します。

うわー、今それは動作します! バージョン管理を誤解していました(私のせいです)。とにかく、新しいバージョン (4.46) には Android 固有のクラスのみが含まれ、ormlite-android.jarその他はすべてormlite-core.jar. @cproinger に感謝します。

于 2013-08-07T00:09:52.553 に答える