2015-04-15 16 views
5

Jestem nowy Gradle systemu budowania, Mam projektu biblioteki, która obejmuje współzależności jak modernizowanych okhttp itpAndroid AAR zależności

Skompilowałem mój projekt i utworzony plik AAR. Stworzyłem projekt dummy i dodałem moją bibliotekę aar jako zależność.

Teraz, jeśli nie dodam opcji Retrofit i okhttp jako zależności w pliku build.gradle mojej dummy app, moja aplikacja ulega awarii z wyjątkiem klasy nie znaleziono.

Moje pytanie brzmi: Ponieważ plik biblioteki aar zawiera już funkcję Retrofit i okhttp jako zależność, to dlaczego muszę je również jawnie dodawać do pliku build.gradle? Czy jest w pobliżu praca.

Oto moja biblioteka 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' 
    } 

Odpowiedz

3

udało mi się rozwiązać ten problem poprzez dodanie pliku AAR do lokalnego repozytorium maven. W jakiś sposób samo dodanie aar do folderu libs i włączenie go jako zależności nie rozwiązuje problemu.

Jeśli napotkasz podobny problem tylko zmodyfikować biblioteki projektu build.gradle z tymi dodatkami

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/") 
     } 
    } 
} 

uruchomić zadanie w terminalu przewidzianego w Android studio się jako ./gradlew uploadArchives

Następnie w plik build.gradle swojej aplikacji modułu, należy dodać bibliotekę jako zależność

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

uratowałeś mój dzień, ale być jasne, musimy dodać 'mavenLocal()' 'build.gradle' do dnia aplikacja, która będzie korzystać z biblioteki, a nie w samej bibliotece – Guillaume

Powiązane problemy