2012-09-18 7 views
8

Sto utilizzando ActionBarSherlock come libreria. Non abbiamo incluso l'ABS nel nostro repository, quindi tutti coloro che partecipano allo our project devono scaricarlo e installarlo separatamente. ActioBarSherlock è un progetto di libreria Android e l'ho eseguito aprendolo e il mio progetto nello stesso spazio di lavoro di Eclipse (nessuno dei due viene copiato nello spazio di lavoro, entrambi esistono in un'altra cartella) e aggiungendolo nel mio project.properties seguendo questo: Referencing a library project.Eclipse: sostituisce il percorso della libreria definito in project.properties

Quel percorso di riferimento è relativo e poiché ognuno potrebbe avere ABS in una cartella diversa, abbiamo anche percorsi diversi nel file di Eclipse come android.library.reference.1. Esiste un modo per sovrascrivere localmente quel percorso della libreria in modo che possiamo avere project.properties nel nostro repository ma Eclipse userà localmente qualche altro percorso? Attualmente devo correggere manualmente quel percorso dopo ogni volta che estraggo dal nostro repository a causa di percorsi diversi.

Esiste other *.properties files ma Eclipse li ignora:

local.properties

personalizzabili proprietà specifiche del computer per il sistema di compilazione. Se si utilizza Ant per creare il progetto, questo contiene il percorso dell'installazione di SDK. Poiché il contenuto del file è specifico per l'installazione locale dell'SDK, le proprietà local.properties non devono essere mantenute in un sistema di controllo di revisione dell'origine. Se si utilizza Eclipse, questo file non viene utilizzato.

ant.properties

proprietà personalizzabili per il sistema di generazione. È possibile modificare questo file per sovrascrivere le impostazioni di build predefinite utilizzate da Ant e fornire anche la posizione del keystore e dell'alias chiave in modo che gli strumenti di compilazione possano firmare l'applicazione quando si crea in modalità di rilascio. Questo file è parte integrante del progetto, quindi conservalo in un sistema di controllo di revisione del codice sorgente. Se si utilizza Eclipse, questo file non viene utilizzato.

risposta

0

Basta che ogni persona lo abbia inserito in projectroot/libs. Le versioni più recenti (ADT 17 e successive, IIRC) dell'ADT la raccoglieranno automaticamente e la compileranno nella tua app. Si noti che la cartella è libs, con un s e non lib. L'utilizzo di /lib non funzionerà.

+0

Se voglio utilizzare la stessa libreria in più progetti, questo approccio significa che devo copiare quegli stessi file in più posizioni. C'è qualche altra opzione in cui potrei usare una libreria installata in una singola posizione nel mio disco fisso su più progetti contemporaneamente? – Kuitsi

+0

Non che io sappia. Se modifichi project.properties, eclipse comunque sovrascrive il file la prossima volta che crei il progetto, –

+3

ActionBarSherlock non è un JAR e quindi non entra in 'libs /'. È un progetto di libreria Android. – CommonsWare

0

Opzioni:

  • project.properties: Si potrebbe creare un collegamento in ogni cartella home degli utenti, libs e hanno il percorso nella project.properties riferiscono a ~/libs

  • Utilizzo di un comune libreria: Creare un progetto di libreria chiamato "comune". Nelle impostazioni, fai esportare il barattolo. Nella tua applicazione Android, importa il barattolo.

Personalmente penso che la configurazione con Maven sarebbe la cosa migliore ma la seconda opzione era la più veloce.

+0

Opzione Un tipo di sconfiggere lo scopo della mia domanda dato che vorrei consentire agli utenti di decidere dove archiviare il loro codice sorgente localmente fino a quando Eclipse può trovarlo. AFAIK Eclipse non ha altre restrizioni sulle posizioni del codice diverse dalle origini nello stesso progetto che devono trovarsi sullo stesso disco rigido (i riferimenti sono fatti con un percorso relativo, non assoluto). Opzione due: abbiamo già ABS come progetto di biblioteca. Perché dovremmo farne una copia? Terzo, Maven potrebbe essere un po 'eccessivo. – Kuitsi

+0

Opzione 2: Quindi configurare ABS per "esportare" la sua lib sarebbe il risultato finale. Se davvero non vuoi usare una convenzione e renderla più difficile con te stesso, crea un'attività ant che esegua 'find -iname 'magical.jar' -print >> local.properties' (seleziona per aggiungere correttamente). La maggior parte vorrebbe fare le cose e sacrificare la configurazione per convenzione. Perché scegliere di mantenere qualche configurazione ... – bgs

0

Che dire se si ignorano i project.properties nel repository? In questo modo ogni utente può mantenerlo e non sarà necessario sostituirlo continuamente. Non penso che tu possa ignorarlo localmente.

Un'altra opzione per semplificare le cose è che è possibile esportare il progetto come file JAR invece di farne riferimento come progetto di libreria. Se non è necessario modificare il codice ABS, è possibile fare clic con il tasto destro del mouse sul progetto -> java -> jar file e tutti gli sviluppatori possono tenerlo nello stesso posto per semplicità.

+1

Che ne dici di questo: ** Perché ActionBarSherlock è un progetto di libreria mentre la libreria di compatibilità originale è solo un .jar? ** _L'implementazione personalizzata della barra delle azioni in ActionBarSherlock si basa su stili, temi, layout, e drawable per visualizzare correttamente. A causa delle limitazioni dei file Android e .jar, questo al momento non può essere realizzato in nessun altro modo. Fonte: [ABS FAQ] (http://actionbarsherlock.com/faq.html) – Kuitsi

+0

Mi piacerebbe mantenere il progetto. proprietà in repository poiché è necessario da Eclipse e mi piacerebbe che gli utenti possano compilare il nostro progetto senza problemi dopo averlo clonato. Ignorarlo con .hgignore non funziona perché quel file è già tracciato. Esiste [alcune opzioni in .hg/hgrc] (http://stackoverflow.com/a/3615771/262462) ma queste dovrebbero essere impostate anche su ogni fork del nostro progetto. – Kuitsi

+1

@Kuitsi non ne avevo idea! Grazie per averlo condiviso! E se non si mantiene project.properties nel repository non è un grosso problema.Invece di importare il progetto, gli utenti devono semplicemente creare un nuovo progetto con l'origine esistente su eclipse e tale file verrà generato. So che non è l'opzione migliore ma potrebbe aiutarti nel caso in cui tu non abbia nient'altro! – caiocpricci2

0

Modifica: questa domanda non è più necessaria per il nostro progetto da quando ci siamo trasferiti da Eclipse al sistema di sviluppo Android Studio e Gradle. Anche Eclipse con Maven avrebbe dovuto funzionare, come suggerito da @bgs.

Il nostro approccio precedente:

Ancora alla ricerca di una migliore alternativa, ma finora abbiamo finito per tenere project.properties nella nostra repo. project.properties non viene sovrascritto se non ci sono modifiche ad esso durante la trazione. Suggeriamo anche nel nostro README che agli utenti di aggiungere questo

[alias] 
commit = commit -X project.properties 

alla loro file di configurazione .hg/hgrc per evitare che accidentalmente che impegnano i cambiamenti di tale file.

Questo metodo ha almeno uno svantaggio: quando si uniscono, è possibile che si verifichi un errore come questo abort: cannot partially commit a merge (do not specify files or patterns) anche quando si esegue l'unione con hg commit -m 'merge'. Se ciò accade, disabilita temporaneamente l'alias.