轻量级 Dart 到 Native:DNA超级通道的探索

发表时间: 2020-03-07 08:46


大家好,我是章鱼猫。先告诉大家一个好消息,由于我一直给大家坚持优质的分享,所以得到了微信官方的推荐,最近有很多朋友通过发现公众号的功能,关注到了我的号,我会继续努力,坚持一直为大家提供优质的开源项目分享的。

今天,我给大家分享的一个开源项目是来自于饿了么团队的朋友开源的,确实非常好,所以,我也不得不推荐给大家。

今天给大家分享的这个开源项目,是跟 Flutter 相关的,是 dna 。它是一个 flutter plugin 。一个轻量级的 Dart 到 Native 的超级通道,可直接在 dart 代码中调用原生代码,目前支持安卓 JAVA 和 iOS ObjC. 主要用途:

  • 可以把 channel 中的原生代码写在 dart 代码中;
  • 让原生代码也支持热加载。

大家都知道,Flutter 作为当下最火的跨平台技术,提供了媲美原生性能的 App 体验。Flutter 相比 RN 还自建了自己的 RenderObject 层和 Rendering 实现,“几乎” 彻底解决了多端一致性问题,让 dart 代码真正有效的落实 “一处编写,处处运行”,接近双倍的提升了开发者们的搬砖效率。前面为什么说 "几乎",因为虽然 Flutter 为我们提供了一种快捷构建用户界面和交互的开发方案,但涉及到平台 native 能力的使用,如推送、定位、蓝牙等,也只能 "曲线救国",借助 Channel 实现,这就免不了我们要分别写一部分 native 代码 和 dart 代码做 “技术对接”,略略破坏了这 “完美” 的跨平台一致性。另外,大部分公司的 app 都不是完全重新建立起来的 Flutter app,更多情况下,Flutter 开发的页面及业务最终会以编译产物作为一个模块集成到主工程。主工程原先已经有了大量优秀的工具或业务相关库,如可能是功能强大、做了大量优化的网络库,也可能是一个到处使用的本地缓存库,那么无疑,需要使用的 native 能力范围相比平台自身的能力范围扩大了不少,channel 的定义和使用变得更加高频。

所以,饿了么物流技术团队专门为此提供了解决方案,开源了这个 dna 开源项目。

如果你是 flutter 技术的爱好者,你应该知道它的作用了。

dna 的主要功能特点如下:

主要有以下能力和特性:

  1. 使用 dart 代码 调用 native 任意类的任意方法;意味着要调用 native 代码 可以写在 dart 源文件中,同时大大减少 channel 的数量和创建成本;
  2. 可以组合调用多个 native 方法确定返回值,支持上下文调用,链式调用;
  3. 调用 native 方法的参数直接顺序放到不定长度数组,native 自动顺序为参数解包调用;
  4. 支持 native 代码的 热加载,不中断的开发体验;
  5. 更加简单的代码维护。

关于 dna 的主要介绍,大家还可以看饿了么物流团队写的这篇文章,如下:

文章地址:
https://juejin.im/post/5e5f1d41518825495b29a05b?from=timeline&isappinstalled=0

大家可以点击左下角的“阅读原文”,直接观看。

开源项目地址:
https://github.com/Assuner-Lee/dna

开源项目作者:Assuner

今天的推荐不知道大家喜欢吗?如果你喜欢,请在文章底部留言和点赞,以表示对我的支持,你们的留言、点赞和转发关注是我持续更新的动力哦!