Java.Lang.IncompatibleClassChangeError: java.lang.NoSuchMethodError: No virtual method build()Lcom/google/android/exoplayer2/DefaultLoadControl

Exarc 1 Reputation point
2022-04-07T13:30:44.777+00:00

I have created a Binding Library for Triton Digital Mobile SDK and integrated it on my Xamarin.Android project.

I have added this code to my project to test the binding library

using Com.Tritondigital.Player;  
namespace MyProject.Droid.Services  
{  
    public class AudioSource : Service, AudioManager.IOnAudioFocusChangeListener  
    {  
        .  
        .  
        .  
        public void Play()  
        {  
            Bundle settings = new Bundle();  
            settings.PutString(TritonPlayer.SettingsStreamUrl, "http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3");  
  
            // Create the player.  
            TritonPlayer player = new TritonPlayer(this, settings);  
            player.Play();  
        }  
        .  
        .  
        .  
    }  
}  

But during runtime, it throws a FATAL EXCEPTION

[TdStreamPlayer] SETTINGS_STREAM_MIME_TYPE not set. Deduced from URL: audio/mpeg  
[TdStreamPlayer] SETTINGS_TRANSPORT not set. Deduced from URL: sc  
[TdTritonPlayer] State changed: Stopped -> Connecting  
[TdExoPlayerBkg] ExoPlayer URL: http://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3  
[TdExoPlayerBkg] ExoPlayer buffer start: 2500 rebuffer: 8000 timeout: 15000  
[AndroidRuntime] Shutting down VM  
[AndroidRuntime] FATAL EXCEPTION: main  
[AndroidRuntime] Process: com.company.myapp, PID: 8630  
[AndroidRuntime] java.lang.NoSuchMethodError: No virtual method build()Lcom/google/android/exoplayer2/DefaultLoadControl; in class Lcom/google/android/exoplayer2/DefaultLoadControl$Builder; or its super classes (declaration of 'com.google.android.exoplayer2.DefaultLoadControl$Builder' appears in /data/app/com.company.myapp-bJibtmPeizHK0sfcwRqrpA==/base.apk)  
[AndroidRuntime] 	at com.tritondigital.player.TdExoPlayer$PlayerHandler.b(SourceFile:97)  
[AndroidRuntime] 	at com.tritondigital.player.TdExoPlayer$PlayerHandler.handleMessage(SourceFile:66)  
[AndroidRuntime] 	at android.os.Handler.dispatchMessage(Handler.java:106)  
[AndroidRuntime] 	at android.os.Looper.loop(Looper.java:193)  
[AndroidRuntime] 	at android.app.ActivityThread.main(ActivityThread.java:6669)  
[AndroidRuntime] 	at java.lang.reflect.Method.invoke(Native Method)  
[AndroidRuntime] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  
[AndroidRuntime] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)  
[MonoDroid] UNHANDLED EXCEPTION:  
[MonoDroid] Java.Lang.IncompatibleClassChangeError: No virtual method build()Lcom/google/android/exoplayer2/DefaultLoadControl; in class Lcom/google/android/exoplayer2/DefaultLoadControl$Builder; or its super classes (declaration of 'com.google.android.exoplayer2.DefaultLoadControl$Builder' appears in /data/app/com.company.myapp-bJibtmPeizHK0sfcwRqrpA==/base.apk)  
[MonoDroid]   --- End of managed Java.Lang.IncompatibleClassChangeError stack trace ---  
[MonoDroid] java.lang.NoSuchMethodError: No virtual method build()Lcom/google/android/exoplayer2/DefaultLoadControl; in class Lcom/google/android/exoplayer2/DefaultLoadControl$Builder; or its super classes (declaration of 'com.google.android.exoplayer2.DefaultLoadControl$Builder' appears in /data/app/com.company.myapp-bJibtmPeizHK0sfcwRqrpA==/base.apk)  
[MonoDroid] 	at com.tritondigital.player.TdExoPlayer$PlayerHandler.b(SourceFile:97)  
[MonoDroid] 	at com.tritondigital.player.TdExoPlayer$PlayerHandler.handleMessage(SourceFile:66)  
[MonoDroid] 	at android.os.Handler.dispatchMessage(Handler.java:106)  
[MonoDroid] 	at android.os.Looper.loop(Looper.java:193)  
[MonoDroid] 	at android.app.ActivityThread.main(ActivityThread.java:6669)  
[MonoDroid] 	at java.lang.reflect.Method.invoke(Native Method)  
[MonoDroid] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  
[MonoDroid] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)  

Any idea on how to resolve this?

Developer technologies .NET Xamarin
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.