2013-05-21 32 views
44

Android Studio ile birlikte gelen Gradle derleme sistemini kullanıyorum. Şimdiye kadar, proje yapımda saklanan bağımlılıkları kullanarak çok projeli kurulumlar yapıyorum. Şimdi bir maven bağımlılığı kullanmak istiyorum, boşuna.Android Studio/Gradle ile Maven Bağımlılıkları

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

şu mesajla:

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

Ben şimdiye kadar denedim herhangi objeyle olur hep başarısız çok basit build.gradle dosyası yazdım. Neyin yanlış olduğuna dair bir fikrin var mı?

Teşekkür

+0

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

+0

Not: En son sürümü http://mvnrepository.com/artifact/com.h2database/h2 adresinden edinebilirsiniz – mangu23

cevap

68

Bubdsds bölümündeki "depolar" bloğu yalnızca yapı ortamına uygulanır. Ayrıca proje oluşturmak için bağımlılıkları çözerken kullanılacak depo belirtmek gerekir, böylece build.gradle dosyasında aşağıdaki gibi bir şey koymak gerekir:

repositories { 
    mavenCentral() 
} 

Eksiksiz dosyası aşağıdaki gibi görünecektir:

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

"Depolar" ın iki örneğini not edin. Bunun aslında the gradle docs'da ne anlama geldiği hakkında daha fazla bilgi edinebilirsiniz.

+0

Bunu açıklayabilir misiniz, çünkü ne demek istediğinden emin değilim? – arinte

+0

@arinte o kadar açık mı? – ZoFreX

+0

@ZoFreX yep, bunu yaptı. – arinte

12

mevcut Android Studio sürümü hemen yeni bağımlılıklar almak etmediğini görünüyor. IDE'yi yeniden başlatmayı deneyin.

Düzelt: Bu Android Studio için gerekli değildir> = 0.1.4v. Sync Project with Gradle file numaralı eylemde bulundu. Tools > Android > Sync Project with Gradle file altında veya Araç Çubuğunda sadece düğme altında bulabilirsiniz.

+0

Bu bilgi için +1. IDE'yi yeniden başlattıktan sonra bağımlılıklarda belirtilen sınıfları ithal edebildim. –

+0

Bu benim projemde iyiydi 'build.gradle' olarak beni korkutuyordu. IDE’yi yeniden başlatmak onu sıraladı. Teşekkürler – samael

7

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

Not: Bu sadece yapı değil, proje çalıştıran kodunu etkiler. Projenin kendi depolarını ve bağımlılıklarını beyan etmesi gerekiyor. Bu daha sonra ele alınacaktır.

Böylece bir kez daha proje kapsamında

repositories { 
    mavenCentral() 
    } 

beyan etmek zorunda. Ben ekledi: (Projeniz Projesi):

Üst build.gradle olarak:

3

Ben öyle yaptım

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

NOT: Ben önceden tanımlanmış jcenter() depoları ile birlikte bu ekledi.

Ve

sonra benim app/build.gradle dosyası için ben ihtiyaç hangisi kütüphane veya bağımlılık eklendi:

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

maven Maven şartname oluşturmak yazmak için biçimi olarak XML kullanarak devam eder. Bununla birlikte, yapı taban tabana zıttır. Maven'in kendine özgü sorunları var. Bağımlılık yönetimi, aynı kütüphanenin farklı versiyonları arasındaki çatışmaları çözmez (Ivy'nin daha iyi olduğu bir şey).Yapı yapılandırması formatı olarak XML kesinlikle yapılandırılmış ve yüksek standartlardadır. Hedeflerin özelleştirilmesi (hedefler) zordur. Maven çoğunlukla bağımlılık yönetimine odaklandığından, karmaşık, özelleştirilmiş inşa senaryoları aslında Gradel'den ziyade Maven'de yazmak daha zordur.

İlgili konular