'Xamarin Binding error: java.lang.NoSuchMethodError: No virtual method build()Lcom/google/android/exoplayer2/DefaultLoadControl

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?



Solution 1:[1]

Try to add the jar for exoplayer in your binding project with embeddedjar build action mentioned in the documentation

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Opaw