Flutter包执行flutter pub get遇Android embedding弃用错误如何解决?
解决Flutter包执行
flutter pub get时的Android Embedding V2错误 你遇到的问题本质是:虽然开发的是Flutter包,但执行flutter pub get时,实际是包内的example测试应用触发了旧版Android Embedding的报错(插件package_info_plus要求使用V2嵌入)。针对Flutter包的场景,解决步骤如下:
1. 优先处理包内的example应用
Flutter包默认包含example目录用于测试,这个目录是完整的Flutter应用,需迁移到V2嵌入:
- 进入包根目录下的
example/android文件夹,按照官方迁移逻辑更新该应用(注意是更新example,而非包本身的android目录) - 若手动迁移麻烦,直接删除原
example目录,在包根目录执行命令重新生成:
新生成的example应用默认使用V2嵌入,可直接满足flutter create examplepackage_info_plus的要求。
2. 检查包本身的Android插件注册逻辑
如果你的包包含自定义Android原生代码,需确保插件注册适配V2嵌入:
- 删除旧的
GeneratedPluginRegistrant.java中过时的registerWith(PluginRegistry)方法 - 改为实现
FlutterPlugin接口,通过onAttachedToEngine方法完成注册,示例代码:public class YourPlugin implements FlutterPlugin { @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { // 在这里注册插件通道等逻辑 MethodChannel channel = new MethodChannel(binding.getBinaryMessenger(), "your_plugin_channel"); channel.setMethodCallHandler(new YourMethodCallHandler()); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { // 清理资源 } } - 同时在包的
android/src/main/AndroidManifest.xml中添加插件注册声明(若未添加):<manifest> <application> <meta-data android:name="flutterEmbedding" android:value="2" /> <activity android:name="io.flutter.embedding.android.FlutterActivity" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> </activity> </application> </manifest>
3. 重新执行依赖获取
完成上述操作后,回到包根目录,重新执行:
flutter pub get
内容的提问来源于stack exchange,提问作者JakesMD
相关产品推荐
相关产品推荐

