使用flutter_ringtone_player报Android embedding过时错误如何解决
Flutter Android V2 Embedding 兼容报错解决方案
你遇到的报错是因为引入的flutter_ringtone_player: ^3.0.0仅适配了已废弃的Android V1 Embedding,而你使用的高版本Flutter默认使用V2 Embedding导致,可通过以下方案解决:
方案1:更换已适配V2 Embedding的同类型插件(推荐)
flutter_ringtone_player v3.0.0已停止维护,优先选择仍在迭代、且已完成V2适配的铃声播放类插件替换,可直接规避适配问题,无需修改额外代码。
方案2:手动迁移插件适配V2 Embedding(必须使用该版本时使用)
如果业务必须依赖该特定版本插件,可手动完成插件的V2适配,步骤如下:
- 下载
flutter_ringtone_player v3.0.0源码存放到项目根目录的third_party/flutter_ringtone_player文件夹下 - 修改插件
android/src/main/AndroidManifest.xml文件,将嵌入版本标识从1改为2:<meta-data android:name="flutterEmbedding" android:value="2" /> - 修改插件的Android端主类文件(
FlutterRingtonePlayerPlugin.java或对应kotlin文件):
删除旧的PluginRegistry.Registrar相关注册逻辑,改为实现FlutterPlugin接口,将原注册逻辑迁移到onAttachedToEngine生命周期方法中,同时实现onDetachedFromEngine方法做资源释放。 - 修改项目
pubspec.yaml依赖配置,改为指向本地修改后的插件:dependencies: flutter_ringtone_player: path: ./third_party/flutter_ringtone_player
方案3:临时开启旧版插件兼容(仅应急使用)
如果需要临时跑通流程,可在项目android/app/src/main/AndroidManifest.xml的<application>标签下添加兼容配置,临时支持V1插件运行:
<meta-data android:name="io.flutter.embedding.android.ENABLE_LEGACY_PLUGIN_SUPPORT" android:value="true" />
注意:该兼容配置会在后续更高版本Flutter中被移除,仅可作为临时解决方案,不建议长期使用。
内容的提问来源于stack exchange,提问作者Support_R
相关产品推荐
相关产品推荐

