feat: Android 4.2 兼容改造
- minSdk 19 -> 17(config.gradle) - OkHttp 4.12 -> 3.12.0(app build.gradle 新老双栈统一锁定) - Retrofit 2.11 -> 2.6.0 + Coroutines 1.8.1 -> 1.6.4 - SignRequestPolicy: toHttpUrlOrNull -> HttpUrl.parse(3.12 API 适配) - HeaderInterceptor/SignAuthenticator: 属性访问改方法调用(url()/request()/priorResponse()) - VideoViewTv: SDK_INT<19 强制切 AndroidMediaPlayer 内核 + instanceof 短路保护 - AndroidManifest: overrideLibrary OAID 4.1.3(minSdk 19) - 全局 resolutionStrategy.force 锁定 OkHttp/Retrofit 版本
This commit is contained in:
@@ -328,6 +328,11 @@ public class VideoViewTv extends FrameLayout implements MediaPlayerControl {
|
||||
}
|
||||
|
||||
private void initVideoView() {
|
||||
// Android 4.2 兼容:ExoPlayer 2.19 官方支持 API 19+,低版本强制切系统 MediaPlayer 内核,
|
||||
// 避免 PkExoMediaPlayer/ExoPlayer 类在 Dalvik 上触发 VerifyError
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
|
||||
terminalType = 0;
|
||||
}
|
||||
if (!checkAudioCapability()){
|
||||
terminalType = 0;
|
||||
}
|
||||
@@ -562,7 +567,9 @@ public class VideoViewTv extends FrameLayout implements MediaPlayerControl {
|
||||
reset();
|
||||
mMediaPlayer.release();
|
||||
if(mMediaPlayer != null){
|
||||
if(mMediaPlayer instanceof PkExoMediaPlayer){
|
||||
// terminalType 短路:非 Exo 内核时跳过 instanceof,避免 Dalvik 解析
|
||||
// PkExoMediaPlayer 引发的 ExoPlayer 类加载 VerifyError(Android 4.2)
|
||||
if(terminalType == 2 && mMediaPlayer instanceof PkExoMediaPlayer){
|
||||
PkExoMediaPlayer pkExoMediaPlayer = (PkExoMediaPlayer)mMediaPlayer;
|
||||
pkExoMediaPlayer.resetListeners();
|
||||
}
|
||||
@@ -1491,7 +1498,8 @@ public class VideoViewTv extends FrameLayout implements MediaPlayerControl {
|
||||
onPauseListener = null;
|
||||
onResumeListener = null;
|
||||
if(mMediaPlayer != null){
|
||||
if(mMediaPlayer instanceof PkExoMediaPlayer){
|
||||
// terminalType 短路:同上,避免非 Exo 内核时 Dalvik 触发 PkExoMediaPlayer 类解析
|
||||
if(terminalType == 2 && mMediaPlayer instanceof PkExoMediaPlayer){
|
||||
PkExoMediaPlayer pkExoMediaPlayer = (PkExoMediaPlayer)mMediaPlayer;
|
||||
pkExoMediaPlayer.resetListeners();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user