Следуя инструкциям разработчика Google по внедрению Firebase в моем приложении, я замечаю, что андроид-линт жалуется.
Идея состоит в том, что нам нужно реализовать две службы, которые наследуют службы Firebase:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { ... }
public class MyFirebaseMessagingService extends FirebaseMessagingService { ... }
а затем зарегистрируйте эти службы в манифесте. Но это не совсем прекрасно. В частности, эти две рекомендуемые записи службы AndroidManifest.xml не содержат специальных разрешений:
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
и поэтому linter говорит:
Экспортированные службы (службы, которые либо устанавливают exported = true, либо содержат фильтр намерений и не указывают exported = false), должны определять разрешение, которое должен иметь объект для запуска службы или привязки к ней. Без этого любое приложение может использовать эту службу.
Должен ли я просто добавить этот атрибут к каждому тегу службы и сделать с ним
tools:ignore="ExportedService"
или есть лучший подход в этой ситуации? Я имею в виду, безопасно ли выставлять эти специфические сервисы Firebase таким образом?