SystemPlayerManager 混淆后AndroidMediaPlayer 崩溃
(!!!!请务必务必按照issue模板,修改 后提交问题!!!!,不按模板提Isuue删除处理)
(ps 首页问题集锦和demo请先了解一下!)
问题描述:采用系统内核后,混淆后AndroidMediaPlayer 初始化就崩溃,keep以后还是崩溃
2024-10-14 17:16:20.128 27609-27609 dalvikvm com.cmri.aijia.edu W DexOpt: pure-abstract method 'close' in Landroid/media/MediaDataSource;
2024-10-14 17:16:20.128 27609-27609 dalvikvm com.cmri.aijia.edu I Could not find method android.media.MediaDataSource.close, referenced from method tv.danmaku.ijk.media.player.AndroidMediaPlayer.releaseMediaDataSource
2024-10-14 17:16:20.128 27609-27609 dalvikvm com.cmri.aijia.edu W VFY: unable to resolve virtual method 198: Landroid/media/MediaDataSource;.close ()V
2024-10-14 17:16:20.128 27609-27609 dalvikvm com.cmri.aijia.edu W VFY: rejecting opcode 0x6e at 0x0004
2024-10-14 17:16:20.129 27609-27609 dalvikvm com.cmri.aijia.edu W VFY: rejected Ltv/danmaku/ijk/media/player/AndroidMediaPlayer;.releaseMediaDataSource ()V
2024-10-14 17:16:20.129 27609-27609 dalvikvm com.cmri.aijia.edu W Verifier rejected class Ltv/danmaku/ijk/media/player/AndroidMediaPlayer;
2024-10-14 17:16:22.836 27609-27609 AndroidRuntime com.cmri.aijia.edu D Shutting down VM
2024-10-14 17:16:22.836 27609-27609 dalvikvm com.cmri.aijia.edu W threadid=1: thread exiting with uncaught exception (group=0x41867bc0)
2024-10-14 17:16:22.854 27609-27609 System.err com.cmri.aijia.edu W java.lang.VerifyError: tv/danmaku/ijk/media/player/AndroidMediaPlayer
2024-10-14 17:16:22.855 27609-27733 AJBasePlayer com.cmri.aijia.edu D [, , 0]:{Thread:Timer-1}0 KB/s
2024-10-14 17:16:22.866 27609-27609 System.err com.cmri.aijia.edu W at com.shuyu.gsyvideoplayer.player.SystemPlayerManager.initVideoPlayer(SystemPlayerManager.java:55)
2024-10-14 17:16:22.874 27609-27609 System.err com.cmri.aijia.edu W at com.shuyu.gsyvideoplayer.GSYVideoBaseManager.initVideo(GSYVideoBaseManager.java:624)
2024-10-14 17:16:22.883 27609-27609 System.err com.cmri.aijia.edu W at com.shuyu.gsyvideoplayer.GSYVideoBaseManager.access$000(GSYVideoBaseManager.java:39)
2024-10-14 17:16:22.892 27609-27609 System.err com.cmri.aijia.edu W at com.shuyu.gsyvideoplayer.GSYVideoBaseManager$MediaHandler.handleMessage(GSYVideoBaseManager.java:581)
2024-10-14 17:16:22.900 27609-27609 System.err com.cmri.aijia.edu W at android.os.Handler.dispatchMessage(Handler.java:102)
2024-10-14 17:16:22.906 27609-27609 System.err com.cmri.aijia.edu W at android.os.Looper.loop(Looper.java:136)
2024-10-14 17:16:22.911 27609-27609 System.err com.cmri.aijia.edu W at android.app.ActivityThread.main(ActivityThread.java:5060)
2024-10-14 17:16:22.918 27609-27609 System.err com.cmri.aijia.edu W at java.lang.reflect.Method.invokeNative(Native Method)
2024-10-14 17:16:22.923 27609-27609 System.err com.cmri.aijia.edu W at java.lang.reflect.Method.invoke(Method.java:515)
2024-10-14 17:16:22.931 27609-27609 System.err com.cmri.aijia.edu W at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:861)
2024-10-14 17:16:22.936 27609-27609 System.err com.cmri.aijia.edu W at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:677)
2024-10-14 17:16:22.937 27609-27609 System.err com.cmri.aijia.edu W at dalvik.system.NativeStart.main(Native Method)
2024-10-14 17:16:22.975 27609-27609 CrashHandlers com.cmri.aijia.edu D [, , 0]:{Thread:main}CrashHandler error info
tv/danmaku/ijk/media/player/AndroidMediaPlayer
java.lang.VerifyError: tv/danmaku/ijk/media/player/AndroidMediaPlayer
at com.shuyu.gsyvideoplayer.player.SystemPlayerManager.initVideoPlayer(SystemPlayerManager.java:55)
at com.shuyu.gsyvideoplayer.GSYVideoBaseManager.initVideo(GSYVideoBaseManager.java:624)
at com.shuyu.gsyvideoplayer.GSYVideoBaseManager.access$000(GSYVideoBaseManager.java:39)
at com.shuyu.gsyvideoplayer.GSYVideoBaseManager$MediaHandler.handleMessage(GSYVideoBaseManager.java:581)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5060)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:861)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:677)
at dalvik.system.NativeStart.main(Native Method)
2024-10-14 17:16:22.976 27609-27609
混淆方案: -keep class com.shuyu.gsyvideoplayer.video.** { ; } -dontwarn com.shuyu.gsyvideoplayer.video.* -keep class com.shuyu.gsyvideoplayer.video.base.** { ; } -dontwarn com.shuyu.gsyvideoplayer.video.base.* -keep class com.shuyu.gsyvideoplayer.utils.** { ; } -dontwarn com.shuyu.gsyvideoplayer.utils.* -keep class com.shuyu.gsyvideoplayer.player.** {*;} -dontwarn com.shuyu.gsyvideoplayer.player.** -keep class tv.danmaku.ijk.** { ; } -dontwarn tv.danmaku.ijk.*
-keep class androidx.media3.** {*;} -keep interface androidx.media3.**
-keep class android.media.** {*;} -keep interface android.media.**
-keep class tv.danmaku.ijk.media.player.AndroidMediaPlayer {*;}
-keep class com.google.android.exoplayer2.** {*;} -keep interface com.google.android.exoplayer2.**
问题机型/系统:
机顶盒4.4版本
GSY依赖版本
最新的900版本
首页的混淆规则都加了?
感谢大大回复,都加了,我直接copy的首页的介绍的混淆
首页的混淆规则都加了?
感谢大佬回复,都加了,我就是复制的首页的
我这边测试正常,如果真不行,你看那个方法没有自己keep下就好了,看起来是 IMediaDataSource 的 close ? 或者 MediaDataSourceProxy 的?
只有删除掉releaseMediaDataSource中的Mediasouce的close方法才能类才能验证通过,任何判断都会让AndroidMediaPlayer这个类出现VerifyError,有遇到过吗
只有删除掉releaseMediaDataSource中的Mediasouce的close方法才能类才能验证通过,任何判断都会让AndroidMediaPlayer这个类出现VerifyError,有遇到过吗
我怀疑是不是因为他内部的 static MediaDataSourceProxy 导致的,因为 AndroidMediaPlayer 内的 mMediaDataSource 的实现是 MediaDataSourceProxy,你试试:
-keep class tv.danmaku.ijk.media.player.AndroidMediaPlayer {*;}
-keep class tv.danmaku.ijk.media.player.AndroidMediaPlayer$MediaDataSourceProxy {*;}
我怀疑是不是因为他内部的 static MediaDataSourceProxy 导致的,因为 AndroidMediaPlayer 内的 mMediaDataSource 的实现是 MediaDataSourceProxy,你试试:
-keep class tv.danmaku.ijk.media.player.AndroidMediaPlayer {*;} -keep class tv.danmaku.ijk.media.player.AndroidMediaPlayer$MediaDataSourceProxy {*;}
不行的,我也怀疑过是不是内部类的问题,并且尝试keep内部类,依然存在问题
那是在不知道你什么情况了,我这边测试没有问题