2011-02-18 21 views
21

Estoy desarrollando una biblioteca de Android SDK. En esta biblioteca, he declarado y usado algunas actividades. Ahora traté de incluir la biblioteca en una aplicación, pero me di cuenta de que debo declarar todas las actividades de la biblioteca en la aplicación. Esto es algo muy malo porque en la biblioteca he incluido muchas actividades y el desarrollador tiene que copiar todas las actividades en su propia aplicación. ¿Hay soluciones para esto?android library project and Activities

+2

¿qué quiere decir copiar las actividades a la otra aplicación? ¿Estás hablando del manifiesto? Si es así, Google dice que intenta agregar la fusión de manifiestos en el futuro, pero necesita copiar/pegar por ahora. Si no, lo estás haciendo mal. – schwiz

+0

@schwiz manifestmerger.enabled = true existe ahora, pero debemos forzar a los desarrolladores (que usan mi biblioteca en sus aplicaciones), a establecer min y destino SDK a nuestro sdk mínimo y objetivo! (fuente: http://stackoverflow.com/questions/10976635/using-the-new-manifestmerger-property-in-android#21397467) –

Respuesta

25

No, esta es una limitación conocida de las bibliotecas en este momento. Hay una gran cantidad de discusiones en la comunidad de desarrollo de Android de solucionar esto en el futuro, pero por ahora es una limitación de cómo lo hacen las bibliotecas.

Desde el doc

En el archivo de manifiesto del proyecto aplicación, debe agregar declaraciones de todos los componentes que la aplicación va a utilizar que se importado de un proyecto de biblioteca. Para ejemplo, debe declarar cualquier <activity>, <service>, <receiver>, <provider>, y así sucesivamente, así como <permission>, <uses-library> y elementos similares.

También, excelente respuesta here por Mark Murphy.

+0

Gracias por su respuesta .. Tal vez tengo que usar cuadros de diálogo en lugar de actividades. Esto podría evitar esta limitación. ¿Estás de acuerdo? – ets23

+0

(además: no necesito crear un contenedor) – ets23

+0

La única parte de su biblioteca que deberá estar en el proyecto consumidor es la declaración en el manifiesto de Android. No estoy seguro de lo que quiere decir con el uso de diálogos en lugar de actividades. –

21

Actualización 1: Al usar Gradle, la fusión de manifiesto se realiza ahora automáticamente. Más detalles sobre cómo funciona y cómo resolver los conflictos pueden ser encontrados here (gracias por la observación guy.gc)

Original post:

para actualizar este tema: combinación de auto es ahora posible. Solo debe agregar

manifestmerger.enabled=true 

a su project.properties. Using the new "manifestmerger" property in Android discute esto también.

Sé que este es un hilo viejo, pero me topé con él y quiero evitar que otros (incluidos) piensen que no es posible. Esta línea fue totalmente suficiente en mis proyectos para hacer uso de las actividades en la aplicación que consume la biblioteca.

+1

En realidad, la fusión de manifiesto se realiza automáticamente. http://developer.android.com/tools/building/manifest-merge.html Si es necesario, puede definir cómo se resuelven los conflictos –

+1

Gracias por el comentario @ guy.gc, actualizaré la respuesta –