virgo
virgo

Reputation: 81

exoplayer not playing add and got crash

Today i upgraded exoplayer from 2.9.5 to 2.10.4 every thing is working fine in old version but in new version they added AdsLoader.AdViewProvider and i don't know how to implement it. I try my best but the issue does not resolved. I want to play ads in exoplayer.

MediaSource mediaSourceWithAds = new AdsMediaSource(contentMediaSource, mediaDataSourceFactory, adsLoader, new AdsLoader.AdViewProvider() {
                @Override
                public ViewGroup getAdViewGroup() {
                    return adFrameLayout;
                }

                @Override
                public View[] getAdOverlayViews() {
                    return new View[0];
                }
            });

            player.prepare(mediaSourceWithAds);

i got this exception after upgrade to new version

java.lang.AbstractMethodError: abstract method "void com.google.android.exoplayer2.source.ads.AdsLoader.start(com.google.android.exoplayer2.source.ads.AdsLoader$EventListener, com.google.android.exoplayer2.source.ads.AdsLoader$AdViewProvider)"
    at com.google.android.exoplayer2.source.ads.AdsMediaSource.lambda$prepareSourceInternal$0$AdsMediaSource(AdsMediaSource.java:220)
    at com.google.android.exoplayer2.source.ads.-$$Lambda$AdsMediaSource$zcXBZahV9F-k_KJACPO-bl_WWX0.run(Unknown Source:4)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:180)
    at android.app.ActivityThread.main(ActivityThread.java:6950)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:835)

Upvotes: 7

Views: 3962

Answers (1)

Jalpesh
Jalpesh

Reputation: 1134

Add the following line to your gradle.properties file:

android.enableDexingArtifactTransform=false

The problem resides in a new feature of the gradle build tools 3.5 where it tries to optimise external dependencies as well and it strips default method implementations from exoplayer.

According to the android team issue tracker this issue should be fixed by correctly declaring all dependencies and transient dependencies on the pom.xml but I couldn't find any solution other than this.

Answer source https://github.com/MasayukiSuda/GPUVideo-android/issues/25

Upvotes: 5

Related Questions