什么是跨平台?

在不同操作系统,不同cpu 架构都能执行. x86 的winodws 能在arm架构的cpu 能运行
比较狭义一点比如同一段代码能在 mac windows linux 执行.
跨平台主要关键点
1.抹平平台差异
2.性能

抹平平台差异

1.每个平台都有浏览器, 每个平台的浏览器都兼容 现行的html css 标准 ,主动接纳了这种差异,不主动不行啊,连网页都看不了,根本没有起来的机会啊. 也可以说是chrome 主动在不同的操作系统下提供出了统一的接口
2.是平台本来没有对应的实现,比如rn, 是先有DSL, 使用了javascriptcore 在不同平台先执行了 ,然后出现了 有人专门针对不同的平台对接了对应的实现.

上面这两种 都需要专门有人去维护去抹平平台差异.

当然 从系统的运行机制来说 (我们是如何看到不同平台展示的东西,比如我们在看显示器的时候,看的是什么).
当vsync信号发布,特定组件确定当前这一帧需要显示的大小,位置,以及图案,在同一块canvs上 2d 绘制 ,然后提交给渲染引擎(通常在另一个线程),然后绘制到surfaceview ,然后绘制到离屏缓冲区,
那么思路来了, 我们是不是只要接管了这个渲染流程是不是就很牛逼了,我不和你说我要怎么展示 ,我直接把结果给你 ,你帮我绘制一下就好了 .这就是flutter.
但是flutter在只是接管了渲染系统,那么我需要蓝牙怎么办 ,虽然每个平台都有对应的硬件,但是你想直接调用硬件 ,系统不允许啊. 还是需要桥接本地平台. 这就涉及到另一个问题,性能

性能

跨平台为什么性能不好,因为需要桥接本地代码,这个时候需要实现数据的序列化和反序列化.这个是非常损耗性能的. 当然 本身上层运行的aot 和jit 也是比较关键的.