OneSignal / react-native-onesignal

React Native Library for OneSignal Push Notifications Service
Other
1.56k stars 371 forks source link

[Bug]: Could not create Worker com.onesignal.notifications.internal.restoration.impl.NotificationRestoreWorkManager$NotificationRestoreWorker #1677

Open CristianCosmicVspartners opened 3 months ago

CristianCosmicVspartners commented 3 months ago

What happened?

After the upgrade from v4 to v5 I am getting the Native Android error and receive no push.

Steps to reproduce?

-Upgrade from V4 to 5.1.0 or any other 5.x.x version
-Install on Android device (Pixel 6a) Android 14
-Check Android studio Logcat, Error in Logs
-This is happening on both Dev and release env

-Send notifications from Onesignal web page
-No notification is received

What did you expect to happen?

Receive push notifications

React Native OneSignal SDK version

5.1.0

Which platform(s) are affected?

Relevant log output

E  Could not instantiate com.onesignal.notifications.internal.restoration.impl.NotificationRestoreWorkManager$NotificationRestoreWorker
                                                                                                    java.lang.reflect.InvocationTargetException

at java.lang.reflect.Constructor.newInstance0(Native Method)

at java.lang.reflect.Constructor.newInstance(Constructor.java:343)

at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:96)

at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:245)

at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:137)

at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)

at java.lang.Thread.run(Thread.java:1012)

Caused by: java.lang.NoSuchMethodError: No interface method getSerialTaskExecutor()Landroidx/work/impl/utils/taskexecutor/SerialExecutor; in class Landroidx/work/impl/utils/taskexecutor/TaskExecutor; or its super classes (declaration of 'androidx.work.impl.utils.taskexecutor.TaskExecutor' appears in /data/app/~~XnyUvZgb8t81pTzkfIuC7w==/com.modalview.mobile-W2G51nXkC85bBURFlotYAQ==/base.apk!classes18.dex)

at androidx.work.CoroutineWorker.<init>(CoroutineWorker.kt:53)

at com.onesignal.notifications.internal.restoration.impl.NotificationRestoreWorkManager$NotificationRestoreWorker.<init>(NotificationRestoreWorkManager.kt:47)

at java.lang.reflect.Constructor.newInstance0(Native Method) 

at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 

at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:96) 

at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:245) 

at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:137) 

at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)

Code of Conduct

laurentiupopavs commented 3 months ago

I am having the same error. Did you find anything?

CristianCosmicVspartners commented 3 months ago

Can any one please take a look at this and advise ?

nan-li commented 3 months ago

Hi @CristianCosmicVspartners thank you for reporting. Are you experiencing this Could not instantiate.. all the time or only sometimes?

jkasten2 commented 1 week ago

I am able to reproduce the issue if work-runtime-ktx:2.8.1 is used with androidx.work:work-runtime:2.7.0 in a forceful way, such as:

    implementation('androidx.work:work-runtime-ktx:2.8.1')
    api('androidx.work:work-runtime') {
        version {
            strictly '2.7.0'
        }
    }

However it isn't clear what's downgrading the version in your scenario, but finding that is the key to solving this.

Can you run ./gradlew app:dependencies or ./gradlew build --scan from the android folder of your project. (where your build.gradle or gradlew files are located) and share the output? This should point to what library is defining a force downgrade.

Another way to find the breaking library is if you remove libraries from your project, or make a new project and build them up and share the project reproducing the issue.