2015-04-15 16 views
5

Sono nuovo di Gradle sistema di compilazione, ho un progetto di libreria che comprende le dipendenze come retrofit, okhttp eccAndroid dipendenze AAR

ho compilato il mio progetto e ha creato un file AAR. Ho creato un progetto fittizio e aggiunto la mia biblioteca aar come dipendenza.

Ora, se non aggiungo Retrofit e okhttp come dipendenza nel file build.gradle dell'app mia dummy, la mia app si arresta in modo anomalo con un'eccezione class non trovata.

La mia domanda è: Poiché il file di libreria aar include già Retrofit e okhttp come dipendenza, allora perché devo aggiungerli esplicitamente anche nel file build.gradle dell'applicazione fittizia? C'è una soluzione.

Ecco il mio build.gradle biblioteca

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

risposta

3

ero in grado di risolvere questo con l'aggiunta di file aar in un repository Maven locale. In qualche modo l'aggiunta di aar nella cartella libs e l'inclusione come dipendenza non risolve il problema.

Se si verificano problemi simili basta modificare la build.gradle progetto di libreria con queste aggiunte

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

eseguire l'operazione nel terminale fornito in studio Android stesso come uploadArchives ./gradlew

Poi, nel file di build.gradle del modulo app, aggiungere la libreria come dipendenza

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

è stato salvato il mio giorno, ma per essere chiaro che abbiamo bisogno di aggiungere 'mavenLocal()' a 'build.gradle' di l'app che utilizzerà la libreria, non nella libreria stessa – Guillaume

Problemi correlati