¿Qué tan inteligente es Eclipse / ADT cuando se trata de Android Library Projects?

Por lo tanto, tengo un puñado de "Utility" clases de estilo en algunos de mis proyectos. Tengo curiosidad si puedo moverlos a un proyecto de biblioteca de Android que contenga la totalidad o la mayor parte de mi código de pegado específico no relacionado con la aplicación (envolturas e interfaces, principalmente).

Entonces, mi pregunta es qué sucede con los archivos que no necesito en esa biblioteca. Sé que los proyectos de la Biblioteca Android básicamente simplemente copian su código en el otro proyecto, así que si digo que usamos el 25% del código en mi biblioteca de "propósito general", mi aplicación contendrá realmente el bytecode para todo el 100% Hasta abajo sólo las cosas que necesito.

Tuve algunos problemas con las clases no utilizadas en Proguard en el pasado, así que estoy sólo una vez mordido, dos veces tímido con el ADT ahora …

Desafortunadamente, todos sus proyectos crecerán cuando la biblioteca esté creciendo – incluso si la mayoría del contenido de esa biblioteca no se utiliza. Lo probé creando una aplicación A y una biblioteca L. Si L es una biblioteca utilizada en A, el archivo classes.dex (y por lo tanto el archivo A.apk) crece si añado más clases, aunque no sean usado.

Para resumir: Ahora crearía una biblioteca básica para ciertas cosas que son pequeñas y que pueden ser utilizadas por muchos proyectos, y crear una nueva biblioteca para cada nuevo componente que va a ser más grande y sólo es utilizado por algunos proyectos. Un buen candidato para una nueva biblioteca sería un nuevo componente de interfaz de usuario con múltiples imágenes definidas en los recursos. Un buen candidato para la biblioteca base son los métodos comúnmente utilizados y cosas como cachés de archivos, por ejemplo. El código compilado se comprime bastante para Dalvik, que se puede ver aquí. (Toda la presentación es realmente divertido de ver 🙂

Editar: Si ProGuard está activado, también eliminará el código no utilizado para usted. El proguard.cfg predeterminado es suficiente. No se ejecutará en la depuración (predeterminada) construida, pero cuando se compila el .apk final. Así que en realidad es posible!

He utilizado 3 proyectos de la biblioteca de nivel de profundidad de Android con éxito, aunque es una especie de dolor. El caso de uso principal es cuando hay un conjunto de recursos y clases que desea compartir en varios proyectos. Como uso un sistema de control de versiones, preferiría no usar enlaces simbólicos.

Tenga en cuenta que los proyectos de la Biblioteca Android también sufren mucho cuando se trata de recursos. ADT reconstruirá R.java una vez para cada biblioteca y cada R.java contendrá una copia de todos los identificadores de recursos de todas las bibliotecas. El problema central aquí es que los recursos se regeneran para todo el proyecto como un todo, y no hay manera de "construir un tarro" para una dependencia como se esperaría con las "bibliotecas" normales. Intentamos integrarnos con OpenFeint, y tuvimos todo tipo de infiernos tratando con bibliotecas y dependencias. Creo que acabamos fusionando todos los archivos fuente y recursos OpenFeint en nuestro propio proyecto y abandonando el proyecto "Library" ya que ofrecía poco valor.

Los proyectos de la Biblioteca de Android son una forma torpe de compartir código entre proyectos y tienen una serie de inconvenientes. He descubierto que todo lo logrado con un proyecto de biblioteca también se puede lograr con enlaces simbólicos (fuente de enlaces simbólicos en dos proyectos). Todavía tengo que encontrar un usecase donde un proyecto de la Biblioteca de Android ofrece algo que no fue fácil de replicar con otros medios menos frágiles.

  • ¿Debo preocuparme con el mensaje DDMS en el área de la consola de Eclipse?
  • Android.App.Activity - el paquete no existe
  • Problemas de Android con eclipse
  • ¿Cómo puedo usar adb para desinstalar un APK de varios dispositivos conectados?
  • Nivel de API de cambio de Android de Eclipse
  • Cómo crear un nuevo diseño para un proyecto de Android (con Eclipse)
  • Mostrar el widget de brindis debajo de una vista
  • No se puede cambiar completamente el esquema de color del tema de Eclipse ADT
  • Cómo hacer aplicaciones Android de bajo tamaño?
  • "Actualización de la biblioteca de Android" la tarea eclipse bloqueó aleatoriamente mi eclipse al iniciar
  • cómo escribir a la consola de android utilizando eclipse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.