En eclipse, no se puede hacer referencia a un proyecto de biblioteca de Android en otro proyecto de Android


104

Mientras escribía esta pregunta logré resolverla, así que repítala aquí para beneficio de los demás. Aquí está el problema inicial:

He creado un proyecto de biblioteca muy simple al que quiero hacer referencia en otro proyecto. He hecho esto anteriormente sin problemas, así que no estoy seguro de por qué no funciona esta vez. Yo tengo:

  1. Marcó el proyecto de la biblioteca a través de las propiedades del proyecto. El default.propertiesarchivo tiene este conjunto:android.library=true

  2. En mi otro proyecto, agregué una referencia a mi proyecto de biblioteca a través de las propiedades del proyecto. El default.propertiesarchivo tiene la referencia agregada como se esperaba, es decirandroid.library.reference.1=K:/android_test_ws/applicationRegistrar

  3. La marca verde contra el proyecto de biblioteca al que se hace referencia comienza en verde y luego cambia a una cruz roja.

Esto implica que debe haber algo mal / faltante en el proyecto de la biblioteca, pero no sé qué. Mi proyecto de biblioteca en esta ocasión es MUCHO más simple que el anterior que creé.


Esta solución ayudó en mi caso: stackoverflow.com/questions/9283040/… Espero que ayude a alguien
Abeer Sul

Respuestas:


160

OK Aquí está la solución que encontré cuando estaba buscando el archivo default.properies del proyecto de referencia (no la biblioteca) en mi sistema de archivos. Aunque el proyecto de referencia estaba en el mismo espacio de trabajo de eclipse que el proyecto de la biblioteca, los archivos reales estaban en otro lugar del sistema de archivos, es decir, no estaban en la misma carpeta principal del proyecto de la biblioteca. Tan pronto como coloqué el proyecto de referencia en la misma carpeta física que el proyecto de la biblioteca, todo salió bien.

Supongo que esto debe tener algo que ver con Android usando hormiga debajo de las sábanas.

Editar: el nombre del proyecto debe coincidir con el nombre de la carpeta en el sistema de archivos. Lo que está viendo en Propiedades del proyecto-> Android-> Referencia de biblioteca es una ruta relativa del sistema de archivos.


3
También quiero agregar que los enlaces simbólicos no están bien para esto. Tenía todos mis proyectos almacenados en la misma carpeta entre sí en una ubicación diferente (donde coloco las cosas que quiero respaldar) y luego un montón de enlaces simbólicos dentro de la carpeta de mi espacio de trabajo a estas carpetas. Así que estaban todos en la misma carpeta en ambos lugares, sin embargo, el uso de enlaces simbólicos lo estropeó todo. Una vez que cargué la carpeta real como mi espacio de trabajo base, todo estuvo bien.
Zulaxia

7
+1 Por articular este HORRIBLE comportamiento del combo Eclipse / ADT. Solo para su información, incluso colocar ambos proyectos en la misma carpeta física no ayuda si esa carpeta está en un recurso compartido de Samba . Ugrrr ...
an00b

20
A veces, Eclipse eliminará la referencia, reiniciará eclipse y lo agregará nuevamente, ahora debería funcionar.
Warpzit

Este fue un problema para mis proyectos pertenecientes y ubicados en el mismo espacio de trabajo. Importé el proyecto en el mismo espacio de trabajo que la biblioteca y todo funcionó bien. Gracias por la respuesta.
Jayshil Dave

Verifique que su espacio de trabajo y biblioteca estén en la misma ubicación de carpeta. Cometí el error de volver a descargar ADT y creé un proyecto en el espacio de trabajo C: \ users en lugar de mi espacio de trabajo real. No hace falta decir que compruebe nuevamente que su proyecto Y su biblioteca se encuentran en el mismo directorio de trabajo.
Garbit

11

Asegúrese de que ambos proyectos estén presentes en el mismo espacio de trabajo. Para hacerlo, al importar los proyectos, asegúrese de que la casilla de verificación "copiar el proyecto en el espacio de trabajo" esté marcada.


1
¿Cómo puedo usar el mismo proyecto de biblioteca para otro proyecto? Si lo hago, muestra el símbolo de la cruz de color rojo .. @Karthik
Shylendra Madda

10

el mismo problema ocurrirá si su proyecto de biblioteca está en una partición diferente de su espacio de trabajo actual. Tengo el mismo problema ahora. Mi fuente de git está en C: y simplemente muevo mi espacio de trabajo a D: y todo comienza a colapsar.


4
Si los proyectos principal y de biblioteca están en unidades diferentes , parece que Eclipse no puede resolver la ruta de referencia de absoluta a relativa, y Eclipse no está contento con eso (la marca verde se convierte en una cruz roja).
Pang

funcionó para mí también. Reemplacé el proyecto al que se hace referencia en la misma unidad (H :) y ahora está bien
Tobia Zambon

4

La forma más sencilla de corregir las rutas de las rutas de la biblioteca es usar la GUI de Eclipse para agregar la biblioteca como se muestra en la siguiente captura de pantalla y dejar que Eclipse se encargue de poner las rutas relativas correctas en project.properties. Es una configuración común tener los proyectos de su biblioteca alojados en directorios muy diferentes a los proyectos principales que usan la biblioteca. Este método funcionará si el "proyecto de la biblioteca" y el proyecto que lo usa están en el mismo "espacio de trabajo" de eclipse (no es necesario que estén en la misma carpeta principal): ingrese la descripción de la imagen aquí


4
El problema es porque la biblioteca y el proyecto están en diferentes unidades / particiones ... vea la lista de errores arriba. La suya está bien porque la ruta de su biblioteca muestra rutas relativas en lugar de rutas completas de DOS ...
kenyee

3

Asegúrese de que el proyecto de la biblioteca esté marcado como "Es biblioteca" - haga clic con el botón derecho en el proyecto de biblioteca - propiedades - Android - marque la casilla de verificación "Es biblioteca" - en project.properties del proyecto de biblioteca debe tener una nueva entrada: "android .library = true. Ahora agréguelo al proyecto que desee como se describe en la publicación a continuación (la publicación con la imagen integrada, de Nilesh Pawar).


1
Esto funcionó bien para mí. La parte confusa es que creo que la ubicación de esta casilla de verificación 'Es biblioteca'. No es intuitivo que esto realmente esté seleccionando el destino de la compilación actual de la aplicación / biblioteca y no un cambio de opción para que se incluyan las bibliotecas.
EtienneSky


2

Otra observación más sobre el mismo tema.

Para mí, los dos proyectos estaban en la misma carpeta principal y ambos eran locales dentro del espacio de trabajo. Incluso entonces, el problema seguía sucediendo.

Luego edité el archivo "project.properties" y puse la ruta absoluta (con barras diagonales '/' para el separador) del proyecto de la biblioteca. Guardado y cerrado. Luego fue al diálogo de propiedades del proyecto, eliminó la biblioteca (que todavía mostraba el ícono de la cruz pero con la ruta abs) y la agregó nuevamente como de costumbre. Sorprendentemente, el problema se resuelve y el proyecto se compila y se ejecuta.

Esto es realmente extraño y debe ser un error del ADT. Estoy usando ADT versión 20.0.2


+1. Enfrenté este problema al cambiar bibliotecas con los mismos nombres. Parece eclipse (o ADT) intentando hacer referencia al anterior y falla. El reinicio de Eclipse ayuda. (Ubuntu 12.04, Eclipse Indigo, ADT 21.0.0)
Luten

2

cuando el desarrollador hace referencia a Facebook o cualquier otro proyecto de biblioteca, primero limpie el proyecto de eclipse-> proyecto-> proyecto limpio. que quieran permitir el error de cruz roja en la pantalla de referencia.


2

Para mí, simplemente reinicio el eclipse y la biblioteca agregada funciona bien.

Me refiero a la primera vez que muestra marcas rojas después de agregar el proyecto de la biblioteca. Aunque el proyecto principal de eclipse y el proyecto de la biblioteca están en la misma carpeta del espacio de trabajo y no hay archivos de recursos fuera de la carpeta del proyecto.

Entonces, puedes intentar reiniciar tu eclipse. Codificación feliz ....


1

La solución para mí fue

  1. Crea un nuevo espacio de trabajo
  2. Importar proyecto de biblioteca en ese espacio de trabajo
  3. Importar el proyecto deseado en ese espacio de trabajo
  4. Tener tanto el proyecto como el proyecto de biblioteca con la misma versión del sistema operativo Android de destino
  5. Proyecto de biblioteca de referencia en mi proyecto

resolvió mi problema


La creación de un nuevo espacio de trabajo también resolvió el problema. También necesita borrar los proyectos.
Omer Cansizoglu

1

tuve el mismo problema allí cuando trato de cambiar mi espacio de trabajo, así que esta es mi solución:

  1. importar y copiar todos los datos del proyecto, incluido el proyecto de la biblioteca en el espacio de trabajo
  2. elimine la referencia del proyecto anterior haciendo clic con el botón derecho en el proyecto -> Propiedades -> Android -> Biblioteca, y seleccione la biblioteca dañada (para que así la llame) y elija Eliminar
  3. proyecto limpio primero (para actualizar las propiedades de su proyecto)
  4. vaya a Propiedades del proyecto de la biblioteca -> Android -> Biblioteca y verifique la biblioteca si no lo hace, haga clic en Aplicar y luego en Aceptar
  5. Si el proyecto de la biblioteca ya está marcado, primero desmarque y luego Limpie el proyecto de la biblioteca, luego haga el Paso 4 nuevamente
  6. vaya al proyecto en el que desea que esté la biblioteca, luego haga clic con el botón derecho en el proyecto -> Propiedades -> Android -> Biblioteca, Agregar, luego elija el proyecto de biblioteca (debería estar allí) y haga clic en Aplicar y luego en Aceptar
  7. si aún no parece limpiar el proyecto una vez más y eso debería ser suficiente


0

Cuando echas un vistazo a la ruta de referencia antes y después, viene de, por ejemplo, "C: / workspace / mylib" y va a "../../mylib" cuando se copia en la ubicación correcta, bastante interesante.


0

FYI,

Lo que funcionó para mí fue eliminar los proyectos de la 'biblioteca' (los proyectos reales) de mi espacio de trabajo (sin eliminar los archivos) y luego volver a importarlos usando el asistente (importar el proyecto de Android existente desde el código fuente).


También funcionó para mí. Acabo de eliminar y reimportar los proyectos (como 'proyecto de eclipse existente')
Neromancer

0

Gracias por publicar la pregunta. Tuve exactamente el mismo problema al integrar Facebook con mi aplicación de Android. Solucioné el problema moviendo mi proyecto de desarrollo a la misma unidad de Windows en la que se encontraba el proyecto de la biblioteca. De alguna manera, Eclipse no puede leer la ubicación del proyecto de la biblioteca correctamente desde el archivo default.properties si está en una unidad diferente.


0

Al igual que en la publicación de Sufi Khan, también resolví este problema con un reinicio. Mi caso difería en que cuando accedí por primera vez a Propiedades-> Android y agregué la biblioteca, obtuve una hermosa marca de verificación verde. Cuando cerré el cuadro de diálogo, Eclipse todavía mostraba errores de tipo de clase no encontrada. Cuando revisé las propiedades nuevamente, vi la X roja. Pero la solución del Sr. Kahn (eliminar la biblioteca incorrecta, reiniciar Eclipse, agregar la biblioteca nuevamente) funcionó bien.

Estoy usando la versión 0702 del paquete ADT (comienza con "cluster", rima con "duck").


0

Seguí la respuesta aceptada, pero también tuve que asegurarme de que mi archivo "project.properties" fuera legible.

Si el archivo es de solo lectura (registrado en el control de código fuente), eclipse no lo editará. La adición de la referencia de la biblioteca se realizará correctamente, pero el cambio no se mantendrá después de hacer clic en Aceptar.

Si cerrar la ventana de preferencias y volver a abrirla elimina la biblioteca que acaba de agregar, esta puede ser su solución.


0

En caso de que su proyecto de biblioteca aún no aparezca, intente agregar la marca de biblioteca en las propiedades de su proyecto de biblioteca

Agregar 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.