studio permission permisos name internet intent descargar androidmanifest android android-activity android-manifest android-service android-library

permisos - uses permission android internet



Manifiesto de la biblioteca de Android vs. Manifiesto de la aplicaciĆ³n (3)

El uso de un proyecto de biblioteca significa que mi proyecto general tendrá dos manifiestos, uno para la biblioteca y otro para el proyecto de la aplicación "principal", y no tengo claro qué ocurre o si hay alguna redundancia.

El manifiesto del proyecto de la biblioteca no se usa actualmente.

Gradle para Android y, por lo tanto, Android Studio, admiten proyectos de biblioteca y AAR publicando un manifiesto. Esto puede incluir elementos como declaraciones de actividad, permisos o características requeridas o niveles mínimos compatibles de Android SDK.

Las reglas sobre cómo se fusionan los manifiestos de la biblioteca con el propio manifiesto de la aplicación, especialmente cuando se tienen en cuenta los tipos de compilación y los sabores de los productos, es un poco complejo .

Entonces, ¿dónde deberían declararse las declaraciones completas de estos componentes, incluidos los intentos, los filtros, etc.?

En el proyecto de host.

La biblioteca podría publicar esos componentes, y el proyecto de host de Android Studio puede eliminarlos si es necesario.

¿Van en el manifiesto para la biblioteca, o en el manifiesto para el paquete de la aplicación, haciendo referencia a las clases en la biblioteca (por ejemplo, android: name = "com.foo.mylibrary.MyService")?

El último.

En cualquiera (con Gradle para Android y Android Studio). En teoría, es más fácil para la biblioteca publicar los componentes, por lo que el autor de la aplicación no tiene que hacerlo. Personalmente, no soy un gran admirador de esto, ya que muchos desarrolladores terminarán enviando entradas de manifiesto innecesarias.

He leído preguntas similares aquí, pero todavía no estoy claro en un par de cosas. El uso de un proyecto de biblioteca significa que mi proyecto general tendrá dos manifiestos, uno para la biblioteca y otro para el proyecto de la aplicación "principal", y no tengo claro qué ocurre o si hay alguna redundancia.

Estoy desarrollando un widget de aplicación con versiones "lite" y "pago", así que tendré casi todo el código en un proyecto de biblioteca. Al ser un widget, la biblioteca tendrá al menos un receptor, un servicio, una actividad de configuración, más un par de otras actividades. Entonces, ¿dónde deberían declararse las declaraciones completas de estos componentes, incluidos los intentos, los filtros, etc.? ¿Van en el manifiesto para la biblioteca, o en el manifiesto para el paquete de la aplicación, haciendo referencia a las clases en la biblioteca (por ejemplo, android: name = "com.foo.mylibrary.MyService")?

Algunos ejemplos que he visto parecen declararlos en ambos manifiestos, pero sospecho que ponerlos en uno o en otro no es operativo.


A partir de ADT r20 Preview 3 ahora es posible fusionar manifiestos. Entonces, la configuración común ahora se puede poner en el manifiesto de la biblioteca. Consulte https://.com/a/10400355/262789 para obtener más información.

La versión 13 de Intellij IDEA es necesaria para manifestar el soporte de fusión ( manifestmerger.enabled=true ). También el sistema de compilación basado en Grados parece ser necesario para el soporte de Android Studio.


Cualquier elemento de android referenciado como actividades, receptores, servicios, etc. DEBE entrar en su manifiesto de aplicación o no serán reconocidos por el sistema operativo. Como habrás adivinado, el archivo de manifiesto de la biblioteca es prácticamente una implementación vacía

ACTUALIZAR

Como CommonsWare señala más arriba, las herramientas de compilación de Android ahora intentarán fusionar los distintos manifiestos en su nombre. Dejando la respuesta original para la posteridad