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:
zhaogd
2026-08-25 11:35:34 +08:00
parent d11464d466
commit fca025383c
7 changed files with 46 additions and 22 deletions

View File

@@ -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();
}