You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ExoPlayer开发Android视频播放器时触发NoSuchMethodError导致应用崩溃问题

问题根因

你遇到的java.lang.NoSuchMethodError错误是ExoPlayer版本不兼容导致的,通常是项目依赖的ExoPlayer核心库和UI组件库(exoplayer-ui)版本不一致,或者旧版API写法搭配了新版ExoPlayer导致接口被移除。

解决方案

1. 统一依赖版本

打开项目模块级的build.gradle文件,确保所有exoplayer相关依赖的版本完全一致,示例如下:

// 所有exoplayer依赖版本必须完全相同,此处以2.18.1为例
implementation "com.google.android.exoplayer:exoplayer-core:2.18.1"
implementation "com.google.android.exoplayer:exoplayer-ui:2.18.1"
implementation "com.google.android.exoplayer:exoplayer-hls:2.18.1"

如果不想修改现有代码,可以将所有ExoPlayer依赖统一降级到2.15.1版本,该版本仍支持你当前使用的ExoPlayerFactory和旧版EventListener接口。

2. 修正新版API写法

如果你使用2.16及以上版本的ExoPlayer,原有ExoPlayerFactory、监听注册等API已经废弃,修正后的iniPlayer代码如下:

@Override
protected void onStart() {
    super.onStart();
    iniPlayer();
}

private void iniPlayer() {
    String videoUrl = "https://torrent243454.herokuapp.com/stream/magnet%3A%3Fxt%3Durn%3Abtih%3A65046701a31f23b2bb7e6d38537ca8498970d1ff%26dn%3DMortal.Kombat.Legends.Battle.of.the.Realms.2021.HDRip.XviD.AC3-EVO%26xl%3D1453573916%26tr%3Dudp%253A%252F%252Ftracker.opentrackr.org%3A1337%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.internetwarriors.net%3A1337%2Fannounce%26tr%3Dudp%253A%252F%252Fopentor.org%3A2710%2Fannounce%26tr%3Dudp%253A%252F%252F9.rarbg.me%3A2980%2Fannounce%26tr%3Dudp%253A%252F%252F9.rarbg.to%3A2940%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.uw0.xyz%3A6969%2Fannounce%26tr%3Dudp%253A%252F%252Fopen.stealth.si%3A80%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.torrent.eu.org%3A451%2Fannounce%26tr%3Dudp%253A%252F%252Fipv4.tracker.harry.lu%3A80%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.openbittorrent.com%3A1337%2Fannounce%26tr%3Dudp%253A%252F%252Fexodus.desync.com%3A6969%2Fannounce%26tr%3Dudp%253A%252F%252Fexplodie.org%3A6969%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.tiny-vps.com%3A6969%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.moeking.me%3A6969%2Fannounce%26tr%3Dudp%253A%252F%252Ftracker.cyberia.is%3A6969%2Fannounce?file=Mortal.Kombat.Legends.Battle.of.the.Realms.2021.HDRip.XviD.AC3-EVO%2FMortal.Kombat.Legends.Battle.of.the.Realms.2021.HDRip.XviD.AC3-EVO.avi";
    Uri uri = Uri.parse(videoUrl);
    SimpleExoPlayerView playerView = findViewById(R.id.player_view);
    
    // 新版ExoPlayer实例创建方式
    TrackSelector trackSelector = new DefaultTrackSelector(this);
    SimpleExoPlayer simpleExoPlayer1 = new SimpleExoPlayer.Builder(this)
            .setTrackSelector(trackSelector)
            .build();
    
    DefaultHttpDataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory()
            .setUserAgent("exoplayer_video");
    MediaSource mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory)
            .createMediaSource(uri);

    playerView.setPlayer(simpleExoPlayer1);
    playerView.setKeepScreenOn(true);
    simpleExoPlayer1.setMediaSource(mediaSource);
    simpleExoPlayer1.prepare();
    simpleExoPlayer1.setPlayWhenReady(true);
    
    // 新版事件监听写法
    simpleExoPlayer1.addListener(new Player.Listener() {
        @Override
        public void onTimelineChanged(Timeline timeline, int reason) {
            Player.Listener.super.onTimelineChanged(timeline, reason);
        }

        @Override
        public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
            Player.Listener.super.onTracksChanged(trackGroups, trackSelections);
        }

        @Override
        public void onIsLoadingChanged(boolean isLoading) {
            Player.Listener.super.onIsLoadingChanged(isLoading);
        }

        @Override
        public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
            if (playbackState == Player.STATE_BUFFERING){
                // 自定义缓冲逻辑
            }
        }

        @Override
        public void onPlayerError(PlaybackException error) {
            Player.Listener.super.onPlayerError(error);
        }
    });
}

3. 清理缓存重构建

修改完成后,依次点击Android Studio菜单的Build -> Clean Project、Rebuild Project,完全卸载测试设备上的旧应用后重新安装运行,避免旧缓存影响。

内容的提问来源于stack exchange,提问作者IMBROS TV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:21:00