7

MyProject + Facebook api で Android Studio + gradle をライブラリとして使用しています。以下の設定を参照してください。

support-v4 (r7 または 18.0.0) のすべての参照を削除してそれらを support-v13 に置き換えようとしましたが、v4 のメッセージはまだ存在していました。また、どこにも参照されていないにもかかわらず、support-v4-r7 が外部ライブラリに表示されることにも気付きました。それが問題でしょうか?

MyProject build.gradle:

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

repositories {
    mavenCentral()
    maven {
        url "https://raw.github.com/ark/ark/master/releases/"
    }
}

dependencies {
    compile 'com.andreabaccega:android-form-edittext:1.0.3'
    compile 'com.astuetz:pagerslidingtabstrip:1.0.0'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.12'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.7'
    compile 'com.google.android.gms:play-services:3.1.36'
    compile files('libs/imageloader-core-1.5.8.jar')
    compile project(':libs:Facebook')

}

android {
    compileSdkVersion 17
    buildToolsVersion "18.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 17
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['res']
            res.srcDirs = ['res']
        }

        debug {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src', 'libs/Facebook/src', 'libs/Facebook/build/source/r/debug', 'libs/Facebook/build/source/buildConfig/debug']
            resources.srcDirs = ['build', 'libs/Facebook/build/source/r/debug', 'libs/Facebook/build/source/buildConfig/debug']
            res.srcDirs = ['res']
        }
    }
}

MyProject settings.gradle:

include ':MyProject'
include ':libs:Facebook'

Facebook build.gradle:

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

repositories {
    mavenCentral()
}

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

android {
  compileSdkVersion 17
  buildToolsVersion '18.1'

    defaultConfig {
        minSdkVersion 8
    }

  sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['res']
        res.srcDirs = ['res']
    }
      debug {
          manifest.srcFile 'AndroidManifest.xml'
          java.srcDirs = ['src', 'build/source/r/debug', 'build/source/buildConfig/debug']
          resources.srcDirs = ['build/source/r/debug', 'build/source/buildConfig/debug']
          res.srcDirs = ['res']
      }
  }
}

編集:このプロジェクトで使用するライブラリを別のプロジェクトに1つずつ追加して、何が失敗するかを確認してみました。どうやら犯人はこの2人。それらのいずれかまたは両方を含めると、上記のエラーが発生します。

compile 'com.astuetz:pagerslidingtabstrip:1.0.0'
compile 'com.google.android.gms:play-services:3.1.36'

これを管理する方法についてのアイデアはありますか?

Edit2:どうやら別のプロジェクトで同じ問題が発生しているようです。以下の build.gradle の依存関係を参照してください。StickyListHeaders プロジェクトに依存関係がなくなりました。だから私はそれが ActionBarSherlock のせいだと思いますか?

dependencies {
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile 'com.android.support:support-v4:18.0.+'
    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.12'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.7'
    compile project(':Project Base:libs:StickyListHeaders')
}
4

7 に答える 7

7

どうやら、この問題には 2 つの理由がありました。

1) PagerSlidingTabStrip ライブラリは、ローカル サポート ライブラリ v4 jar に依存します。依存関係を削除し、プロジェクトをライブラリ プロジェクトとしてアプリに追加し、その中にサポート v4 の maven 依存関係を追加します。したがって、上記の Facebook ライブラリ プロジェクトとまったく同じように見えるはずです。

2) RoboSpice ライブラリは、サポート ライブラリ v4 ( https://github.com/octo-online/robospice/issues/195 ) の LRUCache に依存しています。メインの build.gradle ファイルから除外するだけで、準備完了です。

compile ('com.octo.android.robospice:robospice-spring-android:1.4.7')
        {
            exclude module: 'support-v4'
        }

うまくいけば、これは誰かを助け、私のようにこの問題で丸一週間を費やすことはありません. ああ、@Snicolasに感謝します。彼の助けがなければ解決できなかった.

編集: RoboSpice v1.4.8 の時点で、ローカル サポート ライブラリの依存関係がなくなったため、この問題は修正されました。

于 2013-10-05T14:51:40.223 に答える
0

ページ スライダー ライブラリには、サポート ライブラリの依存関係もあります。したがって、このエラーが発生しています。Maven の場合は、サポート ライブラリのメイン プロジェクトの pom ファイルの依存関係エントリを、提供されているスコープに変更するだけです。

<dependency>
    <groupId>android.support</groupId>
    <artifactId>compatibility-v4</artifactId>
    <version>13</version>
    <scope>provided</scope>
</dependency>

gradleの場合、mavenが提供するスコープに一致するように依存関係の構成を変更する必要があると思います

詳細については、次のリンクを参照してください。Maven を Gradle に変換する

于 2013-10-01T07:29:28.480 に答える