Servicio externo de Android desde una biblioteca (AAR, no Shared Service)

Estoy intentando crear una Biblioteca de Android que contenga un servicio sencillo. Por ejemplo:

public class BasicService extends Service { public BasicService() { Log.d("I", "work"); } @Override public IBinder onBind(Intent intent) { return null; } } 

Comienzo el servicio de la siguiente manera:

 startService(new Intent(this, BasicService.class)); 

El servicio se compila en un archivo AAR y después de añadir que a una aplicación obtengo un ClassNotFoundException.

  Caused by: java.lang.ClassNotFoundException: Didn't find class "nl.company.example.library.Services.BasicService" on path: DexPathList[[zip file "/data/app/nl.example.aartest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 

No necesito vincular un servicio ya que la aplicación no tiene que comunicarse con el servicio. Tampoco necesito una interfaz de ayuda, ya que no quiero compartir el servicio con otras aplicaciones. Sé que necesito declarar el servicio en el lado de la aplicación (no la biblioteca) así que hice eso la manera siguiente:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nl.company.example.exampleApp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> <application android:settings... > <service android:name="nl.company.example.library.Services.BasicService" android:enabled="true" android:exported="true" /> </application> </manifest> 

Este es el manifiesto de mi biblioteca:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nl.company.example.library" > <application/> </manifest> 

He hecho algunas investigaciones en Stackoverflow / Google y no pude encontrar una respuesta a mi problema.

Servicio de Android en la biblioteca

También probamos diferentes maneras de comenzar el servicio (en acción, etc.) pero no es bueno hasta ahora.

Toda la ayuda es bienvenida y mis disculpas si hice una pregunta duplicada mal.

El BaseService implementaba una interfaz de otra biblioteca que no estaba empaquetada con el archivo aar . Esto provocó que la aplicación se bloquee inmediatamente después de iniciar un dispositivo, ya que no pudo resolver la dependencia.

 public class BaseService implements OtherLibraryInterface { ... } 

En lugar de lanzar un ClassNotFoundException para el OtherLibraryInterface , Android lanzaría exactamente esa excepción para el BaseService . Lo cual es muy confuso y nos lleva a creer que hay algo mal con el Servicio.

Agregar la dependencia OtherLibrary explícitamente como una dependencia a la aplicación principal resolvió este problema.

  • El servicio de Android que se estaba ejecutando cuando se apagó el teléfono se inicia automáticamente cuando se inicia el teléfono
  • Error "No se puede iniciar el servicio de intención" al iniciar el servicio desde una actividad en Android
  • Android bindservice
  • ¿Puedo recibir emisiones de iOS como Android?
  • Singleton se destruye
  • Pop-up cuadro de diálogo de alerta de servicio en android
  • Vinculación / desvinculación a un servicio en una aplicación
  • Android Silent Push
  • Mantener viva Servicio de Intención después de que la aplicación es asesinada
  • Pasar parámetros a GcmTaskService
  • Hilos de aplicación vs Hilos de servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.