2013-01-14 16 views
19

Stiamo standardizzando la nostra infrastruttura per lo sviluppo Android e stiamo cercando di incorporare la gestione delle dipendenze nei nostri progetti di libreria Android. Il mio brano attuale utilizza il plugin Android Maven con m2e-android. Abbiamo caricato gli artefatti Android nel nostro repository Artifactory con lo Android SDK Deployer. Abbiamo anche una struttura interna con alcune librerie che possiamo importare nei nostri progetti e per la maggior parte funziona bene.Stato della gestione delle dipendenze del progetto Android

Il problema che stiamo affrontando ora è che le dipendenze apklib contenenti i file di risorse sono difficili da configurare. Il plugin maven può configurare correttamente il classpath, ma se apklib ha file di risorse che devono essere referenziati dal progetto genitore Android, Eclipse non è in grado di trovarli a meno che tu non controlli il Progetto Biblioteche e lo colleghi al progetto padre tramite ADT.

Dopo aver letto la discussione M2E-Android su tema https://github.com/rgladwell/m2e-android/issues/8, https://stackoverflow.com/questions/6269816/creating-closed-source-android-libraries#answer-6270768 e APKLIB does not get installed in Maven Repo, io non sono convinto Maven è la strada da percorrere fino ADT supporta correttamente le librerie fonte APK chiusi.

Mi piacerebbe sapere come gestisci questo tipo di dipendenze sui tuoi progetti Android. Quali strategie ci sono oltre all'utilizzo di Maven?

Per riferimento, ecco cosa abbiamo provato fino ad ora.

  1. Nessuna gestione delle dipendenze. Tutti i jar necessari vengono memorizzati nella cartella lib e trasferiti al repository di controllo del codice sorgente. I progetti di libreria sono configurati come sottocartelle e trasferiti al repository di controllo del codice sorgente per ogni progetto in cui sono utilizzati. Vengono inoltre inserite le impostazioni del progetto di Eclipse. Progetto realizzato con script AntT standard di ADT.
  2. Dipendenze jar nella cartella libs e dipendenze della libreria come sottomoduli git. Progetto realizzato con script AntT standard di ADT.
  3. Gestione delle dipendenze con Maven, inclusi progetti di libreria con packaging apklib. Problema con i file di risorse in apklibs.
+0

È possibile raggruppare il progetto di libreria e il progetto di app come progetto a più moduli, vedere l'esempio [qui] (https://github.com/jayway/maven-android-plugin-samples/tree/master/libraryprojects). quando si importa il progetto multi-modulo in Eclipse, m2e-android imposterà automaticamente il progetto della biblioteca e collegherà al progetto dell'app. – yorkw

+1

Cool Ci proverò. Per ora abbiamo deciso di usare i macro form per clonare i progetti di libreria da git. Non risolve la transitività delle dipendenze o simili, ma poiché il nostro grafico delle dipendenze è piuttosto superficiale su Android, non dovrebbe essere un problema la maggior parte delle volte. Abbiamo fatto in modo che assomigli un po 'a maven/edera/gradle. La macro è chiamata "dipendenza" e abbiamo uno script che importiamo con un'attività chiamata update-dependencies.Nello script del progetto, tutto ciò che devi fare è aggiungere . – AngraX

+1

Usiamo Maven con [IntelliJ] (http://www.jetbrains.com/idea/download/). Gestisce le dipendenze del tipo apklib (sottomodulo o altro) come un campione. Come bonus aggiuntivo, l'edizione comunitaria (gratuita) è stata totalmente sufficiente per le nostre esigenze. – Jonba

risposta

4

Con l'avvento di Android Studio e Gradle, non ci sono più problemi con le dipendenze del progetto; Android o altro

Gradle supporta le dipendenze Maven nei formati jar o apklib. Le librerie popolari sono state esportate nel formato apklib (aar) e rese disponibili tramite Maven.

Problemi correlati