Proyecto Android que hace referencia al proyecto "normal" de java en eclipse desde la actualización de las herramientas sdk 17

Desde la última sdk android no puedo ejecutar mis aplicaciones Android desde eclipse ya que no pueden encontrar clases que tengo en otros proyectos eclipse, que son referencias a través de la ruta de construcción "normal".

Esto definitivamente ha funcionado antes . Y no hay errores de compilación en eclipse.

Podría ser que, ahora usted tiene que marcar esos proyectos como proyectos de la biblioteca de android en caso de que sean referenciados por un proyecto androide.

Editar: parece que esta es la razón por la que está roto: http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

Pero todavía tengo que averiguar cómo debería ahora hacer referencia a mis proyectos "normales" de Java para el proyecto de la aplicación de Android.

En el enlace @clamp que se proporciona, hay la siguiente oración:

Ahora, el contenedor también se rellenará con proyectos de Java que sean referenciados por Proyectos de biblioteca.

Esto significa que podemos usar un proyecto de biblioteca vacío como un proyecto de "pegamento" entre el proyecto android y el proyecto regular de eclipse. Sólo tienes que configurarlo de esta manera:

Android -> proyecto "pegamento" -> proyecto regular

Depende de

El proyecto de cola tiene que exportar el proyecto regular y tiene que ser marcado como biblioteca. En el proyecto android sólo se debe hacer referencia al proyecto de la biblioteca.

Ahora el uso de un proyecto regular de eclipse funciona de nuevo para mí con la mínima sobrecarga del proyecto "pegamento".

Desde la última actualización de las herramientas de compilación de eclipse, también tiene que marcar los proyectos referenciados en la pestaña 'Ordenar y exportar' de 'Java Build Path'. Esto fijó el mismo problema para mí. ¡Espero que ayude!

Como ya se mencionó, Android no compilará y utilizará directamente sus archivos de proyecto Java. En su lugar sólo se necesitan archivos de clase precompilados .

Aquí está mi solución, que prefiero porque no necesito un proyecto de "pegamento" solo para las bibliotecas de Android. La idea principal es proporcionar un JAR pre-construido a Android, mientras se sigue utilizando el código fuente de las bibliotecas mientras se trabaja en Eclipse:

  1. En primer lugar, asegúrese de que los proyectos de biblioteca se compilan utilizando Java 6. Java 7 no funcionará, Android ignorará silenciosamente esas bibliotecas. Compruebe tanto la configuración del espacio de trabajo (en Preferences -> Java -> Compiler ) como la configuración del proyecto individual. Elija 1.6 como nivel de cumplimiento del compilador.
  2. Haga clic derecho en su proyecto de Android -> Properties -> Java Build Path -> Projects . Agregue todos los proyectos de Java que desee utilizar en su proyecto de Android.
  3. Ahora, Eclipse conoce las clases (pero aún no la versión final de Android), por lo que los errores de compilación se resuelven y saltar a una clase conduce directamente al archivo de origen de su proyecto Java.
  4. Agregue un buildscript de hormigón en el directorio de su proyecto de Android. Este buildscript creará un JAR que contiene todos los archivos .class de tus proyectos en el subdirectorio libs (y este es el paso que permite a Android conocer tus archivos .class!). Vea a continuación el código.
  5. Ahora, y siempre que los proyectos de Java han cambiado, reconstruya el archivo JAR ejecutando el buildscript. Esto también puede ser automatizado, ver por ejemplo " Desea que un proyecto eclipse java ejecute los archivos de compilación de hormigas automáticamente "

Aquí está el código:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <project default="create_jar" name="Create Jar with classes from Java projects"> <target name="create_jar"> <jar destfile="libs/java-projects.jar"> <!-- "bin" is the class output folder --> <fileset dir="path/to/first/java/project/bin"/> <fileset dir="path/to/second/java/project/bin"/> <fileset dir="path/to/last/java/project/bin"/> </jar> </target> 

He añadido un constructor de ant proyecto que copia los archivos de clase del proyecto dependiente. El archivo ant se encuentra en el proyecto android y copia los archivos de clase del proyecto referenciado. Aquí está la hormiga:

 <?xml version="1.0" encoding="UTF-8"?> <project name="CommonsCopy" default="copy" basedir="."> <target name="copy"> <copy todir="bin/classes"> <fileset dir="../Commons/bin" includes="**/*.class"> </fileset> </copy> </target> </project> 

2 cosas para recordar:

  1. Encuentre una manera de copiar los archivos jar que utiliza el proyecto java referenciado o simplemente póngalos directamente en la carpeta libs de Android.
  2. El proyecto referenciado debe ser compilado con el nivel de cumplimiento 1.6.

Puede definir dos proyectos (uno de Android, uno de Java de vainilla) y hacer que uno se refiera a los archivos de origen del proyecto utilizando el comando mklink en Windows para crear un cruce de directorios o un vínculo de archivo duro. No conozco el equivalente de Linux, pero debe haber uno. Si edita un archivo de origen de un proyecto, entonces el otro proyecto estará fuera de sincronización y sólo tendrá que actualizarlo. De esta manera usted no tiene que meterse con jarras o el proceso de construcción de Eclipse.

  • Dimensionar una vista personalizada en función del tamaño de la pantalla
  • Mostrar el teclado automáticamente
  • Abrir código fuente desde la vista de depuración edita .class después de la actualización de Android R18
  • Validación de Camel case para String en android
  • Pantalla de flujo de android
  • Obtener bandera emoji por código de país
  • ¿Qué hace la referencia `android.accounts.Account.type`?
  • Compra en la aplicación de Android NullPointerException
  • Android y obtener una vista con id cast como una cadena
  • Recomendado Linux Distro para Android Development Workstation
  • Guardando una imagen grande en PNG
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.