2015-11-02 2 views
2

Я создал несколько Flavors приложения в Android Studio с той же базой кода. В приложении я есть услуга в пакетеAndroid Two Flavors с таким же пакетом услуг

com.app.xyz.service 

меняю идентификатор приложения для каждого аромата, как показано ниже

applicationId "com.app2.flavour1" 

и

applicationId "com.app2.flavour2" 

в build.graddle

но Service Package остается таким же, поскольку его общий код для каждого fl avour. Теперь проблема заключается в том, что когда я устанавливаю оба варианта с разными идентификаторами приложений на одном устройстве, каждое приложение создает экземпляр SERVICE TWICE.

Как изолировать при сохранении того же кода класса обслуживания.

ответ

0

У меня такая же проблема, как у вас.

Единственное решение, которое я нашел на данный момент выглядит следующим образом:

  • создать определение службы по ароматизатора в файле манифеста
  • создать реализацию сервиса в каждом вкусами (только минимальный код: OnCreate, ...).
  • создать «вспомогательный» класс в «основной» проект с кодом моей первоначальной реализации услуг

Не очень «красиво», но мой проект содержит только два ароматизаторов, так что остается читаемым и ремонтопригодны

+0

Как я могу инициировать эту услугу от ОСНОВНОГО вкуса? –

0

Я могу решить проблему, как показано ниже.

Я отправлял трансляции для связи между Сервисом и другой частью приложения. Я добавил префикс с действием для каждого приложения через BuildConfig.IDENTIFIER.

Теперь каждое приложение слушало только свои собственные действия, поэтому каждый вкус не мешал другим.

Смежные вопросы