Невозможно привязать/подключиться к удаленной службе, созданной как часть библиотеки AAR. ⇐ Android
Невозможно привязать/подключиться к удаленной службе, созданной как часть библиотеки AAR.
Я создал сервис, который находится в библиотеке. Затем библиотека включается в другой проект, который пытается запустить службу. Я использую AIDL для взаимодействия, однако, когда я пытаюсь подключиться к службе, мой метод onConnected никогда не срабатывает.
Из файлов журналов я вижу следующую ошибку:
D/ActivityManager: связываниеService callerProcessName:com.something.services.dummyproject, calleePkgName: com.something.services.dummyproject, действие: com.something.services.dummyservice.IDummyService W/ActivityManager: невозможно запустить службу. Намерение { act=com.something.services.dummyservice.IDummyService cmp=com.something.services.dummyproject/com.something.services.dummyservice.IDummyService } U=0: не найдено D/ActivityManager: связываниеService CallerProcessName: com.something.services.dummyproject, calleePkgName: com.something.services.dummyservice.service, действие: ноль W/ActivityManager: невозможно запустить службу. Намерение { cmp=com.something.services.dummyservice.service/.DummyService } U=0: не найдено Файл DummyService.java выглядит следующим образом:
пакет com.something.services.dummyservice.services; импортировать android.app.Service; импортировать android.content.Intent; импортировать android.os.IBinder; импортировать android.os.RemoteException; импортировать android.util.Log; импортировать com.something.services.dummyservice.IDummyService; общественный класс DummyService расширяет службу { @Override public int onStartCommand (Намерение, int flags, int startId) { вернуть START_STICKY; } @Override public IBinder onBind (Намерение) { вернуть mBinder; } частный окончательный IDummyService.Stub mBinder = новый IDummyService.Stub() { @Override public String dummyHello() выдает RemoteException { вернуть «Привет»; } @Override public void exit() выдает RemoteException { стопСамость(); } }; } Манифест DummyService выглядит следующим образом:
Файл IDummyService.aidl выглядит следующим образом:
// IDummyService.aidl пакет com.something.services.dummyservice; // Объявляем здесь любые типы, отличные от значений по умолчанию, с помощью операторов импорта интерфейс IDummyService { Строка dummyHello(); недействительный выход(); } Я создаю файл .aar с учетом вышеизложенного.
Затем я включил эту библиотеку в основной файл проекта.
В моем основном проекте манифест выглядит следующим образом:
Файл MainActivity.java выглядит следующим образом:
пакет com.something.services.dummyproject; импортировать android.content.ComponentName; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.content.ServiceConnection; импортировать android.os.IBinder; импортировать android.os.RemoteException; импортировать android.support.v7.app.AppCompatActivity; импортировать android.os.Bundle; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.EditText; импортировать android.widget.Toast; импортировать com.something.services.dummyservice.IDummyService; импортный нож для масла.Связывание; импорт сливочного ножа.ButterKnife; публичный класс MainActivity расширяет AppCompatActivity { частный IDummyService mDummyService; @Bind(R.id.btnStartService) Кнопка btnStartService; @Bind(R.id.btnEndService) Кнопка btnEndService; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(это); btnStartService.setOnClickListener(startServiceOnClickListener); btnEndService.setOnClickListener(endServiceOnClickListener); } частный ServiceConnection mConnection = новый ServiceConnection () { @Override public void onServiceConnected (ComponentName className, служба IBinder) { mDummyService = IDummyService.Stub.asInterface(сервис); манекенПривет(); } @Override public void onServiceDisconnected (ComponentName className) { мDummyService = ноль; } }; частный окончательный View.OnClickListener startServiceOnClickListener = новый View.OnClickListener() { @Override public void onClick (окончательный просмотр CompleteButton) { Намерение намерение = новое намерение(MainActivity.this, com.something.services.dummyservice.IDummyService.class); Intent.setAction(IDummyService.class.getName()); BindService (намерение, mConnection, Context.BIND_AUTO_CREATE); } }; частный окончательный View.OnClickListener endServiceOnClickListener = новый View.OnClickListener() { @Override public void onClick (окончательный просмотр CompleteButton) { выходСервис(); } }; частная пустота dummyHello() { пытаться { Строковый ответ = mDummyService.dummyHello(); Toast.makeText(getApplicationContext(), ответ, Toast.LENGTH_LONG); } catch (RemoteException e) { е.printStackTrace(); } } частный недействительный выходService() { пытаться { если (mDummyService != ноль) { мDummyService.exit(); } } catch (RemoteException e) { е.printStackTrace(); } } } DummyProject также содержит точно такой же файл AIDL. В обоих случаях файл AIDL находится в папке helpl, которая находится рядом с папкой src\JAVA. Он содержит папку пакета, содержащую файл AIDL.
Будем очень признательны за любую помощь в определении причины, по которой я не могу подключиться к службе!
Я создал сервис, который находится в библиотеке. Затем библиотека включается в другой проект, который пытается запустить службу. Я использую AIDL для взаимодействия, однако, когда я пытаюсь подключиться к службе, мой метод onConnected никогда не срабатывает.
Из файлов журналов я вижу следующую ошибку:
D/ActivityManager: связываниеService callerProcessName:com.something.services.dummyproject, calleePkgName: com.something.services.dummyproject, действие: com.something.services.dummyservice.IDummyService W/ActivityManager: невозможно запустить службу. Намерение { act=com.something.services.dummyservice.IDummyService cmp=com.something.services.dummyproject/com.something.services.dummyservice.IDummyService } U=0: не найдено D/ActivityManager: связываниеService CallerProcessName: com.something.services.dummyproject, calleePkgName: com.something.services.dummyservice.service, действие: ноль W/ActivityManager: невозможно запустить службу. Намерение { cmp=com.something.services.dummyservice.service/.DummyService } U=0: не найдено Файл DummyService.java выглядит следующим образом:
пакет com.something.services.dummyservice.services; импортировать android.app.Service; импортировать android.content.Intent; импортировать android.os.IBinder; импортировать android.os.RemoteException; импортировать android.util.Log; импортировать com.something.services.dummyservice.IDummyService; общественный класс DummyService расширяет службу { @Override public int onStartCommand (Намерение, int flags, int startId) { вернуть START_STICKY; } @Override public IBinder onBind (Намерение) { вернуть mBinder; } частный окончательный IDummyService.Stub mBinder = новый IDummyService.Stub() { @Override public String dummyHello() выдает RemoteException { вернуть «Привет»; } @Override public void exit() выдает RemoteException { стопСамость(); } }; } Манифест DummyService выглядит следующим образом:
Файл IDummyService.aidl выглядит следующим образом:
// IDummyService.aidl пакет com.something.services.dummyservice; // Объявляем здесь любые типы, отличные от значений по умолчанию, с помощью операторов импорта интерфейс IDummyService { Строка dummyHello(); недействительный выход(); } Я создаю файл .aar с учетом вышеизложенного.
Затем я включил эту библиотеку в основной файл проекта.
В моем основном проекте манифест выглядит следующим образом:
Файл MainActivity.java выглядит следующим образом:
пакет com.something.services.dummyproject; импортировать android.content.ComponentName; импортировать android.content.Context; импортировать android.content.Intent; импортировать android.content.ServiceConnection; импортировать android.os.IBinder; импортировать android.os.RemoteException; импортировать android.support.v7.app.AppCompatActivity; импортировать android.os.Bundle; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.EditText; импортировать android.widget.Toast; импортировать com.something.services.dummyservice.IDummyService; импортный нож для масла.Связывание; импорт сливочного ножа.ButterKnife; публичный класс MainActivity расширяет AppCompatActivity { частный IDummyService mDummyService; @Bind(R.id.btnStartService) Кнопка btnStartService; @Bind(R.id.btnEndService) Кнопка btnEndService; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(это); btnStartService.setOnClickListener(startServiceOnClickListener); btnEndService.setOnClickListener(endServiceOnClickListener); } частный ServiceConnection mConnection = новый ServiceConnection () { @Override public void onServiceConnected (ComponentName className, служба IBinder) { mDummyService = IDummyService.Stub.asInterface(сервис); манекенПривет(); } @Override public void onServiceDisconnected (ComponentName className) { мDummyService = ноль; } }; частный окончательный View.OnClickListener startServiceOnClickListener = новый View.OnClickListener() { @Override public void onClick (окончательный просмотр CompleteButton) { Намерение намерение = новое намерение(MainActivity.this, com.something.services.dummyservice.IDummyService.class); Intent.setAction(IDummyService.class.getName()); BindService (намерение, mConnection, Context.BIND_AUTO_CREATE); } }; частный окончательный View.OnClickListener endServiceOnClickListener = новый View.OnClickListener() { @Override public void onClick (окончательный просмотр CompleteButton) { выходСервис(); } }; частная пустота dummyHello() { пытаться { Строковый ответ = mDummyService.dummyHello(); Toast.makeText(getApplicationContext(), ответ, Toast.LENGTH_LONG); } catch (RemoteException e) { е.printStackTrace(); } } частный недействительный выходService() { пытаться { если (mDummyService != ноль) { мDummyService.exit(); } } catch (RemoteException e) { е.printStackTrace(); } } } DummyProject также содержит точно такой же файл AIDL. В обоих случаях файл AIDL находится в папке helpl, которая находится рядом с папкой src\JAVA. Он содержит папку пакета, содержащую файл AIDL.
Будем очень признательны за любую помощь в определении причины, по которой я не могу подключиться к службе!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Адаптер привязки не работает для подмодулей в AAR (с использованием плагина fat-aar)
Anonymous » » в форуме Android - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-