Download crash on Android

Hello,

For some of my devices when I start a download I get the following crash log
I can’t investigate more than that because the source code is obfuscated.
I got this crash on Galaxy Tab S6 Lite and Galaxy S20 FE

Adding more infos:
I’m using bitmovin version: 3.67.0 and my app is targetting targetSdkVersion = 34 and
compileSdkVersion = 34

Fatal Exception: java.lang.RuntimeException: Unable to start service com.bitmovin.player.offline.service.BitmovinDownloadService@3f124b0 with Intent { act=com.google.android.exoplayer.downloadService.action.ADD_DOWNLOADS cmp=com.my.package/com.bitmovin.player.offline.service.BitmovinDownloadService (has extras) }: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5276)
       at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2457)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8810)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
       at java.lang.Class.isAssignableFrom(Class.java:824)
       at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4865)
       at android.os.Parcel.readParcelableInternal(Parcel.java:4778)
       at android.os.Parcel.readValue(Parcel.java:4544)
       at android.os.Parcel.readValue(Parcel.java:4324)
       at android.os.Parcel.readListInternal(Parcel.java:5288)
       at android.os.Parcel.readArrayListInternal(Parcel.java:5307)
       at android.os.Parcel.readValue(Parcel.java:4574)
       at android.os.Parcel.readValue(Parcel.java:4324)
       at android.os.Parcel.-$$Nest$mreadValue()
       at android.os.Parcel$LazyValue.apply(Parcel.java:4422)
       at android.os.Parcel$LazyValue.apply(Parcel.java:4381)
       at android.os.BaseBundle.getValueAt(BaseBundle.java:394)
       at android.os.BaseBundle.getValue(BaseBundle.java:374)
       at android.os.BaseBundle.getArrayList(BaseBundle.java:1486)
       at android.os.Bundle.getParcelableArrayList(Bundle.java:1070)
       at android.content.Intent.getParcelableArrayListExtra(Intent.java:9638)
       at com.bitmovin.player.offline.service.b.b(SourceFile:14)
       at com.bitmovin.player.offline.service.b.onStartCommand(SourceFile:88)
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5258)
       at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2457)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8810)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

Hi @obadia.yoni , thanks for reporting this behaviour. Can you please share following information to help us understand the issue.

  • Is the issue also reproducible with Bitmovin sample application for download and offline playback
  • Can you please check if the permission required for download and offline playback added to manifest file of your android app? You can find the permission in AndroidManifest.xml for the Bitmovin sample application

Hello, it seems to be an issue with google-play services

GmsDynamite:
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:386)
       at java.lang.Object.wait(Object.java:524)
       at com.google.android.gms.dynamite.zza.run(com.google.android.gms:play-services-basement@@18.2.0:2)

This issue happens only on 2 or 3 of our testing devices, this happens only recently and prior to that downloading has been working correctly since a year or so.

Another thing about this issue is that it seems to be only for Android 13

Hello Lucky Goyal,

Is there any update about this issue? Our team started to face it since we integrated deobfuscation file on the Google Play Console.

Also, We can confirm it happens on:

  • Android 13 only
  • release mode (debug mode is fine)

Thank you in advance for your help.

 Fatal Exception: java.lang.RuntimeException: Unable to start service com.bitmovin.player.offline.service.BitmovinDownloadService@7211dcb with Intent { act=com.google.android.exoplayer.downloadService.action.ADD_DOWNLOADS cmp=com.package.name/com.bitmovin.player.offline.service.BitmovinDownloadService (has extras) }: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5276)
       at android.app.ActivityThread.-$$Nest$mhandleServiceArgs()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2457)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8810)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)