flurry / unity-flurry-sdk

Unity plugin for Flurry SDK
Apache License 2.0
25 stars 5 forks source link

Unable to instantiate service com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService #10

Closed wangjinzhong closed 4 years ago

wangjinzhong commented 4 years ago

After I integrate the Firebase SDK, the follow issue occurs, it crashes on about 75% of my user's devices, but I can not repro it. Caused by java.lang.RuntimeException: Unable to instantiate service com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService: java.lang.ClassNotFoundException: Didn't find class "com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.kiwifun.game.cross.collect.line.words-3UlbAfstJCj2XnaLnuex8w==/base.apk"],nativeLibraryDirectories=[/data/app/com.kiwifun.game.cross.collect.line.words-3UlbAfstJCj2XnaLnuex8w==/lib/arm64, /data/app/com.kiwifun.game.cross.collect.line.words-3UlbAfstJCj2XnaLnuex8w==/base.apk!/lib/arm64-v8a, /system/lib64]] at android.app.ActivityThread.handleCreateService(ActivityThread.java:3736) at android.app.ActivityThread.access$1400(ActivityThread.java:213) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1826) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6936) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)

poting-oath commented 4 years ago

@wangjinzhong What version of Unity plugin were you using. We have a Firebase backwards incompatible fix in v2.2.0. Please try to use it instead. Thanks!

wangjinzhong commented 4 years ago

I use the latest version of v2.2.0, and now it can be repoduced on one of my test device. After I install the app, it crashes the first time lanch, but it will be OK the second time lanch.

poting-oath commented 4 years ago

@wangjinzhong Did you change your Android libraries searching path? FlurryMessageListenerService.class is included in the $ProjRoot/Assets/Plugins/Android/flurry-marketing.aar.

$jar xf $ProjRoot/Assets/Plugins/Android/flurry-marketing.aar
$jar xf classes.jar
$find . -name 'FlurryMessageListenerService*'
./com/flurry/android/marketing/messaging/FCM/FlurryMessageListenerService.class

Please verify your Android libraries searching path, and include the original Unity default path in your modified one.

wangjinzhong commented 4 years ago

@poting-oath No, all the other activities and services are OK, and the FlurryMessageListenerService.class is missing the first time launch. Now I use the v1.1.0 sdk, everything is OK.

poting-oath commented 4 years ago

Probably Firebase Push and Flurry Push have some conflict here. If you do not use Flurry Push in your app, please remove the following files (Flurry Push library) from your project to see whether the problem will be resolved or not.

$PROJ_ROOT/Assets/Plugins/Android/flurry-marketing.aar
$PROJ_ROOT/Assets/Plugins/Android/flurry-unity.aar
poting-oath commented 4 years ago

@wangjinzhong What Firebase Messaging version are you using? Flurry 2.2.0 needs to use the latest Firebase releases (Firebase has some backward incompatible APIs).

wangjinzhong commented 4 years ago

@poting-oath I am not use Firebase Messaging. I integrate the Firebase Analytics``Firebase Crashlytics``Firebase RemoteConfig, all are the latest version. I only try remove flurry-maketing.aar, the flurry-unity.aar crashes. I will try again later, thanks.

ishnu47 commented 4 years ago

Hello, I have the same problem. I dont use Flurry Messaging and Firebase Messaging, only using Flurry Analytics, Firebase Analytics, Firebase Crashlytics and Firebase RemoteConfig. Here are some logs:

430 I art     : Rejecting re-init on previously-failed class java.lang.Class<com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessagingService;
430 I art     :   at java.lang.Class java.lang.VMClassLoader.findLoadedClass!(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
430 I art     :   at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
430 I art     :   at void android.app.ActivityThread.handleCreateService(android.app.ActivityThread$CreateServiceData) (ActivityThread.java:3174)
430 I art     :   at void android.app.ActivityThread.-wrap5(android.app.ActivityThread, android.app.ActivityThread$CreateServiceData) (ActivityThread.java:-1)
430 I art     :   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1568)
430 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
430 I art     :   at void android.os.Looper.loop() (Looper.java:154)
430 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6125)
430 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
430 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:893)
430 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:783)
430 I art     : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.messaging.FirebaseMessagingService" on path: DexPathList[[zip file "/data/app/myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/myapp-1/lib/arm, /data/app/myapp-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /data/downloads, /data/priv-downloads]]
430 I art     :   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
430 I art     :   at java.lang.Class java.lang.VMClassLoader.findLoadedClass!(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
430 I art     :   at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
430 I art     :   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
430 I art     :   at void android.app.ActivityThread.handleCreateService(android.app.ActivityThread$CreateServiceData) (ActivityThread.java:3174)
430 I art     :   at void android.app.ActivityThread.-wrap5(android.app.ActivityThread, android.app.ActivityThread$CreateServiceData) (ActivityThread.java:-1)
430 I art     :   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1568)
430 I art     :   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
430 I art     :   at void android.os.Looper.loop() (Looper.java:154)
430 I art     :   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6125)
430 I art     :   at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
430 I art     :   at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:893)
430 I art     :   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:783)

And here is the crash logs:

5430 E AndroidRuntime: FATAL EXCEPTION: main
5430 E AndroidRuntime: Process: myapp, PID: 5430
5430 E AndroidRuntime: java.lang.Error: FATAL EXCEPTION [main]
5430 E AndroidRuntime: Unity version     : 2018.4.12f1
5430 E AndroidRuntime: Device model      : OnePlus ONEPLUS A5000
5430 E AndroidRuntime: Device fingerprint: OnePlus/OnePlus5/OnePlus5:7.1.1/NMF26X/10171617:user/release-keys
5430 E AndroidRuntime: 
5430 E AndroidRuntime: Caused by: java.lang.RuntimeException: Unable to instantiate service com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService: java.lang.ClassNotFoundException: Didn't find class "com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService" on path: DexPathList[[zip file "/data/app/myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/myapp-1/lib/arm, /data/app/myapp-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /data/downloads, /data/priv-downloads]]
5430 E AndroidRuntime:  at android.app.ActivityThread.handleCreateService(ActivityThread.java:3177)
5430 E AndroidRuntime:  at android.app.ActivityThread.-wrap5(ActivityThread.java)
5430 E AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1568)
5430 E AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102)
5430 E AndroidRuntime:  at android.os.Looper.loop(Looper.java:154)
5430 E AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:6125)
5430 E AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method)
5430 E AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
5430 E AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
5430 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.flurry.android.marketing.messaging.FCM.FlurryMessageListenerService" on path: DexPathList[[zip file "/data/app/myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/myapp-1/lib/arm, /data/app/myapp-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /data/downloads, /data/priv-downloads]]
5430 E AndroidRuntime:  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
5430 E AndroidRuntime:  at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
5430 E AndroidRuntime:  at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
5430 E AndroidRuntime:  at android.app.ActivityThread.handleCreateService(ActivityThread.java:3174)
5430 E AndroidRuntime:  ... 8 more
5430 E AndroidRuntime:  Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessagingService;
5430 E AndroidRuntime:      at java.lang.VMClassLoader.findLoadedClass(Native Method)
5430 E AndroidRuntime:      at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)
5430 E AndroidRuntime:      at java.lang.ClassLoader.loadClass(ClassLoader.java:362)
5430 E AndroidRuntime:      ... 10 more
5430 E AndroidRuntime:  Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.messaging.FirebaseMessagingService" on path: DexPathList[[zip file "/data/app/myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/myapp-1/lib/arm, /data/app/myapp-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /data/downloads, /data/priv-downloads]]
5430 E AndroidRuntime:      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
5430 E AndroidRuntime:      at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
5430 E AndroidRuntime:      at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
5430 E AndroidRuntime:      ... 13 more

Note: It seems that I should integrate Firebase Messaging to resolve its dependencies? But I really dont want to as I'm not using Firebase Messaging and Flurry Messaging in my app.

Thank you!

poting-oath commented 4 years ago

@ishnu47 @wangjinzhong

Probably Firebase Push and Flurry Push have some conflict here. If you do not use Flurry Push in your app, please remove the following files (Flurry Push library) from your project to see whether the problem will be resolved or not.

$PROJ_ROOT/Assets/Plugins/Android/flurry-marketing.aar $PROJ_ROOT/Assets/Plugins/Android/flurry-unity.aar

Have you try to remove these 2 aar files? And make sure your project build is not cached.

ishnu47 commented 4 years ago

Hello, I got this error when delete those files.

01-22 15:44:42.053  9921  9976 E Unity   : AndroidJavaException: java.lang.ClassNotFoundException: com.flurry.android.FlurryUnityApplication
01-22 15:44:42.053  9921  9976 E Unity   : java.lang.ClassNotFoundException: com.flurry.android.FlurryUnityApplication
01-22 15:44:42.053  9921  9976 E Unity   :  at java.lang.Class.classForName(Native Method)
01-22 15:44:42.053  9921  9976 E Unity   :  at java.lang.Class.forName(Class.java:400)
01-22 15:44:42.053  9921  9976 E Unity   :  at java.lang.Class.forName(Class.java:326)
01-22 15:44:42.053  9921  9976 E Unity   :  at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
01-22 15:44:42.053  9921  9976 E Unity   :  at com.unity3d.player.UnityPlayer.c(Unknown Source)
01-22 15:44:42.053  9921  9976 E Unity   :  at com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source)
01-22 15:44:42.053  9921  9976 E Unity   :  at android.os.MessageQueue.next(MessageQueue.java:392)
01-22 15:44:42.053  9921  9976 E Unity   :  at android.os.Looper.loop(Looper.java:136)
01-22 15:44:42.053  9921  9976 E Unity   :  at com.unity3d.player.UnityPlayer$e.run(Unknown Source)
01-22 15:44:42.053  9921  9976 E Unity   : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.flurry.android.FlurryUnityApplication" on path: DexPathList[[zip file "/data/app/myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/myapp-1/lib/a

Thank you.

poting-oath commented 4 years ago

@ishnu47 Yes, the wrapper C# also needs to remove the usage of FlurryUnityApplication. We will release a new build as soon as possible to fix this.

Before then, please comment out all usage of FlurryUnityApplication in $PROJ_ROOT/Assets/Plugins/FlurrySDK/FlurryAgentAndroid.cs.

I.e., // AndroidJavaClass cls_FlurryApplication = new AndroidJavaClass("com.flurry.android.FlurryUnityApplication"); & // cls_FlurryApplication.CallStatic("withFlurryMessagingListener", new MessagingCallback(flurryMessagingListener));.

ishnu47 commented 4 years ago

@poting-oath Thanks for your help, I tried and it works, no crash! Hope we get a new build to fix this issue completely soon. Thank you!

poting-oath commented 4 years ago

@ishnu47 We just released a new 2.4.0 Flurry Unity plugins, one for Analytics only, the other for With-Push. In your case, please use the Analytics only package flurry-sdk-2.4.0.unitypackage. Thanks for your feedback and support!

poting-oath commented 4 years ago

We just released a new 2.4.0 Flurry Unity plugins, one for Analytics only, the other for With-Push. In your case, please use the Analytics only package flurry-sdk-2.4.0.unitypackage. Thanks for your feedback and support!

Closed