Cómo crear una biblioteca compartida en Android

Tengo una biblioteca, digamos LIB, que expone las muy pocas API y clases para su uso por los desarrolladores de aplicaciones.

Si hay más de una aplicación que utiliza LIB en el teléfono, sólo quiero que se cree y se ejecute una instancia de LIB. Es algo similar a lo que los servicios de plataforma Android como LocationManager, SensorManager, PackageManager, etc.

En concreto, hay dos problemas que deben abordarse:

  1. ¿Cómo asegurarse de que sólo hay una instancia de LIB?
  2. Cómo implementar LIB (separar apk / empaquetado con cada aplicación que lo utilice, pero sólo uno de ellos crea la instancia de biblioteca en cualquier momento), etc.
  3. ¿Hay alguna otra forma (aparte de servicio / AIDL) para asegurarse de que sólo una instancia de LIB se ejecuta independientemente del número de aplicaciones que lo utilizan.

Bueno, después de pasar tiempo en esto, aquí las respuestas a mis preguntas: –

P. ¿Cómo asegurarse de que sólo hay una instancia de LIB? – Sólo mediante la exposición de la funcionalidad LIB a través de un servicio.

P. Cómo implementar LIB (apk separado / incluido con cada aplicación que lo usa, pero sólo uno de ellos creando la instancia de la biblioteca en cualquier punto del tiempo), etc. –

Para el servicio, habría un apk separado (o probablemente incluido con una de la aplicación cliente de servicio),

P. ¿Hay alguna otra forma (que no sea servicio / AIDL) para asegurarse de que sólo una instancia de LIB se ejecuta independientemente del número de aplicaciones que lo utilizan.

Sí, eso sería como LIB se incluye con cada aplicación. Pero eso necesitaría un protocolo de comunicación fuerte entre las bibliotecas que utilizan intentos, de modo que uno de ellos actúe como maestro, y comparta los datos con las otras bibliotecas. Efectivamente, el LIB empacado dentro de un apk inicia su motor, sólo si no hay ninguna otra instancia en ejecución. Una forma de lograr esto es usar transmisiones y mantener la seguridad, los permisos pueden estar asociados con las acciones de difusión involucradas.

Con el proyecto de biblioteca, tiene una inclusión estática de las clases y recursos del proyecto de biblioteca. Nada funcionará que no tiene que ser.

Eso puede aumentar el tamaño de tu aplicación, pero técnicas como ProGuard pueden eliminar las clases no utilizadas de tu .apk final.

Si quieres que tu biblioteca funcione independientemente de otras aplicaciones, entonces es un servicio y debes considerar cuál debería ser el ciclo de vida (por ejemplo, iniciado por la aplicación, iniciado al arrancar, etc.).

Si su lib contiene actividades para ejecutar, el sistema operativo Android ya se encarga de esto – la otra aplicación sólo crea una intención y llama a su actividad. Así funciona Android: las aplicaciones pueden compartir datos y flujos de trabajo entre sí a la perfección utilizando intentos.

Si hay servicios, es lo mismo: la aplicación llamante interactúa con un servicio en ejecución o activa un servicio para iniciarlo.

Los proyectos de biblioteca manejan muchos problemas para la mayoría de los desarrolladores, pero si tiene un paquete de código compartido realmente grande, desee instalarlo como una aplicación independiente.

Por ejemplo, Google Maps es una aplicación independiente, pero otras aplicaciones pueden activar la intención de cargar una actividad desde esa aplicación. Lo mismo con la mensajería y otras actividades que pueden ser manejadas por diferentes aplicaciones.

  • Borde en el lado izquierdo del botón solamente
  • Honeycomb (3.1) adjustResize ya no funciona?
  • ¿Cómo maneja Android Volley temporalmente la pérdida de conexión de red?
  • ¿Tengo que usar el acelerómetro en Android para que mis fotos se orienten correctamente?
  • Typed Array debe ser reciclado después de su uso con #recycle ()
  • Enlace compartido en WhatsApp desde el sitio web móvil (no en la aplicación) para Android
  • ¿Cuánto esfuerzo debo poner en mi seguridad para Android en la facturación de aplicaciones?
  • Escala alrededor de un punto específico en el sistema de coordenadas 2d
  • ¿Estoy invalidando toda la pantalla en cada llamada?
  • OpenCV warpPerspective rendimiento lento
  • Atajo de hardware para tomar una captura de pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.