2010-05-20 10 views
5

Come parte dell'applicazione Android che sto sviluppando in eclissi, ho bisogno di combinare due pacchetti di diversi progetti in un singolo progetto. Ho provato a copiare i file nel pacchetto del secondo progetto nella cartella src della prima cartella e ho copiato altri file necessari per il secondo pacchetto nella cartella res del primo progetto.Combinazione di pacchetti da diversi progetti in un singolo progetto in eclissi

Ma i file Java generati automaticamente i.e R.java non vengono aggiornati sulla copia. Ho provato a fare clic destro sul progetto e facendo clic su Strumenti Android -> Correggi proprietà del progetto. Ma nulla è cambiato.

Qualsiasi suggerimento su ciò che sto facendo male sarebbe molto apprezzato.

risposta

4

avrei preferito aggiungere una seconda directory di origine attraverso un linked folder.
(Soprattutto perché now support relative path (3,5), come la seguente immagine illustra (3.6 solo)

alt text http://img411.imageshack.us/img411/1299/dynamicpathvariables.png)


Un'altra soluzione è semplicemente di aggiungere il secondo progetto nelle "dipendenze di progetto" del primo.

alt text http://img24.imageshack.us/img24/9511/eclipsebuildpath.png

+0

Quindi è impossibile renderlo un singolo progetto, suppongo .. – primpap

+0

@primal: è possibile creare un singolo progetto, facendo riferimento alla cartella 'src' degli altri due progetti tramite la cartella collegata. Ciò significa ricreare tutte le giuste impostazioni (classpath, dipendenze della libreria, ...). – VonC

-1

Non dovrebbe essere necessario ricorrere a importare o progetti di riferimenti incrociati.

Per quanto ne so, il file R.java viene generato dai file XML in res.

In particolare, viene creato in base all '"id" nei layout e nel "nome" nel file strings.xml. (Ci sono probabilmente altre cose che lo fanno, ma questo è quello che so).

Forse, quando si copiano i file, i propri ID non sono formattati con il segno "+" che incoraggia i valori da creare se non esistono già.

Ad esempio, un TextView in un layout conterrebbe:

<TextView 
    android:id="@+id/author" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
/> 

La più v'è cruciale per nuova creazione di valori.

Può anche aiutare a mettere una modifica di base in un file xml, salvarlo, quindi annullare la modifica e salvare di nuovo. Il salvataggio può attivare il plug-in Eclipse per rigenerare il file R.java.

1

Mi sono imbattuto in problemi con il metodo VonC che produce forzatamente noclassdeffounderror in fase di esecuzione poiché il riferimento al progetto esterno non rende la classe disponibile in fase di esecuzione. Forse non lo stavo facendo correttamente, ma ho trovato una soluzione diversa da condividere:

Inserisci entrambi i progetti che è necessario combinare nello stesso spazio di lavoro e aprire entrambi. Impostare un progetto come libreria e fare riferimento alla libreria nell'altro progetto "principale", come mostrato in: http://developer.android.com/guide/developing/projects/projects-eclipse.html

Non dimenticare di dichiarare qualsiasi applicazione utilizzata dal progetto di libreria nel manifest principale del progetto.

Problemi correlati