Intereting Posts
Получение net :: ERR_UNKNOWN_URL_SCHEME при вызове номера телефона с HTML-страницы в Android Зачем использовать Enums вместо констант? Запуск службы из класса приложения Как я могу скрыть фон, когда отображается Bottomsheet, без использования диалогового окна? Как реализовать getfilter () с пользовательским адаптером, который расширяет базовый адаптер Каков наилучший способ реализации отношений «многие ко многим» с использованием ORMLite? Android Fatal Signal Error 11 SIGSEGV в разных версиях JellyBean Diff b / w bitmap.recycle () и bitmap = null Как найти версию процессора ARM на устройстве Android? Android Следующие классы не удалось найти – EditText (Изменить на android.widget.EditText, Fix Build Path, Edit XML) Что вызывает отмененные сетевые запросы в Android Chrome Элементы предпочтений автоматически переустанавливаются? Диспетчер аналитики и управление конфигурацией для пользовательского использования Android – Как определить, выбрал ли пользователь, чтобы поделиться с Facebook или Twitter с помощью намерений? Как передать объект другому мероприятию?

Внешняя служба Android из библиотеки (AAR, а не общая служба)

Я пытаюсь создать библиотеку Android, содержащую простой сервис. Например:

public class BasicService extends Service { public BasicService() { Log.d("I", "work"); } @Override public IBinder onBind(Intent intent) { return null; } } 

Я запускаю сервис следующим образом:

 startService(new Intent(this, BasicService.class)); 

Служба скомпилирована в файл AAR, и после добавления в приложение я получаю исключение ClassNotFoundException.

  Caused by: java.lang.ClassNotFoundException: Didn't find class "nl.company.example.library.Services.BasicService" on path: DexPathList[[zip file "/data/app/nl.example.aartest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 

Мне не нужно связывать службу, так как приложение не должно связываться с сервисом. Мне также не нужен интерфейс helpl, так как я не хочу делиться сервисом с другими приложениями. Я знаю, что мне нужно объявить службу со стороны приложения (а не библиотеки), поэтому я сделал это следующим образом:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nl.company.example.exampleApp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> <application android:settings... > <service android:name="nl.company.example.library.Services.BasicService" android:enabled="true" android:exported="true" /> </application> </manifest> 

Это проявление моей библиотеки:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nl.company.example.library" > <application/> </manifest> 

Я провел некоторое исследование в Stackoverflow / Google, и я не смог найти ответ на свою проблему.

Служба Android в библиотеке

Также пробовали разные способы запуска службы (по действию и т. Д.), Но пока ничего хорошего.

Вся помощь приветствуется, и мои извинения, если я сделал злой дублированный вопрос.

Solutions Collecting From Web of "Внешняя служба Android из библиотеки (AAR, а не общая служба)"

BaseService реализовал интерфейс из другой библиотеки, которая не была упакована в файл aar . Это привело к сбою приложения сразу после запуска на устройстве, поскольку оно не могло решить проблему зависимости.

 public class BaseService implements OtherLibraryInterface { ... } 

Вместо того, чтобы бросать ClassNotFoundException для OtherLibraryInterface , Android будет бросать именно это исключение для BaseService . Это очень сбивает с толку и заставляет нас думать, что с Сервисом что-то не так.

Добавление зависимостей OtherLibrary явно как зависимость от основного приложения решила эту проблему.