Flutter 编写应用, 需要处理的问题.

google出了这个框架,最近更流行了,对比它也rn,weex等其它的实现我发觉,这是google的阴谋.

flutter基于skia图形渲染的,就是它绕过了上层系统提供的sdk,没有了sdk的羁绊,就不会再像rn与weex那样受限了.它最大的特点就是速度,当你的app处于稳定期, 开发速度并不是主要的,用户体验更重要,flutter的体验要明显强过那两者的.

 

另外,flutter还有一个身份,就是它以后肯定是会成为fuchsia系统的框架的,这个系统未来如何打算,是否会流行,都是未知.基于dart,google自己的语言的框架.这些都是它具备的优势.

flutter,与java类似,你在上层编写代码,底层有一套适配工作,适配到各平台,而这平台只需要是skia渲染,这比起jvm这样的限制显然要少很多,你写一个java程序,在ios/windows phone上跑不动,但如果你基于skia的,就没有这问题了.

看上去,google要接管一切了.

 

用flutter构建一个app,有几项事情要做:

1.开发工具与开发环境:

这项已经有不错的体验了,不管是vs还是as都还好.相信用过rn或weex的都会被它的包与更新烦到想杀人的.

2.学习成本.

显然,dart语言的简洁性,让js都望尘莫及.与java的语法接近.

3.面对当前的基础需求,有没有相应的功能实现.

已经实现了主要功能的控件,丰富程度也高.开源的也很多.

4.文档

丰富的文档,google做事还是相当可靠的,不然人家为何8000亿刀市值.

 

这些都是google提供好的东西.

而我们要解决的问题有:

打包, 算不上问题,这个需要做点事.

与本地平台通信, 显然也要基于channel做点事.

so兼容性,据美团程序员的经验所得,似乎有些不太好.

如何实现现有平台上的crash抓取. jni的异常上报,是可以,不过你知道的,这与java的差距不只是一条街.

像android上的过渡绘制,渲染速度,gpu呈现这些都没有工具,对测试是个麻烦.而且android/ios平台上的开发工具,profile工具,估计是很多不可用的. 据美团程序员文章来看,只能自己去修改flutter的rasterizer.cc源码,添加时间统计

Image提供了图片的加载,我刚用了用,明显没有glide这种库的效果,图片缓存估计是要自己实现的.它提供的,也难与java的bitmap共用,如果混合flutter与java/ios,图片的内存占用是个问题.

系统资源与适配,虽然它也提供了类似ios的方式,但如果混合开发,显然会因为资源重复要做一些事.让它读本地平台的资源,

目前我未有app上线,也无法得到一些关于,activity,view回收的这些事,不知道会不会有一些特殊的情况出现.

所有都是控件.它的渲染方式不能以现有的平台思考方法去看待了.flex布局,需要一些时间.

mvp,mvvm,mvc,等这些架构模式的应用,显然成了一个较大的问题,dart这些实现目前比较少,需要有较强的架构能力的人带队,否则一套一套的代码,不好维护.语法简洁,却要避免像js那样的状况,入门简单,一天就可以会写,但写好却非常难.

git上代码更新速度也是杠杠的,这样也会有麻烦的.目前没有稳定版发布,flutter是新的,dart也是新的,只有你不是新的.如果你建了基础设施了,但有一天更新后发现api变了,这对于一个企业应用来说,成本就增加了,对个人,就是业余时间上的一点消耗.

布局,一段一段地递进式代码,看的头晕.真的晕,这种组合控件,形成控件树的方式,是这个结果了,ios上的布局方式与这个相似,android习惯了xml的适配方式,习惯起来要难一些.

后台服务,还有通知等功能,是要平台去实现的.

官方说了,暂时没有与jni通信的机制,不支持ndk开发.

苹果虽然同意上flutter的应用,一旦这生态环境形成,多数人转向它,是不是会修改政策也未知.

不支持3d,但对于目前更多是普通应用,游戏就不用考虑了.

不共享内存,这部分不知道app是如何处理的,如果是一个大型的app,加入它,就表示内存占用又多了.

 

基础设施,就是这些框架的软肋,像rn的基础设施弄好了,你以为好了,却要以后不断地去更新,修改.

如果没有这些基础设施,要用在一个成熟app里,还是要考虑清楚.

 

你可能感兴趣的:(Flutter 编写应用, 需要处理的问题.)