5

我正在按照这个官方文档将亚马逊设备消息传递到我的应用程序中。根据文档,我必须创建一个扩展ADMMessageHandlerJobBase的类(MyADMMessageHandler.java)并将我的类声明为 AndroidManifest.xml 中的服务

AndroidManifest.xml

<service android:name=".pn.MyADMMessageHandler"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE"/>

但是当我构建我的应用程序时,我收到了这个错误

AndroidManifest.xml:153: Error: MyADMMessageHandler must extend android.app.Service [Instantiatable]
  <service android:name=".pn.MyADMMessageHandler"                           

   Explanation for issues of type "Instantiatable":
   Activities, services, broadcast receivers etc. registered in the manifest
   file (or for custom views, in a layout file) must be "instantiatable" by
   the system, which means that the class must be public, it must have an
   empty public constructor, and if it's an inner class, it must be a static
   inner class.

1 errors, 0 warnings

BUILD SUCCESSFUL in 18s

尽管出现了这个错误,但我仍然成功构建。我反编译了 amazon-device-messaging-1.1.0.jar以查看发生了什么,但它只包含存根实现,并且ADMMessageHandlerJobBase不扩展 Service 或任何 Service 子类。

所以 MyADMMessageHandler 类不是服务,但为什么我们需要在 AndroidManifest.xml 中将其声明为服务?

注意:在亚马逊设备消息的示例代码中,它也做了同样的事情。

更新 1

我也在这里问过,得到了答案:

如果您遵循这1 个文档,那么您应该没问题。您看到的错误应该只是一个警告,可以忽略。AndroidManifest.xml 中的声明是必须的。

4

0 回答 0