美文网首页
大型连续剧之Flutter采坑记

大型连续剧之Flutter采坑记

作者: 东也_ | 来源:发表于2021-07-20 11:05 被阅读0次

1. 两个插件之间冲突(target has frameworks with conflicting names)

  • 问题背景:本地插件和项目引用的插件中引用的插件之间有冲突,如:本地插件amap_location_flutter_plugin和远程插件amap_map_fluttify

  • 解决思路:
    1、将amap_map_fluttify放到amap_location_flutter_plugin中的dependency_overrides下面,如果需要,可以在本地插件里面将amap_map_fluttify内容export到项目中使用;最终发现在iOS中pod根本不会下载map的库,这个overrides只对当前module有效,所以该思路不通;

    2、将两个插件手动合并成一个插件来避免冲突,我是将amap_location_flutter_plugin中的内容放到了fluttify中,因为location中的内容较少也比较简单。在合并的过程中碰到了两个问题:1. 注册插件的问题;2. 包引用的问题;这个两个问题主要在Android项目上。在iOS很好解决因为我本身是iOS开发。iOS里面引用包的方式变成本地引用的方式就好,注册就直接在map中的register方法中调用location中plugin类的register就好了; 在Android里面就有意思了,因为注册插件的时候有两种方式,第一种是用register,第二种就是onAttachedToEngine,而安卓就是用的第二种,这好像是新版本的方式,也是在map的插件类中的onAttachedToEngine中binding.getFlutterEngine().getPlugins().add(new AmapLocationFlutterPlugin()); 关于包引用在Android根本不用改,很丝滑;
    在解决插件注册的时候了解到,flutter和原生交互的通道包括MethodChannel和EventChannel,前者是双向的交互,后者是单向的,既只支持原生端到flutter端,使用场景比如定位的实时获取,原生端将位置信息不停的将数据发送给flutter;

2. 将flutter老版本项目升级到2.0以上

  • 大概是以下几步:
    1. 主要是适配非空安全,这个在项目运行配置里面additional run args: --no-sound-null-safety;
    2. 升级一些版本低的插件,pub get的时候会有提示,还有一种办法就是在项目目录下用命令flutter pub add 库名,这种方式会自动下载一个合适的版本;
    3. 其他问题,比如我就碰到了问题1的插件冲突问题;

不断积累

相关文章

网友评论

      本文标题:大型连续剧之Flutter采坑记

      本文链接:https://www.haomeiwen.com/subject/kwqmpltx.html