flurry / unity-flurry-sdk

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

Onesignal + FlurrySDK doesn't work together #5

Closed rpassareti closed 4 years ago

rpassareti commented 5 years ago

Hi,

We have an old project that I'm in charge of updating all the plugins on it

And one of the projects have those library/plugins:

Google Mobile Ads Google Play Games One Signal Flurry Analytics

so I updated everything and put Flurry SDK on the project, but when I tried the first time, OneSignal was incompatible with the new PlayServices and I waited for a new update They launched the new update and now they use a patch on mainGradle and Jetifier to work.

When I tried it on the old projects that use both, Flurry crashes the app after some seconds running.

But only the first time the app was open!

If I build without Flurry SDK works normall If I build without the mainGradle patch, the apps works, but OneSignal doesn't work anymore If I build with the mainGradle pathc, the apps works too, but after some seconds, it crashes

On logcat I got the error: 08-20 19:46:05.557 22875 23223 E AndroidRuntime: FATAL EXCEPTION: Firebase-FlurryInstanceIDListenerService

don't know if I'm importing something wrong I just imported, put the codes, and build it.

[EDIT] removed the log

poting-oath commented 5 years ago

@rpassareti Are you using Flurry Push in your project? If not, please remove the following file from your project,

$ProjRoot/Assets/Plugins/Android/flurry-marketing.aar

Firebase has new releases that are not backwards compatible, sometimes caused this kind of issues. If you are not using Flurry Push (messaging), please try to remove it.

rpassareti commented 5 years ago

@poting-oath after deleting flurry-marketing.aar I'm getting an error when building:

CommandInvokationFailure: Gradle build failed. 
C:\Program Files\Unity\Hub\Editor\2018.4.5f1\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2018.4.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-5.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:26: error: package com.flurry.android.marketing does not exist
import com.flurry.android.marketing.FlurryMarketingModule;
                                   ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:27: error: package com.flurry.android.marketing does not exist
import com.flurry.android.marketing.FlurryMarketingOptions;
                                   ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:28: error: package com.flurry.android.marketing.messaging does not exist
import com.flurry.android.marketing.messaging.FlurryMessagingListener;
                                             ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:29: error: package com.flurry.android.marketing.messaging.notification does not exist
import com.flurry.android.marketing.messaging.notification.FlurryMessage;
                                                          ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:55: error: cannot find symbol
    private static FlurryMessagingListener sFlurryMessagingListener = null;
                   ^
  symbol:   class FlurryMessagingListener
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:130: error: cannot find symbol
    public static void withFlurryMessagingListener(FlurryMessagingListener messagingListener) {
                                                   ^
  symbol:   class FlurryMessagingListener
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:137: error: cannot find symbol
    class UnityFlurryMessagingListener implements FlurryMessagingListener {
                                                  ^
  symbol:   class FlurryMessagingListener
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:140: error: cannot find symbol
        public boolean onNotificationReceived(FlurryMessage flurryMessage) {
                                              ^
  symbol:   class FlurryMessage
  location: class FlurryUnityApplication.UnityFlurryMessagingListener
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:148: error: cannot find symbol
        public boolean onNotificationClicked(FlurryMessage flurryMessage) {
                                             ^
  symbol:   class FlurryMessage
  location: class FlurryUnityApplication.UnityFlurryMessagingListener
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:156: error: cannot find symbol
        public void onNotificationCancelled(FlurryMessage flurryMessage) {
                                            ^
  symbol:   class FlurryMessage
  location: class FlurryUnityApplication.UnityFlurryMessagingListener
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:102: error: cannot find symbol
                FlurryMarketingOptions flurryMessagingOptions = new FlurryMarketingOptions.Builder()
                ^
  symbol:   class FlurryMarketingOptions
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:102: error: package FlurryMarketingOptions does not exist
                FlurryMarketingOptions flurryMessagingOptions = new FlurryMarketingOptions.Builder()
                                                                                          ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:111: error: cannot find symbol
                FlurryMarketingModule marketingModule = new FlurryMarketingModule(flurryMessagingOptions);
                ^
  symbol:   class FlurryMarketingModule
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:111: error: cannot find symbol
                FlurryMarketingModule marketingModule = new FlurryMarketingModule(flurryMessagingOptions);
                                                            ^
  symbol:   class FlurryMarketingModule
  location: class FlurryUnityApplication
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:139: error: method does not override or implement a method from a supertype
        @Override
        ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:147: error: method does not override or implement a method from a supertype
        @Override
        ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:155: error: method does not override or implement a method from a supertype
        @Override
        ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:162: error: method does not override or implement a method from a supertype
        @Override
        ^
C:\Users\ronaldo.passareti\Documents\Tests\OneSignalFlurry\OneSignal_Flurry\Temp\gradleOut\src\main\java\com\flurry\android\FlurryUnityApplication.java:169: error: method does not override or implement a method from a supertype
        @Override
        ^
19 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 23s
]
stdout[
> Task :preBuild UP-TO-DATE
> Task :OneSignalConfig:preBuild UP-TO-DATE
> Task :OneSignalConfig:preReleaseBuild UP-TO-DATE
> Task :OneSignalConfig:checkReleaseManifest
> Task :OneSignalConfig:processReleaseManifest
> Task :OneSignalConfig:compileReleaseAidl NO-SOURCE
> Task :preReleaseBuild UP-TO-DATE
> Task :compileReleaseAidl NO-SOURCE
> Task :OneSignalConfig:packageReleaseRenderscript NO-SOURCE
> Task :checkReleaseManifest UP-TO-DATE
> Task :compileReleaseRenderscript NO-SOURCE
> Task :generateReleaseBuildConfig UP-TO-DATE
> Task :prepareLintJar UP-TO-DATE
> Task :generateReleaseSources UP-TO-DATE
> Task :OneSignalConfig:compileReleaseRenderscript NO-SOURCE
> Task :OneSignalConfig:generateReleaseBuildConfig
> Task :OneSignalConfig:generateReleaseResValues
> Task :OneSignalConfig:generateReleaseResources
> Task :OneSignalConfig:packageReleaseResources
> Task :OneSignalConfig:generateReleaseRFile
> Task :OneSignalConfig:prepareLintJar UP-TO-DATE
> Task :OneSignalConfig:generateReleaseSources
> Task :OneSignalConfig:javaPreCompileRelease
> Task :OneSignalConfig:compileReleaseJavaWithJavac
> Task :OneSignalConfig:bundleLibCompileRelease
> Task :javaPreCompileRelease UP-TO-DATE
> Task :mainApkListPersistenceRelease UP-TO-DATE
> Task :generateReleaseResValues UP-TO-DATE
> Task :generateReleaseResources UP-TO-DATE
> Task :createReleaseCompatibleScreenManifests UP-TO-DATE
> Task :mergeReleaseResources UP-TO-DATE
> Task :processReleaseManifest
> Task :processReleaseResources

> Task :compileReleaseJavaWithJavac

> Task :compileReleaseJavaWithJavac FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings
22 actionable tasks: 12 executed, 10 up-to-date
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1[T] progress, System.String error) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
poting-oath commented 5 years ago

Looks like you rename AndroidManifest_Flurry-template.xml to AndroidManifest.xml! If you are not using Flurry Push, you should not do this! Please follow the README in https://github.com/flurry/unity-flurry-sdk.

poting-oath commented 5 years ago

If you still get the build error, you can remove $ProjRoot/Assets/Plugins/Android/FlurryUnityApplication.java as well.

rpassareti commented 5 years ago

@poting-oath I noticed that on my test project, there was no AndroidManifest.xml or AndroidManifest_Flurry-template.xml on folder Plugin/Android

tried importing again, and didn't work

after deleting FlurryUnityApplication.java and flurry-marketin.aar, both plugin start working

thanks for the support!

rpassareti commented 5 years ago

sorry for reopen this thread @poting-oath

but I'm having trouble in another project that use AdMob + Flurry SDK + OneSignal and Unity 2018.4.5f1

I did everything that you said before, deleted FlurryUnityApplication.java and flurry-marketin.aar but I'm getting almost the same error as before, but in the app.

08-23 19:33:03.304 24377 24511 E Unity   : AndroidJavaException: java.lang.ClassNotFoundException: com.flurry.android.FlurryUnityApplication
08-23 19:33:03.304 24377 24511 E Unity   : java.lang.ClassNotFoundException: com.flurry.android.FlurryUnityApplication
08-23 19:33:03.304 24377 24511 E Unity   :      at java.lang.Class.classForName(Native Method)
08-23 19:33:03.304 24377 24511 E Unity   :      at java.lang.Class.forName(Class.java:453)
08-23 19:33:03.304 24377 24511 E Unity   :      at java.lang.Class.forName(Class.java:378)
08-23 19:33:03.304 24377 24511 E Unity   :      at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
08-23 19:33:03.304 24377 24511 E Unity   :      at com.unity3d.player.UnityPlayer.c(Unknown Source:0)
08-23 19:33:03.304 24377 24511 E Unity   :      at com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source:72)
08-23 19:33:03.304 24377 24511 E Unity   :      at android.os.MessageQueue.next(MessageQueue.java:394)
08-23 19:33:03.304 24377 24511 E Unity   :      at android.os.Looper.loop(Looper.java:142)
08-23 19:33:03.304 24377 24511 E Unity   :      at com.unity3d.player.UnityPlayer$e.run(Unknown Source:32)
08-23 19:33:03.304 24377 24511 E Unity   : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.flurry.android.FlurryUnityApplication" on path: DexPathList[[zip file "/data/app/br.com.webcoregames.hellokittyactivities-9yJP5raug57HaKT_N4rMPg==/base.apk"],nativeLibraryDirectories=[/data/app/br.com.webcoregames.hellokittyactivities-9yJP5raug57HaKT_N4rMPg==/lib/arm64, /data/app/br.com.webcoregame

and there is only one androidmanifest on the Plugins/Android, that is the AndroidManifest_Flurry-template

any idea?

thanks

poting-oath commented 5 years ago

Looks like your project still cache the AndroidManifest.xml in the Unity temporary folder. Please clean your project and rebuild it. Thanks!

rpassareti commented 5 years ago

no changes

I cleared the cache at Edit > Preferences > GI Cache > Clear Cache

but the problem persists

or is in another place to clear the cache?

the temp folder delete itself when unity close or needs to delete the library folder too?

poting-oath commented 5 years ago

Previously we released FlurryUnityApplication.java in the package. This is only supported by the Gradle build system in Unity. Recent Unity editors only support Gradle; i.e., if you are not using very old Unity editor, you should be fine.

We just released 2.0.0 which bundle FlurryUnityApplication.java in an aar file which is pre-compiled and can be used for non-Gradle build system. Please try again to see whether it resolves your issue.

BTW, please do not copy-n-paste the whole logs, just the related part. Thanks!

rpassareti commented 4 years ago

hey @poting-oath sorry for the delay of an answer but it works now!

i just updated the plugin on my project

for a moment, I forgot to delete flurry-marketing.aar, to stop the first bug on this topic, when the app open and ask for the FirebaseApp.initializeApp and crashes after this.

deleting flurry-marketing.aar, it stops from crashing and works normally.

maybe it's important to put this on documentantion, if the user won't use push notification, to delete this .aar file

thks for the support! sorry for the delay for an answer, and sorry for the big log!