【问题标题】:Class Extending FirebaseMessagingService not working inside Android Library类扩展 FirebaseMessagingService 在 Android 库中不起作用
【发布时间】:2016-11-04 17:23:01
【问题描述】:

我创建了一个 Android 库来实现 FCM 以在我的内部项目中使用,其中我实现了一个类来扩展 FirebaseMessagingService (.services.MyFirebaseMessagingService) 和另一个类来扩展 FirebaseInstanceIdService (.services.MyFirebaseInstanceIDService)。

我在库内的 AndroidManifest.xml 中定义了它,如下所示:

<!-- [START firebase_service] -->
<service
    android:name=".services.MyFirebaseMessagingService"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
<!-- [END firebase_service] -->
<!-- [START firebase_iid_service] -->
<service android:name=".services.MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>
<!-- [END firebase_iid_service] -->

当我将所有库源代码作为一个模块包含在我的应用程序中时,一切正常,但是当我只包含生成的 AAR 时,我在运行我的应用程序时收到此错误:

java.lang.RuntimeException: Unable to instantiate service com.example.lib.services.MyFirebaseMessagingService: java.lang.ClassNotFoundException: com.example.lib.services.MyFirebaseMessagingService
  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2380)
  at android.app.ActivityThread.access$1600(ActivityThread.java:138) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:4905)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
  at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.example.lib.services.MyFirebaseMessagingService
  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2377)
  at android.app.ActivityThread.access$1600(ActivityThread.java:138) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286) 
  at android.os.Handler.dispatchMessage(Handler.java:99) 
  at android.os.Looper.loop(Looper.java:137) 
  at android.app.ActivityThread.main(ActivityThread.java:4905) 
  at java.lang.reflect.Method.invokeNative(Native Method) 
  at java.lang.reflect.Method.invoke(Method.java:511) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
  at dalvik.system.NativeStart.main(Native Method) 

com.example.lib.services.MyFirebaseInstanceIDService 服务正常工作。

我需要对 AAR 生成的库做什么?

【问题讨论】:

    标签: android firebase firebase-cloud-messaging


    【解决方案1】:

    对于 FCM,请按照以下步骤操作:
    1 - 在主 Build.gradle(不在 app 文件夹中)添加这一行:

    buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
    


    2- 在 app/build.gradle 添加这一行:

     apply plugin: 'com.android.application'
    
    android {
      // ...
    }
    
    dependencies {
      // ...
      compile 'com.google.firebase:firebase-core:9.8.0'
      compile 'com.google.firebase:firebase-messaging:9.8.0'
    
      // Getting a "Could not find" error? Make sure you have
      // the latest Google Repository in the Android SDK manager
    }
    
    // ADD THIS AT THE BOTTOM
    apply plugin: 'com.google.gms.google-services'
    


    注意:您的 SDK 中的“Android Support Repository”大部分需要更新。 希望对您有所帮助

    【讨论】:

    • 非常感谢@soheil-tayyeb,现在运行良好。我想如果我已经将com.google.firebase:firebase-messaging:9.8.0 包含在库依赖项中,我就不需要包含在应用程序依赖项中。
    • 我尝试使用相同的 Build.gradle 设置,但仍然面临同样的问题。
    • 我应用了它并没有帮助:(
    【解决方案2】:

    点击 Build -> Clean 然后安装并运行应用程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 2019-01-31
      相关资源
      最近更新 更多