2013-10-10 9 views
31

Ho una configurazione directory/progetto come questo:Richiede progetto Gradle da un'altra directory

C:\ 
    _dev\ 
     Projects\ 
      Logger 
      MyProject 

Logger è un progetto della libreria Android utilizzando Gradle. MyProject è un progetto di progetto Android standard che deve utilizzare la libreria Logger.

Sto utilizzando Android Studio e ho provato ad aggiungere Logger alle librerie esterne. Mentre questo funziona durante lo sviluppo, ricevo messaggi sulla classe che non viene trovata durante la costruzione.

Sono completamente nuovo a Gradle, ma hanno provato quanto segue nel mio build.gradle entro MyProject:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.1.0" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 18 
    } 

    dependencies { 
     compile files("../Logger") 
    } 
} 

dependencies { 
    compile 'com.android.support:gridlayout-v7:18.0.0' 
    compile 'com.android.support:appcompat-v7:18.0.0' 
} 
+3

Ti piace questo? http://stackoverflow.com/questions/17479076/android-studio-add-external-project-to-build-gradle – Lesleh

+0

Già provato, sfortunatamente. include ': logger' project (': logger'). ProjectDir = new File (settingsDir, '../SysLog') – euantorano

risposta

79

Il modo più semplice è quello di rendere MyProject un progetto multiplo con il progetto Logger come sottoprogetto.

settings.gradle in MyProject directory:

include ":logger" 
project(":logger").projectDir = file("../logger") 

Nel build.gradle di MyProject ora è possibile fare riferimento a questo lib come un progetto:

dependencies { 
    compile 'com.android.support:gridlayout-v7:18.0.0' 
    compile 'com.android.support:appcompat-v7:18.0.0' 
    compile project(":logger") 
} 
+0

Grazie, questo è esattamente ciò di cui avevo bisogno. Il progetto è stato compilato correttamente non appena ho aggiunto questo. – euantorano

+0

È possibile utilizzare un valore di proprietà dal file gradle.properties della directory home di Gradle? – Rick

+0

Questo è esattamente ciò che ho dedotto che potrei essere in grado di fare, ed è esattamente la risposta che stavo cercando :- – Antinous

3

Prova ad aggiungere la dipendenza alla sezione globale "dipendenze", non il "Android > dipendenze ". Durante lo sviluppo, viene utilizzata la configurazione "android", ma non per il pacchetto del runtime.

dependencies { 
    compile 'com.android.support:gridlayout-v7:18.0.0' 
    compile 'com.android.support:appcompat-v7:18.0.0' 
    compile files("../Logger") 
} 

Può anche essere utile per esaminare la creazione di una configurazione multi-Gradle progetto, con un build.gradle e settings.gradle nella directory padre condivisa come qui: http://www.gradle.org/docs/current/userguide/multi_project_builds.html

+0

Solo provato, purtroppo senza successo. Ancora gli stessi errori. – euantorano

3

Android 2.2.3 Studio:

Aggiungi settings.gradle.

include ':app', ':new_lib' 
project(':new_lib').projectDir = new File('../new_lib/app') 
  • Il percorso deve essere relativo alla radice del progetto si sta lavorando su .
  • Il modulo a cui si fa riferimento deve avere un riferimento alla sua directory "app" .

Quindi modificare la struttura del progetto | Moduli per impostare le dipendenze.

+0

Ho provato questo in Android Studio ma ora il mio progetto root non è più considerato una libreria e le varianti di build mostra solo ciò che hai chiamato ": new_lib" come modulo disponibile. L''app' originale non è più nell'elenco dei moduli. – ZeroStatic