2012-09-10 21 views
10

Estoy intentando iniciar el servicio desde adb shell. Ya hay pregunta similar: How to start and stop android service from a adb shell? Sin embargo, cuando comienzo servicio con:Android adb shell am startservice: Error no encontrado

adb shell am startservice com.mypackage/com.mypackage.service.MyService 

recibo este mensaje:

Starting service: Intent { act=android.intent.action.VIEW dat=com.mypackage/com.mypackage.service.MyService } 
Error: Not found; no service started. 

declaro servicio en AndroidManifest.xml:

<application> 
    ... 
    <service 
    android:name="com.mypackage.service.MyService" 
    android:label="@string/local_service_label" 
    android:icon="@drawable/ic_launcher"> 
    </service> 
</application> 

¿Tienes alguna idea de cómo resolver esto? ¡Gracias!

Respuesta

12
adb shell am startservice -n com.mypackage/.service.MyService 

-n añade 'LINE_NO:' prefijo

+1

Un solo comando puede responder la pregunta, pero sería útil explicar lo que hace '-n'. También es posible que desee sangrar cualquier código en 4 espacios. – ronalchn

+1

listas de ayuda "am startservice" [-n ] (no se relaciona con los números de línea) – dricket

3

Considérese el siguiente ejemplo

<application android:label="@string/app_name" 
    android:icon="@drawable/ic_launcher" 
    android:theme="@style/AppTheme"> 
    <service 
     android:name=".MyService" 
     android:description="@string/Desciption" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.nandhan.myservice" /> 
     </intent-filter> 
    </service>   
</application> 

Entonces me gustaría empezar el servicio como abajo

adb shell am StartService com. nandhan.myservice/.MyService

1

Manifiesto:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
    package="com.xyz.path"> 

... 

<application 

... 

    <service android:name=".MyService"> 
     <intent-filter> 
      <action android:name="com.xyz.path.MY_SERVICE" /> 
     </intent-filter> 
    </service> 

... 

Comando:

adb shell am startservice -n com.xyz.path/.MyService 
4

En mi caso, el servicio no se inicie era com.android.tools.fd.runtime.InstantRunService.

Starting service: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.xxx.xxx/com.android.tools.fd.runtime.InstantRunService } Error: Not found; no service started.

Resulta que a mi dispositivo Android le faltaba algo. Para desactivarlo, vaya al preferences > Build, Execution, Deployment > Instant Run y desmarque Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

disable instant run

De acuerdo a la pantalla, es mejor mantenerlo y, de hecho, sería más feliz con esa característica. Al menos corrí con un registro extra y envié comentarios a google. Solo necesitaba una compilación lo antes posible para que no haya ninguna ejecución instantánea para mí;)

Cuestiones relacionadas