2012-09-10 13 views
10

Ich versuche, den Dienst von Adb-Shell zu starten. Es gibt bereits ähnliche Frage: How to start and stop android service from a adb shell? Allerdings, wenn ich starten Service mit:Android adb shell am startservice: Fehler nicht gefunden

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

Ich erhalte diese Mitteilung:

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

Ich erkläre Service in AndroidManifest.xml:

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

Hast du eine Idee, wie du das lösen kannst? Vielen Dank!

Antwort

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

-n fügt 'Line_No:' Präfix

+1

Ein einziger Befehl kann die Frage beantworten, aber es wäre nützlich zu erklären, was "-n" tut. Sie können auch beliebigen Code um 4 Leerzeichen einrücken. – ronalchn

+1

Hilfelisten "am startservice" [-n ] (bezieht sich nicht auf Zeilennummern) – dricket

3

die unter Betrachten als Beispiel

<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> 

Dann würde ich den Service als unten

adb shell am Startservice com starten. nandhan.myservice/.MyService

1

Manifest:

<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> 

... 

Befehl:

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

In meinem Fall war der Service starten andernfalls com.android.tools.fd.runtime.InstantRunService.

Stellt sich heraus, mein Android-Gerät fehlte etwas. Um es zu deaktivieren, gehen Sie zu preferences > Build, Execution, Deployment > Instant Run und deaktivieren Sie Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

disable instant run

Nach diesem Screenshot, dann ist es besser, es zu halten und in der Tat, würde ich mit diesem Merkmale glücklicher sein. Zumindest lief ich mit extra Protokollierung und schickte Feedback an Google. Ich brauchte nur einen Build so schnell wie möglich, so dass kein sofortiger Lauf für mich heute;)

Verwandte Themen