转:初探Flutter,初步解析Flutter,安卓ios统一开发还真有可能。还有谷歌的Fuchsia系统。

Flutter Framework使用Dart语言开发,所以App进程中需要一个Dart运行环境(VM),和Android Art一样,Flutter也对Dart源码做了AOT编译,直接将Dart源码编译成了本地字节码,没有了解释执行的过程,提升执行性能。和Java显著不同的是Dart的"线程"(Isolate)是不共享内存的,各自的堆(Heap)和栈(Stack)都是隔离的,并且是各自独立GC的,彼此之间通过消息通道来通信。Dart天然不存在数据竞争和变量状态同步的问题,整个Flutter Framework Widget的渲染过程都运行在一个isolate中。

p.jpg

用问答形式来快速理解下:

我能使用Flutter开发什么样的APP?

Flutter为运行在Android和iOS的2D APP而优化。Flutter开发的APP既适用于简单场景,比如传递品牌价值,也适用于复杂场景,比如股票交易平台。你可以用Flutter开发出各种有特点的APP,比如相机,地理定位,网络,存储和第三方SDK等待。

Flutter的特别之处在哪里?

Flutter既不使用WebView,也不使用系统的原生控件,而是通过高性能的渲染引擎来画控件。除此之外,Flutter不同是因为它只有C/C++代码编写的单一层,这样开发者更容易控制系统,或者说更容易读取或者修改系统的组件,手势,动画框架和控件等等。

我应该用Flutter开发我的下一个APP产品吗?

Flutter正在开发中并尚未达1.0版,不过API很稳定,你需要的特点基本上已经都提供了,所以最终取决于你自己。

Flutter SDK包括哪些东西?

*深度优化,手机优先的2D渲染引擎以及对文本的极佳支持。
*Rx(响应式编程)框架
*针对Android和iOS丰富的控件集合
*提供单元和集成测试API
*提供连接系统和第三方SDK的API
*使用命令行来create, build,test 和 compile APP

Flutter工作是否需要编辑器或者IDE?

在IntelliJ IDEA(同时支持Ultimate和Community版本)里面安装Flutter插件即可工作。或者你可以结合flutter命令行和支持编辑Dart的编辑器。

Flutter是否包含框架?

是的,有响应式编程框架,灵感来源于React框架。不过该框架是可选的,开发者可以选择使用该框架的一部分或者换一个其他框架。

Flutter用什么技术构建的?

C, C++, Dart, and Skia (2D 渲染引擎)

Flutter如何将代码运行在Android上?

引擎的C/C++代码使用Android的NDK编译的,并且框架的大部分和APP代码作为本地代码(由Dart编译器编译的)运行的。

Flutter如何将代码运行在iOS上?

引擎的C/C++代码使用LLVM编译,并且任何Dart代码都是AOT编译成本地代码。

Flutter使用了我的系统的原生(OEM)控件吗?

没有,Flutter提供了一系列的MD风格和Cuperitno(iOS风格)风格的控件,假如我们复用OEM控件,那么FLutter APP的性能会被这些控件质量所限制。

开发FLutter使用什么语言?

使用Dart语言,其底层图表框架和Dart虚拟机用C/C++实现。

为什么FLutter选择使用Dart?

选择一门编程语言遵循如下标准:
*提高开发效率:一套代码运行在iOS和Android,极大地加速开发。
*面向对象:FLutter需要创建可视的用户体验,所以被选择的语言应该是面向对象编程,并且在构建UI框架上经验丰富。如果选择非面向对象语言就是重复造轮子。
*可以预见的,高性能的:FLutter旨在让开发者开发更迅速,让用户体验更流畅。为了实现该目标,需要每个动画帧能够运行大量的代码,也意味着被选择的语言能同时传递高性能和传递可预见的性能,而不是由于周期性停顿而引起丢帧。
*快速分配内存:FLutter框架使用了Rx响应式编程,它依赖于底层内存分配器(处理小而短的内存分配),所以被选择的语言需要有该特性。
Dart语言满足这四个条件,除此之外,我们还有机会与Dart社区一起近距离工作(不断完善Dart以便在Flutter中更好的使用)。

Flutter引擎有多大?

2017年5月,我们测量了Flutter APP的最小尺寸(没有MD风格,仅仅是Center控件),release版apk接近6.7M。在这个最小apk中,核心引擎大约3.3M,框架和APP代码约1.25M,LICENSE文件(在app.flx中)约55k,必须的Java代码(classes.dex)是40k,还有2.1M的ICU数据。你也可以自己测量你的APP大小,执行flutter build apk 并查看 app/outputs/apk/app-release.apk。

Flutter APP性能究竟如何?

性能很优秀,Flutter是为60fps而设计的,Flutter运行的是编译后的代码,而不是解释性程序,这意味着Flutter能快速启动。

从IDE下载程序到手机需要多长时间?

Flutter有热加载(hot reload)功能,亚秒级加载时间。热加载功能是状态保持的(stateful),也就是说热加载后APP状态是保留的,这意味着你可以快速重复屏幕内容而不需要从主屏幕开始加载。

热加载与完全重启哪里不同?

热加载是注入源代码到运行中的Dart虚拟机,包括增加新的类,和给已有类增加新的方法和变量以及修改已有方法。下面几种情况热加载无效:
*全局变量初始化
*静态变量初始化
*修改main()方法

Flutter APP支持的设备和操作系统版本?

支持的手机操作系统:Android Jelly Bean, v16, 4.1.x or newer, and iOS 8 or newer
手机硬件:64-bit iOS 手机(从iPhone 5S开始), and ARM Android 手机。
支持Android 和iOS物理设备,支持Android和iOS模拟器,不支持平板。

能在已经存在的原生APP中使用Flutter吗?

可以,你可以嵌入Flutter视图到你已经存在的Android和iOSAPP中,相关文档正在开发中。

能访问跨平台的服务和API吗,比如传感器和本地存储?

可以,Flutter支持开发者开箱即用来访问一些平台特性的服务和API。然而,为了避免大多数跨平台API出现的”最小公分母”问题,我们不打算支持所有的跨平台服务和API。最后,鼓励开发者使用Flutter的异步消息来创建平台和第三方API综合体。

控件能够继承和自定义吗?

当然可以,Flutter的控件系统被设计为很容易自定义。Flutter并没有为每一个控件提供很多参数,而是提供创作。比如说,RaisedButton 控件并不是普通button控件的子类,而是Material 控件和GestureDetector控件的组合,前者提供视觉设计,后者提供交互设计。如果你想创建一个自定义视觉设计的button控件,可以与实现了你的视觉设计的GestureDetector控件相结合,比如说CupertinoButton控件。视觉设计与交互设计的结合创作赋予开发者最大的控制权,并且还能复用大量代码。我们已经将复杂的控件分解为多个独立的控件(分别实现视觉,交互和手势),你可以任意组合。

能与手机平台默认编程语言交互吗?

可以,能与开发Android的Java代码和开发iOS的 Objective-C或Swift交互,Flutter APP与手机平台通过BasicMessageChannel传递消息。

Flutter开发中并行和并发问题?

Flutter支持虚拟机的堆隔离,所以支持并行,隔离后通过异步消息通信。暂不支持共享内存并发解决方案。

据国外媒体报道,两年多来,谷歌一个秘而不宣的工程师团队一直致力于Fuchsia项目,他们希望Fuchsia最终将取代占据全球主导地位的移动操作系统Android。传言Flutter也将是fuchsia系统的主要框架,时代在进步啊。

当然若考虑弃用Android和Chrome,谷歌可能面临其他风险。大量独立开发者以及三星、华为和LG等设备制造商都依赖着Android操作系统。Chrome也是许多学校和机构的笔记本电脑所采用的重要操作系统。谷歌不能简单地停止支持Android和Chrome操作系统、指望这个庞大的生态系统能够迅速替换成Fuchsia生态。
另一个风险则来自Fuchsia的技术架构。Android和Chrome操作系统都是基于Linux而构建的。“Linux内核”是Google当前这些操作系统的核心,负责处理智能手机和其他设备的硬件和软件之间的指令。 Fuchsia使用了一种名为Zircon的不同内核,它弃用了Linux中的许多旧技术。这可能使一些现有设备不兼容。

不过,弃用Linux也可能有益于谷歌。这就得谈到谷歌和甲骨文之间冗长而又繁杂的诉讼战了:Android的构建使用了甲骨文拥有的Java技术,而甲骨文指控谷歌窃取这些技术用于推动其移动业务。弃用Linux将在这场诉讼中有利于谷歌。
Fuchsia项目带来的另一个有利之处是,为谷歌的资深开源黑客带来技术挑战。谷歌常常安排一些老员工参与这类需耗费大量时间的复杂项目中,以降低他们跳槽的风险。有人这么描述Fuchsia项目,“这个项目旨在留住高级工程师。”
据最新消息,谷歌向媒体CNET透露,Fuchsia何时能应用于设备中尚不明确,不存在什么“五年计划”。在一份声明中,谷歌把这个操作系统描述为“谷歌正展开的众多实验性开源项目之一”,目前不存在把它用在未来产品的时间表。不过我觉得这也是一个趋势,已谷歌的力量,未来也不是说不能完全洗过来的。


原文:https://blog.csdn.net/hytfly/article/details/81138393

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容