Flutter just_audio在Android构建中无法加载音频资源求助
解决Flutter音频Asset在Android API33加载失败的问题
问题复现
代码中初始化音频:
void initState() { _myAudioPlayer = AudioPlayer()..setAsset("electric.mp3"); super.initState(); }
pubspec.yaml配置:
flutter: assets: - assets/electric.mp3
Web端正常加载,Android API33模拟器/真机报错:
E/ExoPlayerImplInternal( 8300): Playback error E/ExoPlayerImplInternal( 8300): com.google.android.exoplayer2.ExoPlaybackException: Source error E/flutter ( 8260): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Unable to load asset: "electric.mp3". E/flutter ( 8260): The asset does not exist or has empty data.
解决步骤
修正Asset路径
代码中setAsset的路径需要和pubspec.yaml里的配置一致,必须带assets/前缀:void initState() { _myAudioPlayer = AudioPlayer()..setAsset("assets/electric.mp3"); super.initState(); }清理项目缓存并重建
执行以下命令清除缓存,重新打包asset资源:flutter clean flutter pub get flutter run验证文件存在与大小写
Android系统严格区分文件名大小写,Web端不区分。确认项目根目录下assets/electric.mp3文件真实存在,且文件名大小写和代码、pubspec中的完全匹配。检查pubspec.yaml缩进
确保assets条目缩进正确(使用2个空格,与上级flutter:对齐),错误缩进会导致Flutter无法识别asset配置。延迟异步初始化
避免在initState同步调用异步方法,改为延迟初始化确保asset资源加载完成:void initState() { super.initState(); Future.delayed(Duration.zero, () async { _myAudioPlayer = AudioPlayer(); await _myAudioPlayer.setAsset("assets/electric.mp3"); }); }
内容的提问来源于stack exchange,提问作者byraychen
相关产品推荐
相关产品推荐

