记一次flutter项目分享

华为今天宣布鸿蒙os开源了,做为开发者看完大部分的直播以后,有了一个感慨,这个世界的技术变得真快,另外华为的架构能力,将手机的几大能力如拍摄抽象出来,把大疆无人机当作摄像头,这个创想是很不错了,随着移动式电子设备愈来愈多,跨平台,分布式操做系统是将来的一个重要方向。redux

话说回来,公司有团队最近在作一个语音房app,ui层面使用flutter实现,在初版完成之际作了一次分享。作一下会议笔记,备忘。缓存

遇到了一些坑markdown

  • 文件名命名规范

因为是第一次作flutter项目,加上团队小伙伴开发经验不是很足,在知足需求的同时,对其余以外的事情考虑的比较少,每一个人在建立dart文件的时候考虑的比较少,固然取名字也是一个很专业的事情,好的名字决定了app的一辈子。架构

好比登陆页面,login.dart这样简单粗暴,可是要是登陆涉及到一些校验,须要弹窗,或者输入验证码,或者第三方登陆,或者手机号登陆,密码登陆,另外又有封禁等,难到这些都怼到一个文件内部吗,那login就不能知足要求了,须要拆分login的其余模块,在这一块的考虑不是很周全。app

  • 内存问题

flutter启动就有一百兆的内存,业内也有一些解决方案能够部分下降内存,可是也会有崩溃的风险,这是engine内部实现的问题。iphone

图片加载内存过大,这是开发不当心把几张3M+的图片放进去,内存就暴涨,猜其内部实现没有对Image的图片缓存作大小的如今,好比UIImage内部在图片占用内存达到100M的时候会自动回收一部份内存,使用方式也能够根据path加载路径,这样加载完就释放了。这个问题开发其实也是可控的。分布式

  • 包体大小

flutter的engine默认加进来就多10兆+的大小,问题说大不大说小不小,由于是海外项目,国外不少低端机型,这个engine的大小又是不可避免的,至少在领导看来是应该须要解决的。虽然不少开发不情愿。工具

  • 日志分类

在原生开发的项目到了必定的复杂程度,日志分析必不可少,然而日志的产生就是编写代码的时候本身加上去的,为了给往后分析线上问题提供惟一的途径。性能

日志分类在flutter内部几乎是没有规划,尤为对于小项目。目前flutter的日志都是和原生的日志混在一块儿,若是项目作大,将来跟踪线上问题确定麻烦事情。ui

简单说flutter日志应该单独放在一个文件里面。 格式还和原生格式相似 时间+文件名+行号+方法名+tag+log内容

  • 崩溃收集

flutter崩溃不一样于原生,不会crash,可是会白屏或者一片红,致使用户不得不杀进程才能操做。目前市面有这样的崩溃分析系统,可是不符合公司标准。公司但愿统一一套标准,崩溃自动上报到公司内部崩溃系统,带上堆栈信息,另外能够一键提bug指定给对应的人。 游离于公司系统以外,毕竟在项目管理层面来讲不是个好消息。

  • 性能问题fps、cpu、gpu、耗电量

都是流畅性,跨平台是flutter的优势。

可是也是仅此而已吧,不用太吹嘘,这些是陈词滥调,可是它的cpu,gpu,耗电量对于简单的app来讲固然没什么问题,可是涉及到音视频这些项目,原生来讲都是个问题,对于flutter更是问题,问题不在于语言,而在于分析的工具侧不完善,performance是个不错的选择,可是用惯了原生性能检测的如instrument这种来讲就会以为flutter的很弱了。

举一个痛点问题,音频上麦,在iphonex 半个小时耗电35%,在flutter上麦怎么查。 鸡贼的办法就是丢给sdk去查了。若是之后这些sdk模块用flutter写了,又怎么查。

  • 事件通知处理方式混乱

eventbus和stream均可以处理事件发送接收问题。每一个人也有本身的方式,这个在以前没有一个统一的规范写法,致使混乱。跨模块问题目前在flutter方向有一些好的解决方案,如闲鱼的 fish redux

  • 跨模块封装问题

flutter代码多了,须要考虑重用问题,沉淀一些东西出来,封装和跨模块,解耦是终极问题,其实和语言已经不要紧了,借鉴行业经验,解耦就是须要抽象再抽象,思路不同,写法不同。插拔模式思路,应该就抽象出组件,提供注册的方法,提供反注册的方法,再提供一个取的方法。每一个模块遵循一些协议。

  • 其余项目和sdk的flutter计划

一个音视频的sdk不必定仅仅是这个sdk,它其实也依赖了其余的sdk,如日志,统计,人脸识别,还有其余第三方的。固然所有要用flutter是不现实的。目前来讲,公司是有意愿部分通用的慢慢flutter化,可是过程会很漫长效果也不会理想。

然而对于新的app,使用flutter是没有悬念的事情,从成本上面来讲这是个优点,另外一方面性能上面不损失,就至关于花更少的钱办了一样的事情。固然乐见其成。

  • 后续计划

为了在性能上面不损失,不能依赖flutter作ui这些表层的事情了。必须再深刻下去,减小包体,下降内存,提升cpu使用效率等等。

相关文章
相关标签/搜索