2013-05-21 32 views
44

Android StudioにバンドルされているGradleビルドシステムを使用しています。これまでのところ、私は自分のプロジェクト構造に保存されている依存関係を使用してマルチプロジェクトセットアップを構築することができました。私は現在、Mavenの依存関係を使用したいと思います。無駄です。それは私がこれまで試してみましたすべての案件で発生Android Studio/GradleとMavenの依存関係

* 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. 

:次のメッセージを

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 
     } 
    } 

:私はいつも失敗し、非常に単純なbuild.gradleファイルを書かれています。何が間違っているの?

おかげ

+0

http://mvnrepository.com/artifact/com.google.android/support-v4/r7 –

+0

注:http://mvnrepository.com/artifact/com.h2database/h2 – mangu23

答えて

68

buildscriptセクションの "repositories"ブロックは、ビルド環境にのみ適用されます。また、あなたは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つのインスタンスに注意してください。 the gradle docsでこれが実際に意味することについてもっと読むことができます。

+0

私はあなたが何を意味するか分からないので、あなたはそれについて説明することができますか? – arinte

+0

@arinteはそれがはっきりしていますか? – ZoFreX

+0

@ ZoFreXうん、それはそれをしました。 – arinte

12

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

編集: Androidスタジオ> = 0.1.4vではこれは必要ありません。それはアクションSync Project with Gradle fileでビルドしています。 Tools > Android > Sync Project with Gradle fileまたはツールバーのボタンの下に表示されます。

+0

で最新バージョンを入手できます。この情報の+1。 IDEを再起動した後、依存関係で参照されるクラスをインポートすることができました。 –

+0

私のプロジェクトの 'build.gradle'はうまくいっていたので、これは私の年齢を悩ませていました。 IDEを再起動するとソートされました。ありがとう – samael

7

http://tools.android.com/tech-docs/new-build-system/user-guide

注:これは、ビルドではなく、プロジェクトを実行するコードに影響を与えます。プロジェクト自体は、独自のリポジトリと依存関係を宣言する必要があります。これについては後で説明します。

だから、もう一度、プロジェクトのスコープに

repositories { 
    mavenCentral() 
    } 

を宣言しなければなりません。

3

私はそれをこのように行った:

トップbuild.gradle(プロジェクト:YourProject)で私がコメントを追加しました:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.h2database:h2:1.4.187' 
     //NOTE: you can get the latest version in http://mvnrepository.com/artifact/com.h2database/h2 

     } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

注:私は、事前に定義されたjcenter()のリポジトリと一緒にこれを追加しました。私は私が必要な方のライブラリや依存関係を追加

私のアプリ/ build.gradleファイルの

そして:

dependencies { 
....//Add dependency here 
} 
0

のmaven Mavenの仕様を構築書くためのフォーマットとしてXMLを使用し続けています。しかしながら、構造は全く異なっている。 Mavenには独自の問題があります。依存関係管理は、同じライブラリの異なるバージョン間での矛盾をうまく処理しません(Ivyの方がはるかに優れています)。ビルド構成形式としてのXMLは、厳密に構造化され、高度に標準化されています。目標(目標)のカスタマイズは難しい。 Mavenは主に依存関係管理に重点を置いているので、複雑でカスタマイズされたビルドスクリプトは、実際にはgradよりもMavenで書くのが難しいです。

関連する問題