2015-04-15 9 views
5

ben sistem inşa Gradle için yeni, ben Retrofit gibi bağımlılıkları içeren bir kütüphane projesi, okhttp vbAndroid aar bağımlılıkları

projemi derlenmiş ve bir aar dosyası oluşturduk var. Sahte bir proje oluşturdum ve kütüphanem aar'ı bağımlılık olarak ekledim.

Şimdi, taklit uygulamamın build.gradle dosyasında Bağımlılık olarak retrofit ve okhttp eklemiyorsam, uygulamam sınıf istisnasıyla çakıldı.

Soruma göre: Kütüphane aar dosyası zaten bağımlılık olarak retrofit ve okhttp içerdiğinden, bunları neden açık bir şekilde dummy app build.gradle dosyasına eklemem gerekiyor? Bir çözüm var mı?

İşte benim kütüphane build.gradle

apply plugin: 'com.android.library' 
    buildscript { 
     repositories { 
      mavenCentral() 
      jcenter() 
     } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.0.+' 
    } 
} 
allprojects { 
    repositories { 
     jcenter() 
    } 
} 
android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    }} 
    dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.+' 
    compile 'com.android.support:recyclerview-v7:21.+' 
    compile 'com.android.support:cardview-v7:21.+' 
    compile 'com.google.android.gms:play-services:6.5.87' 
    compile 'com.squareup.okhttp:okhttp:2.2.0' 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    } 

cevap

3

Yerel bir maven deposuna aar dosyası ekleyerek bu sorunu çözmek için başardı olduğunu. Bir şekilde libs klasörüne aar ekleyerek ve onu bağımlılık olarak dahil etmek problemi çözmez.

sadece içinde Sonra bu eklemeler

apply plugin: 'maven' 

    version = "1.0" 
    group = "com.example.lib" 



buildscript { 
    repositories { 
     mavenCentral() 
     mavenLocal() 
    } 

    dependencies { 
     classpath 'com.github.dcendents:android-maven-plugin:1.0' 
    } 
} 
    repositories { 
     mavenLocal() 
    } 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "file://${System.env.HOME}/.m2/repository/") 
     } 
    } 
} 

çalıştırın ./gradlew uploadArchives

olarak Android stüdyoda kendisini sağlanan terminalde görev ile kütüphane projesi build.gradle değiştirmek benzer sorunla karşılaşırsanız uygulama modülünün build.gradle dosyası, bağımlılık sen benim günü kurtardı

compile ('com.example.app:ExampleLibrary:[email protected]') { 
     transitive = true; 
    } 
+0

olarak kütüphaneyi ekleyin ama biz 'build.gradle' için' mavenLocal() 'eklemem gerekiyor açık olmak kütüphaneyi kullanacak olan uygulama kütüphanede değil – Guillaume