Android adb shell am launchervice: Ошибка не найдена

Я пытаюсь запустить службу из оболочки adb. Там уже есть аналогичный вопрос: как запустить и остановить службу Android от оболочки adb? Однако, когда я начинаю работать с:

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

Я получаю это сообщение:

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

Я объявляю службу в AndroidManifest.xml:

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

У вас есть идеи, как это решить? Спасибо!

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

-n добавляет префикс 'line_no:'

Рассмотрим ниже пример

 <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> Дайте <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> 

Тогда я начал бы сервис, как показано ниже.

Adb shell am startservice com.nandhan.myservice / .MyService

В моем случае службе, которая не запускалась, был com.android.tools.fd.runtime.InstantRunService .

Начальный сервис: Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.xxx.xxx / com.android.tools.fd.runtime.InstantRunService} Ошибка: не найден; Служба не запускалась.

Оказывается, у моего устройства Android ничего не было. Чтобы отключить его, перейдите в preferences > Build, Execution, Deployment > Instant Run и снимите флажок Enable Instant Run to hot swap code/resource changes on deploy (default enabled) .

Отключить мгновенный запуск

Согласно этому снимку экрана, лучше сохранить его, и действительно, я был бы более счастлив с этой функцией. По крайней мере, я работал с дополнительным протоколированием и отправил отзыв в google. Мне просто нужно построить как можно скорее, поэтому мгновенный запуск для меня сегодня;)

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

Команда:

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