¿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.
- Java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo {...}: java.lang.ClassNotFoundException: No encontró la clase
- Anotaciones de importación dando error en limpio
- Android 4.0.4 no aparece en mi Administrador de SDK de Android
- Instalar el complemento ADT en Eclipse
- Falta de R.java después de actualizar ADT a 22.0.1
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 …
- Android / Javadoc de Java faltan después de actualizar el SDK de Android
- Android - Moto G móvil no se muestra en los dispositivos Lista de Eclipse
- Cambiar textSize con diferentes idiomas
- Diffrences de android apk exportado por eclipse y android studio
- El mismo almacén de claves pero diferentes huellas dactilares
- Diferentes idiomas en la vista de texto en Android
- No se puede iniciar el emulador de Android: "No se puede cargar la VM desde una instantánea"
- Android: El control del emulador está deshabilitado en la perspectiva de DDMS
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.
- ¿Cuál es la contraparte de iOS 'QLPreviewController o UIDocumentInteractionController en Android?
- Android crea un elemento de menú de desbordamiento personalizado