2012-09-10 37 views
10

Tôi đang cố bắt đầu dịch vụ từ trình bao adb. Đã có câu hỏi tương tự: How to start and stop android service from a adb shell? Tuy nhiên, khi tôi bắt đầu dịch vụ với:Android adb shell am startservice: Lỗi không tìm thấy

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

Tôi nhận được thông báo này:

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

Tôi tuyên bố dịch vụ trong AndroidManifest.xml:

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

Bạn có bất kỳ ý tưởng làm thế nào để giải quyết điều này? Cảm ơn bạn!

Trả lời

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

-n thêm 'LINE_NO:' tiền tố

+1

Một lệnh duy nhất có thể trả lời câu hỏi, nhưng nó sẽ hữu ích để giải thích những gì '-n' nào. Bạn cũng có thể muốn thụt lề bất kỳ mã nào bằng 4 dấu cách. – ronalchn

+1

Danh sách trợ giúp "am startservice" [-n ] (nó không liên quan đến số dòng) – dricket

3

xem xét dưới đây là một ví dụ

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

Sau đó, tôi sẽ bắt đầu dịch vụ như sau

adb shell pm startservice com. 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> 

... 

Command:

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

Trong trường hợp của tôi, dịch vụ thất bại trong việc bắt đầu là 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.

Tắt thiết bị Android của tôi bị thiếu thứ gì đó. Để tắt tính năng này, hãy truy cập preferences > Build, Execution, Deployment > Instant Run và bỏ chọn Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

disable instant run

Theo ảnh chụp màn hình, nó tốt hơn để giữ cho nó và thực sự, tôi muốn được hạnh phúc hơn với tính năng đó. Ít nhất tôi chạy với đăng nhập thêm và gửi phản hồi cho google. Tôi chỉ cần một asap xây dựng để không chạy ngay lập tức cho tôi ngày hôm nay;)