今天我把exoplayer从 从2.9.5到2.10.4 在旧版本中一切都很好,但在新版本中他们增加了AdsLoader.AdViewProvider,我不知道如何实现它。我已经尽力了,但问题没有解决。我想在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);
我在升级到新版本后得到了这个异常
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)
在你的gradle.properties文件中添加以下一行。
android.enableDexingArtifactTransform=false
问题出在gradle构建工具3.5的一个新特性上,它试图优化外部依赖关系,并从exoplayer中剥离默认方法的实现。
根据android团队的问题跟踪器,这个问题应该通过在pom.xml中正确声明所有的依赖关系和瞬时依赖关系来解决,但我找不到除此以外的任何解决方案。