2009-12-01 24 views
20

¿Es posible crear una biblioteca personalizada en Android (que tenga sus propios recursos de diseño) para su uso en varias aplicaciones de Android?Android: ¿es posible crear una biblioteca personalizada para usar en varias aplicaciones?

  • he creado un archivo normal * .jar pero cuando intenté crear/estilo de mis puntos de vista de forma dinámica la mayor parte de las propiedades no funcionan. Incluso haciendo referencia a estilos simples del archivo android.jar como android.attr.listSeparatorTextViewStyle no funcionó.

  • Creé un proyecto de Android sin ninguna actividad, con sus propios archivos de recursos y luego hice referencia a este proyecto desde otro proyecto de Android para utilizarlo en su ruta de compilación. Todo parece funcionar bien, pero el emulador sigue fallando (sin un mensaje de error significativo en el LogCat) cuando intento ejecutar el proyecto.

¿Falta algo?

Respuesta

13

Bueno, creo que hay una manera de hacerlo (aunque yo no lo intenté), pero requiere que los usuarios de tu biblioteca tengan que crear sus APK manualmente a través del aapt.

El problema es este: el JAR que está exportando contiene el archivo de clase R que contiene los ID de recursos de su biblioteca. Por lo tanto, cualquier aplicación puede acceder a estos ID simplemente vinculando su JAR. Sin embargo, eso no es suficiente, porque de manera predeterminada, solo los recursos en la carpeta/res de la aplicación se incluyen con el APK. Por lo tanto, debe crear el APK usted mismo usando aapt, diciéndole que también incluya los recursos de su biblioteca. Consulte la ayuda de la herramienta aapt para obtener más información.

Dado que esto implica que los usuarios de su biblioteca tienen que introducir un proceso de compilación manual (o al menos modificarlo), la experiencia es mala.

+3

Todos, publiqué esto antes de que los proyectos de la Biblioteca Android estuvieran disponibles. Vea la respuesta de Sachin a continuación sobre cómo se hace hoy. – Matthias

5

¿Es posible crear una biblioteca personalizada en Android (que tiene sus propios recursos de diseño) para su uso en diversas aplicaciones androide?

No. Los JAR no pueden tener recursos. Puede compartir el código de esta manera, pero los recursos deben residir en las aplicaciones que reutilizan los JAR.

Incluso referencia a los estilos simples de el archivo android.jar como android.attr.listSeparatorTextViewStyle no funcionaba.

Asegúrese de estar vinculando su JAR contra android.jar. Puede ver muchos ejemplos de esto en los componentes de CWAC en mi github page.

+0

Ya no es el caso con las herramientas de construcción más nuevas. – greg7gkb

+3

@ greg7gkb: Sí, todavía es el caso, a partir de R19, la herramienta de compilación actual. Los JAR todavía no pueden tener recursos. * Los proyectos de biblioteca de Android * pueden tener recursos. En la actualidad, aunque los JAR se crean internamente en función de esos proyectos de biblioteca durante el proceso de compilación, esos JAR no se pueden usar independientemente del proyecto de la biblioteca. Esta función aún está en desarrollo: una vez que esté completa, podremos crear archivos JAR a partir de proyectos de la biblioteca de Android y distribuir esos archivos JAR sin el proyecto de biblioteca en sí. Esto probablemente no está en el R20, pero con suerte aparecerá más tarde en 2012. – CommonsWare

+1

Mi error, gracias por las correcciones. – greg7gkb

17

Puede llegar tarde para responder, pero encontré esto que es interesante. Setting up a Library Project

proyecto de biblioteca de un androide es un proyecto de desarrollo en la que pueda compartida código fuente de Android y recursos. Otros proyectos de aplicaciones de Android pueden hacer referencia al proyecto de la biblioteca y, al tiempo de compilación, incluir sus fuentes compiladas en sus archivos .apk. Múltiples proyectos de aplicación pueden hacer referencia al mismo proyecto de biblioteca y cualquier proyecto de aplicación puede hacer referencia a proyectos de biblioteca múltiple.

Si tiene el código fuente y los recursos que son comunes a múltiples proyectos de aplicación, puede mover a un proyecto de biblioteca para que es más fácil de mantener en todo aplicaciones y versiones. Aquí están algunos escenarios comunes en los que se podría hacer uso de proyectos de biblioteca:

0

¿Esto sigue siendo cierto con R21? Puedo exportar un proyecto de biblioteca en un archivo jar y usarlo en otros proyectos de clientes con éxito, tanto en cuanto a los códigos como a los archivos de activos.

todavía http://developer.android.com/tools/projects/index.html todavía tiene la siguiente declaración que no parece verdad hoy:

No se puede exportar un proyecto de biblioteca a un archivo JAR Una biblioteca no se puede distribuye como un archivo binario (como un archivo JAR) . Esto se agregará en una versión futura de las Herramientas de SDK.

Cuestiones relacionadas