更新了 MoPub,现在我在构建签名的 apk 时得到了 ExoPlayer 的 "can't find referenced field"

Updated MoPub and now I get "can't find referenced field" for ExoPlayer when building the signed apk

最新的MoPub SDK (5.3) 估计更新了ExoPlayer的版本。我的应用程序还使用 ExoPlayer。生成签名的 apk 时,我现在收到以下警告。如果我将 dontwarn 添加到混淆器,那么我的代码就会失败,因为它在运行时找不到这些字段。

我的 proguard 上有这个,它已经工作了很长时间,今天更新 MoPub 后它才开始失败。

-keep class com.google.android.exoplayer2.** { *; }
-keep interface com.google.android.exoplayer2.**{ *; }
-keepclassmembers class com.google.android.exoplayer2.** { *; }

这是错误:

Warning: MyClass: can't find referenced field 'int mediaSequence' in program class com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist
Warning: MyClass: can't find referenced field 'boolean isEncrypted' in program class com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist$Segment
Warning: MyClass: can't find referenced field 'java.lang.String encryptionKeyUri' in program class com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist$Segment

如何解决此错误?

更新:字段定义如下:

public final int mediaSequence;
public final boolean isEncrypted;
public final String encryptionKeyUri;

原来我正在编译一个旧版本的 ExoPlayer,而 MoPub 以某种方式包含了一个新版本,但只是其中的一小部分,即 HLS 部分。这似乎导致了这个问题,因为一旦我开始用我自己的代码编译新的代码,一切都会重新开始工作。这很奇怪,因为新版本甚至让我稍微更改了代码,所以我什至不知道它之前是如何编译的。