Как я могу добавить foregroundServiceType в манифест библиотеки при сохранении обратной совместимости? - PullRequest
0 голосов
/ 13 июня 2019

Мой библиотечный проект имеет службу определения местоположения, и в соответствии с требованиями Android Q он устанавливает атрибут android:foregroundServiceType="location" в манифесте. Когда модуль приложения использует мою библиотеку и компилируется на уровне API 28, происходит сбой со следующей ошибкой:

AndroidManifest.xml:57: AAPT: error: attribute android:foregroundServiceType not found.

Как моя библиотека может поддерживать совместимость со старыми версиями, обеспечивая при этом функциональность на Android Q?

1 Ответ

0 голосов
/ 17 июня 2019

Моя цель - не нарушать чью-либо сборку при обновлении версии библиотеки и в то же время избегать принуждения разработчика к компиляции с использованием API 29. Кажется, у меня есть два варианта:

  • Обеспечитьотдельная библиотека, так что разработчики, компилирующие с API 28 и ниже, не будут затронуты;
  • предупреждают разработчиков, ориентирующихся на новую версию, чтобы заменить определение сервиса в манифесте, используя tools:node="replace".

Проблема с первым подходом состоит в том, что мне нужно будет поддерживать две библиотеки в течение некоторого времени.Проблема со вторым заключается в том, что разработчики должны помнить об отмене изменения после обновления версии SDK.

В моем случае я перейду ко второму подходу.Передав явный тип службы переднего плана методу startForeground при нацеливании на Android Q, я могу вызвать сбой, если тип не задан в манифесте.Поэтому разработчик может поймать это при нацеливании на Android Q и отменить изменение манифеста, чтобы исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...