48

Android Studio にバンドルされている Gradle ビルド システムを使用しています。これまでのところ、プロジェクト構造に保存されている依存関係を使用して、マルチプロジェクトのセットアップを構築できます。私は今、Mavenの依存関係を使いたいと思っていますが、役に立ちません。常に失敗する非常に単純な build.gradle ファイルを作成しました。

    buildscript {
        repositories {
            maven { url 'http://repo1.maven.org/maven2' }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.4'
        }
    }
    apply plugin: 'android'

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

    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 16
        }
    }

次のメッセージが表示されます:

    * What went wrong:
        A problem occurred configuring project ':absabs'.
        > Failed to notify project evaluation listener.
           > Could not resolve all dependencies for configuration ':absabs:compile'.
              > Could not find com.google.android:support-v4:r7.
                Required by:
                    absabs:absabs:unspecified
....
Caused by: org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException: Could not find com.google.android:support-v4:r7.

これまでに試したアーティファクトで発生します。何が問題なのですか?

ありがとう

4

6 に答える 6

70

buildscript セクションの「リポジトリ」ブロックは、ビルド環境にのみ適用されます。また、プロジェクトをビルドするために依存関係を解決するときに使用するリポジトリを指定する必要があるため、build.gradle ファイルに次のようなものを配置する必要があります。

repositories {
    mavenCentral()
}

完全なファイルは次のようになります。

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

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

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

「リポジトリ」の 2 つのインスタンスに注意してください。これが実際に何を意味するかについては、gradle docsで詳しく読むことができます。

于 2013-05-21T16:44:48.433 に答える
12

現在の Android Studio バージョンは、新しい依存関係をすぐには取得しないようです。IDE を再起動してみてください。

編集: これは、Android Studio >= 0.1.4v では必要ありません。それは動作を構築していますSync Project with Gradle fileTools > Android > Sync Project with Gradle fileツールバーのボタンの下またはボタンだけで見つけることができます。

于 2013-05-21T13:47:43.843 に答える
-1

maven Maven は引き続き XML を使用してビルド仕様を記述します。ただし、構造は正反対です。Maven には独自の問題があります。依存関係管理は、同じライブラリの異なるバージョン間の競合を適切に処理しません (Ivy の方がはるかに優れています)。ビルド構成形式としての XML は、厳密に構造化され、高度に標準化されています。ターゲット(目標)のカスタマイズは難しい。Maven は主に依存関係の管理に重点を置いているため、複雑でカスタマイズされたビルド スクリプトを Maven で記述するのは、Gradel よりも実際には困難です。

于 2015-10-19T04:03:59.360 に答える