如何解决有关导出的Firebase Messaging服务实现的android lint投诉?

按照Google开发人员在我的应用中实施Firebase的说明 ,我注意到android lint抱怨。

我们的想法是,我们必须实现两个从Firebase服务inheritance的服务:

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { ... } public class MyFirebaseMessagingService extends FirebaseMessagingService { ... } 

然后在清单中注册这些服务。 但是,它并不完美。 特别是,这两个推荐的AndroidManifest.xml服务条目不包含任何特殊权限:

           

所以linter说:

导出的服务(设置为exported = true或包含intent-filter且未指定exported = false的服务)应定义实体必须具有的权限才能启动服务或绑定到该服务。 没有这个,任何应用程序都可以使用此服务。

我应该只将此属性添加到每个服务标记并完成它

 tools:ignore="ExportedService" 

或者在这种情况下有更好的方法吗? 我的意思是,公开这些特定的Firebase派生服务是否安全?

Solutions Collecting From Web of "如何解决有关导出的Firebase Messaging服务实现的android lint投诉?"

你问: ……公开这些特定的Firebase派生服务是否安全? 如果您信任这些服务的清单文件中的注释。

在Android Studio中,打开应用程序的AndroidManifest.xml文件。 在窗口底部,选择Merged Manifest的选项卡。 滚动查找FirebaseMessagingService的条目。 双击包含服务名称的行。 该服务的清单文件应该打开,您将看到:

            

请注意注释: FirebaseMessagingService在运行时执行安全检查,尽管exports =“true”,也不需要显式权限

您可以对FirebaseInstanceIdService执行相同操作并查看相同的注释。

如果您信任评论(我这样做),您可以安全地忽略lint警告或禁用检查。