In eclipse, impossibile fare riferimento a un progetto di libreria Android in un altro progetto Android


104

Mentre stavo scrivendo questa domanda sono riuscito a risolverlo, quindi ripeterlo qui a beneficio degli altri. Ecco il problema iniziale:

Ho creato un progetto di libreria molto semplice a cui voglio fare riferimento in un altro progetto. L'ho fatto in precedenza senza problemi, quindi non sono sicuro del motivo per cui non funziona questa volta. Io ho:

  1. Contrassegnato il progetto della libreria tramite le proprietà del progetto. Il default.propertiesfile ha questo set:android.library=true

  2. Nell'altro mio progetto aggiunto riferimento al mio progetto di libreria tramite le proprietà del progetto. Il default.propertiesfile ha il riferimento aggiunto come previsto, ad esandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. Il segno di spunta verde sul progetto della biblioteca di riferimento inizia con il verde e poi diventa una croce rossa.

Ciò implica che deve esserci qualcosa di sbagliato / mancante dal progetto della libreria ma non so cosa. Il mio progetto di libreria in questa occasione è MOLTO più semplice del precedente che ho creato.


Questa soluzione ha aiutato nel mio caso: stackoverflow.com/questions/9283040/… Spero che aiuti qualcuno
Abeer Sul

Risposte:


160

OK Ecco la soluzione che ho trovato quando stavo cercando il file default.properies del progetto di riferimento (non la libreria) nel mio file system. Sebbene il progetto di riferimento fosse nello stesso spazio di lavoro di eclipse del progetto di libreria, i file effettivi erano da qualche altra parte nel file system, cioè non erano nella stessa cartella principale del progetto di libreria. Non appena ho posizionato il progetto di riferimento nella stessa cartella fisica del progetto di libreria, è andato tutto bene.

Immagino che questo debba essere qualcosa a che fare con Android che usa formica sotto le copertine.

Modifica: il nome del progetto deve corrispondere al nome della cartella sul file system. Quello che vedi in Proprietà progetto-> Android-> Riferimento libreria è un percorso del file system relativo.


3
Vorrei anche aggiungere che i collegamenti simbolici non vanno bene per questo. Avevo tutti i miei progetti archiviati nella stessa cartella l'uno dell'altro in una posizione diversa (dove metto le cose di cui desidero eseguire il backup) e poi una serie di collegamenti simbolici all'interno della mia cartella dell'area di lavoro a queste cartelle. Quindi erano tutti nella stessa cartella l'uno dell'altro in entrambi i posti, tuttavia l'uso di collegamenti simbolici ha incasinato tutto. Una volta caricata la cartella reale come area di lavoro di base, è andato tutto bene.
Zulaxia

7
+1 Per aver articolato questo comportamento ORRIBILE della combo Eclipse / ADT. Per tua informazione, anche il posizionamento di entrambi i progetti nella stessa cartella fisica non aiuta se quella cartella si trova su una condivisione Samba . Ugrrr ...
an00b

20
A volte Eclipse rimuoverà il riferimento, riavvierà eclipse e lo aggiungerà di nuovo, ora dovrebbe funzionare.
Warpzit

Questo era un problema per i miei progetti che appartenevano e si trovavano nello stesso spazio di lavoro. Importato il progetto nella stessa area di lavoro della libreria e tutto ha funzionato bene. Grazie per la risposta.
Jayshil Dave

Verifica che l'area di lavoro e la libreria siano nella stessa posizione della cartella. Ho commesso l'errore di scaricare nuovamente ADT e ho creato un progetto nello spazio di lavoro C: \ users invece che nel mio spazio di lavoro effettivo. Inutile dire che controlla di nuovo che il tuo progetto E la tua libreria siano nella stessa directory di lavoro!
Garbit

11

Assicurati che entrambi i progetti siano presenti nello stesso spazio di lavoro. Per farlo, durante l'importazione dei progetti assicurati che la casella di controllo "copia progetto nello spazio di lavoro" sia selezionata.


1
Come posso utilizzare lo stesso progetto di libreria in un altro progetto. Se lo faccio, mostra il simbolo della croce di colore rosso .. @Karthik
Shylendra Madda

10

lo stesso problema si verificherà se il progetto di libreria si trova in una partizione diversa dall'area di lavoro corrente. Ho lo stesso problema solo ora. Il mio sorgente git è in C: e sposto il mio spazio di lavoro in D: e tutto inizia a collassare.


4
Se i progetti principale e di libreria si trovano su dischi diversi , sembra che Eclipse non possa risolvere il percorso di riferimento da assoluto a relativo, ed Eclipse non ne è contento (il segno di spunta verde si trasforma in una croce rossa).
Pang

ha funzionato anche per me. Ho sostituito il progetto di riferimento nella stessa unità (H :) e ora va bene
Tobia Zambon

4

Il modo più semplice per ottenere i percorsi dei percorsi della libreria corretti è utilizzare la GUI di Eclipse per aggiungere la libreria come mostrato nella seguente schermata e lasciare che Eclipse si occupi di inserire i percorsi relativi corretti in project.properties. È una configurazione comune che i tuoi progetti di libreria siano ospitati in directory molto diverse dai tuoi progetti principali che utilizzano la libreria. Questo metodo funzionerà se il "progetto libary" e il progetto che lo utilizza si trovano nello stesso "spazio di lavoro" di eclipse (non è necessario che si trovino nella stessa cartella principale): inserisci qui la descrizione dell'immagine


4
Il problema è perché la libreria e il progetto si trovano su unità / partizioni diverse ... vedere l'elenco dei bug sopra. Il tuo va bene perché il percorso della libreria mostra percorsi relativi invece di percorsi completi DOS ...
kenyee

3

Assicurati che il progetto della libreria sia contrassegnato come "È libreria" - fai clic con il pulsante destro del mouse sul progetto libreria - proprietà - Android - seleziona la casella di controllo "È libreria" - in project.properties del progetto libreria dovresti avere una nuova voce: "android .library = true. Ora aggiungilo al progetto che desideri come descritto nel post qui sotto (il post con immagine integrata - da Nilesh Pawar).


1
Questo ha funzionato bene per me. La parte confusa è che penso che la posizione di questa casella di controllo "È libreria". Non è intuitivo che questo stia effettivamente selezionando l'obiettivo della build corrente di app / libreria e non un interruttore di opzione per le librerie da includere.
EtienneSky


2

Ancora un'altra osservazione sulla stessa questione.

Per me i due progetti erano nella stessa cartella principale ed erano entrambi locali all'interno dell'area di lavoro. Anche allora il problema stava ancora accadendo.

Ho modificato il file "project.properties" e ho inserito il percorso assoluto (con barre '/' per separatore) del progetto della libreria. Salvata e chiusa. Quindi è andato alla finestra di dialogo delle proprietà del progetto, rimosso la libreria (che mostrava ancora l'icona della croce ma con percorso abs) e aggiunta di nuovo come al solito. Sorprendentemente il problema è stato risolto e il progetto viene compilato ed eseguito.

Questo è davvero strano e deve essere un bug con l'ADT. Sto usando ADT versione 20.0.2


+1. Ha affrontato questo problema cambiando librerie con gli stessi nomi. Sembra che eclipse (o ADT) provi a fare riferimento a quello vecchio e non riesce. Il riavvio di Eclipse aiuta. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

quando lo sviluppatore fa riferimento a Facebook oa qualsiasi altro progetto di libreria, prima pulisci il progetto da eclipse-> progetto-> progetto pulito. che vogliono consentire l'errore della croce rossa nella schermata di riferimento.


2

Per me, riavvio semplicemente eclipse e la libreria aggiunta funziona bene.

Voglio dire la prima volta che mostra segni rossi dopo aver aggiunto il progetto di libreria. Sebbene il progetto principale di eclipse e il progetto di libreria si trovino nella stessa cartella dell'area di lavoro e non ci siano file di risorse all'esterno della cartella del progetto.

Quindi, puoi provare con a riavviare la tua eclissi. Buona codifica ....


1

La soluzione per me era quella di

  1. Crea un nuovo spazio di lavoro
  2. Importa il Progetto Biblioteche in quell'area di lavoro
  3. Importa Il progetto desiderato in quell'area di lavoro
  4. Avere sia il progetto che la libreria proiettano la stessa versione del sistema operativo Android di destinazione
  5. Progetto di libreria di riferimento nel mio progetto

ha risolto il mio problema


Anche la creazione di un nuovo spazio di lavoro ha risolto il problema. Devi anche cancellare i progetti.
Omer Cansizoglu

1

ho avuto lo stesso problema quando ho provato a cambiare il mio spazio di lavoro, quindi questa è la mia soluzione:

  1. importare e copiare tutti i dati del progetto, incluso il progetto della libreria, nello spazio di lavoro
  2. eliminare il vecchio riferimento al progetto facendo clic con il pulsante destro del mouse sul progetto -> Proprietà -> Android -> Libreria e selezionare la libreria danneggiata (in modo che io la chiami) e scegliere Rimuovi
  3. pulire prima il progetto (per aggiornare le proprietà del progetto)
  4. vai su Proprietà progetto libreria -> Android -> Libreria e controlla la libreria se non fa clic su Applica, quindi su OK
  5. se il progetto della libreria è la libreria è già selezionata, prima deselezionala quindi Pulisci il progetto della libreria dopodiché fai di nuovo il passaggio 4
  6. vai al progetto in cui vuoi che si trovi la libreria, quindi fai clic con il pulsante destro del mouse sul progetto -> Proprietà -> Android -> Libreria, Aggiungi quindi scegli il progetto della libreria (dovrebbe essere lì) e fai clic su Applica, quindi su OK
  7. se ancora non appare, ripulisci il progetto ancora una volta e dovrebbe bastare


0

Quando dai un'occhiata al percorso di riferimento prima e dopo, proviene da "C: / workspace / mylib" e va a "../../mylib" quando viene copiato nella posizione corretta, piuttosto interessante.


0

Cordiali saluti,

Quello che ha funzionato per me è stato eliminare i progetti di "libreria" (i progetti effettivi) dal mio spazio di lavoro (senza eliminare i file) e quindi reimportarli utilizzando la procedura guidata (importa il progetto Android esistente dal codice sorgente).


Ha funzionato anche per me. Ho appena rimosso e reimportato i progetti (come 'progetto eclissi esistente')
Neromante

0

Grazie per aver postato la domanda. Ho avuto esattamente lo stesso problema durante l'integrazione di Facebook con la mia applicazione Android. Ho risolto il problema spostando il mio progetto di sviluppo sulla stessa unità di Windows in cui si trovava il progetto di libreria. In qualche modo Eclipse non è in grado di leggere correttamente la posizione del progetto di libreria dal file default.properties se si trova in un'unità diversa.


0

Simile al post di Sufi Khan, ho anche risolto questo problema con un riavvio. Il mio caso era diverso in quanto quando ho acceduto per la prima volta a Proprietà-> Android e ho aggiunto la libreria, ho ottenuto un bel segno di spunta verde. Quando ho chiuso la finestra di dialogo, Eclipse mostrava ancora errori di tipo classe non trovata. Quando ho controllato di nuovo le proprietà ho visto la X rossa. Ma la soluzione del signor Kahn (eliminare la libreria errata, riavviare Eclipse, aggiungere di nuovo la libreria) ha funzionato bene.

Sto usando la versione 0702 del bundle ADT (inizia con "cluster", fa rima con "duck").


0

Ho seguito la risposta accettata, ma dovevo anche assicurarmi che il mio file "project.properties" fosse leggibile.

Se il file è di sola lettura (archiviato nel controllo del codice sorgente), eclipse non lo modificherà. L'aggiunta del riferimento alla libreria avrà esito positivo, ma la modifica non verrà mantenuta dopo aver premuto OK.

Se la chiusura della finestra delle preferenze e la riapertura rimuove la libreria appena aggiunta, questa potrebbe essere la soluzione.


0

Nel caso in cui il progetto della libreria non venga ancora visualizzato, provare ad aggiungere il flag della libreria nelle proprietà del progetto della libreria

Aggiungi android.library = true

project.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library=true
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.