Android开发教程入门,揭秘ARouter路由机制

为什么说 Flutter 将是未来的主流跨平台开发框架?

Google 的 Flutter 开发应用的体验和流畅度基本和原生体验一致,感觉不到不流畅和卡顿。

我们知道在移动平台上,原生应用的体验最好、流畅度最高、性能也最好。而目前的跨平台技术和框架的流畅度和体验远远达不到原生的体验,多少都会卡顿和丢帧,但是 Google 官方说 Flutter 可以达到120 FPS。

Flutter 最出色的地方就是自建了绘制引擎,使得跨平台开发一套代码可以创造出和原生应用相同的体验。并且 Flutter 开发效率非常高,SDK 里所有的布局、控件都组件化,采用 React 方式。

Flutter 的开发不仅仅局限于移动跨平台,目前已经支持 Web 开发、后端开发、PC 桌面应用开发(内测中)、嵌入式开发(内测中)。 这也是 Flutter 变得越来越受关注,越来越多大公司和开发者进行使用的原因之一。

Flutter 支持多种开发工具的插件化使用,这就大大的丰富了各种开发工具可以进行 Flutter 的开发和调试,也满足了不同开发者的开发习惯。

同时 Flutter 不但做到了一套代码逻辑实现 Android 和 iOS 平台的跨平台运行,而且无需像 React Native 等技术那样,部分和原生交互的逻辑需要写两套代码逻辑,Flutter 只需写一套代码,大部分功能官方 SDK 里已经支持,并在不断更新拓展。而且如果需要一些与原生交互的部分,都是通过插件化形式使用,依然是一套代码逻辑多平台兼容。后面将会详细讲解。

接下来,我们就开始我们的认识 Flutter 技术之旅吧。本文将主要介绍:

  • Flutter 的诞生
  • 目前各种跨平台方案的对比
  • Flutter 特点
  • Flutter 框架结构
  • Flutter社区活跃度和趋势

1 Flutter 的诞生

( 图片来自 Google 开发者官方 )

Flutter是 Google 于 2015 年 5 月 3 日推出的免费开源跨平台开发框架,可以快速开发 Android 和 iOS 应用,同时也将是未来的 Google Fuchsia OS 下开发应用的主要技术框架。未来的 Flutter 的开发不仅仅局限于移动跨平台,目前已经支持 Web 开发、后端开发、PC 桌面应用开发(内测中)、嵌入式开发(内测中)。

Flutter 的第一个版本 SDK 运行在 Android 操作系统上,被称作“Sky”。第一个开发者版本在 2015 年的 Flutter 开发者会议上被公布,并且对外宣称 Flutter 的开发的应用目标为实现 120FPS的渲染性能,原生的渲染性能一般为 80FPS。由于之前一直是开发版本,所以 Flutter 不温不火,只有少数的一些公司和 Google 内部在尝试使用。

终于在 2018 年 12 月 5 日,Google Flutter 团队正式发布了 Flutter 1.0 正式版,正式版的发布意味着 Flutter 在经过开发、测试、应用上已经基本上稳定和满足大部分开发需求了。这也使得Flutter 在发布正式版后,更多的大公司、开发者纷纷转型使用和学习 Flutter 进行跨平台应用的开发。

目前在 Google 内部,Flutter 已经被广泛用于多个产品,比如 Google Ads 已经将其产品的 iOS 版本和 Android 版本转向使用 Flutter。在正式版本之前,全世界已经有多个公司开始使用 Flutter 来开发应用,包括 Abbey Road Studios、阿里巴巴、Capital One、Groupon、Hamilton、京东、Philips Hue、Reflectly 以及腾讯等。而正式版的功能基本上已经比较完善,其他的扩展更强大的功能 Google 官方也正在规划扩展开发。目前 Flutter 1.5 稳定版已经于 2019 年 5 月 8 号发布,这样的更新频率,给更多的开发者和公司增加了动力。Flutter 势必也将成为未来的跨平台开发主流趋势!

接下来回顾下 2018 年和 2019 年 Flutter 的发展情况:

  • 2 月底在世界移动大会 (MWC)上宣布了第一个 Beta 版发布;
  • 5 月的 Google I/O 大会上发布了 Beta 3;
  • 6 月底的 GMTC 宣布了首个发布预览版;
  • 9 月的谷歌开发者大会(Google Developer Days)上,发布预览版 2。
  • 12 月宣布发布正式稳定 1.0 版;
  • 2019年 2 月宣布发布稳定版 1.2 版本 SDK。
  • 2019年 5 月宣布发布稳定版 1.5 版本 SDK。

作为 Flutter 1.0 之后的首次更新, Flutter SDK 1.2 稳定版围绕以下几点进行了重点优化与改进:

  • 提升核心框架的稳定性、性能和质量;
  • 改进现有 Widget 视觉效果和功能;
  • 为 Flutter 开发者提供全新的基于 Web 的调试工具。

目前 Flutter 的社区非常活跃,Flutter 在 Github 最受欢迎的开源软件中排名前 50,国内也有大量的开发者开始使用 Flutter 构建跨平台 (Android & iOS) 的应用,如:阿里巴巴、腾讯、京东等都使用 Flutter 发布了自己的应用。

Google 官方 Flutter 团队计划,未来也将支持 Flutter Web 和 Flutter PC 的应用移植开发,让我们拭目以待吧!

2 目前各种跨平台方案的对比

目前我们在开发应用时,需要同时兼容 iOS 和 Android 两种平台时有两种技术选择:走原生开发路线,把界面和逻辑在不同平台分别实现;抑或用同一套代码兼容多个平台,但这往往意味着运行速度和产品体验的损失。除了原生外,目前跨平台技术一般是混合开发,如采用 H5、React Native、Weex、小程序等技术实现跨平台应用。不过这些或多或少都能感觉到卡顿和体验不流畅,并且开发和学习成本非常高,而且都有各自的局限性。

Flutter 的出现就是为我们提供了一套两全其美的解决方案:既能用原生代码直接调用的方式来加速图形渲染和 UI 绘制,又能同时运行在两大主流移动操作系统上,并且体验和流畅度和原生基本一致、开发效率也非常高、学习难度和成本低。

那么接下来看下几种方案的对比情况:

技术性能开发效率渲染方式学习成本可扩展性
Flutter高,接近原生体验Skia 高性能自绘引擎低,Widget 组件化高,采用插件化的库进行扩展
RN/Weex/小程序有延迟,一般一般,复杂、效率低JS 驱动原生渲染高,复杂一般
原生应用一般原生渲染高,需要学习 Android 和 iOS 原生 API

从上面的对比可以看出,Flutter 的优势明显:高体验度、高开发效率、低学习成本、高可扩展性,未来 Google Flutter 团队还将使 Flutter 支持 PC 和 Web 的跨平台开发,真正全平台。 在 Flutter 1.0 正式版本尚未推出之前,已经有成百上千的基于 Flutter 开发的应用在 Apple Store 和 Google Play 上架,相信 Flutter 将会被越来越多的开发者和公司所接受和采用。

3 Flutter 特点

Flutter 是一个框架,基于 Dart 语言编写,语言风格和 React 很像。Flutter 里几乎都是采用组件的形式进行构建应用和功能的,组件采用现代响应式框架构建,中心思想是用组件(Widget)构建你的 UI。

一切对象都是组件,Flutter 可以说是全新的技术和平台框架,学习和开发起来并不难,开发应用的效率也相对于原生提升了很多,并且运行速度和原生几乎没太大差别,远远高于 HTML 的应用的渲染速度。Flutter 的引擎使用 C++ 开发,基础库由 Dart 编写,提供了用 Flutter 构建应用所需的基本的类和函数。

我们看下 Flutter 官方的架构图:

![](http://upload-images.jianshu.io/upload_images/129

点击领取完整开源项目《安卓学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

24865-002f86babfe13eae)

( Flutter 官方架构图 - 来自 Flutter 官方网站 )

可以看出核心引擎是使用 C++ 编写,上层采用 Dart 语言编写的 SDK,采用 React 风格组件化方式。并且提供了 Material 和 Cupertino 两套风格的 UI Widget,使用起来非常方便。

那么接下来我们详细了解下 Flutter 的特点:

  • Flutter 的一个重要的特点就是速度快。它基于 Skia 2D 硬件加速图形引擎,该引擎也同样用在了 Chrome 和 Android 平台。媲美原生应用的速度,让用户体验和流畅度做到更好。Flutter 的代码基于 Dart 平台,可以被编译成 iOS 和 Android 平台上 32 位和 64 位的 ARM 代码。
  • Flutter 非常高效。Flutter 引入了 Stateful Hot Reload(保持应用状态的热重载),这个革命性的新特性可以让移动开发者和设计师们时时快速预览应用程序。通过 Stateful Hot Reload,无需重新启动应用,就可以在程序运行的时候直接看到代码修改之后的效果。在Flutter官方的用户反馈中,很多开发者表示这个特性使得开发效率提升了三倍以上。
  • Flutter 是开放的、开源的。Flutter 是一个基于 BSD-style 许可的开源项目,全球数百位开发者在为Flutter贡献代码。Flutter 的插件生态系统平台也已经非常的丰富,有数千款插件已经发布,避免了重复造轮子。由于 Flutter 应用程序使用标准的 Android 和 iOS 的编译打包工具 (build tools),因此它的开放性还体现在我们可以使用原生开发资源和技术。比如,我们依然可以在 Android 上使用 Kotlin 或者 Java,在 IOS 上使用 Swift 或者 Objective-C 来写逻辑或者界面,使得可以Flutter和原生混合开发。
  • Flutter 提供了两套 UI Widget 风格库:Material 和 Cupertino,这使得我们可以方便的快速构建 Android 和 iOS 不同平台风格的应用,大大提升了开发效率。组件化开发风格也使得绘制UI的效率大大提升,学习成本也降低了很多。
  • Flutter 支持多种开发工具进行开发,比如 Visual Studio Code、Android Studio、IntelliJ 或其他开发工具,只需要安装相关的插件即可。

最后看一下《Android框架体系架构(高级UI+FrameWork源码)》学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!

章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!

[外链图片转存中…(img-zJLvyG2l-1709644109059)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512863.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8个优秀的CSS实践,web开发语言

突破困境: 1. 提升学历 前端找工作,学历重要吗? 重要。谁要是告诉你不重要那一定是在骗你。现实情况是大专吃紧,本科够用,硕士占优,大专以下找到工作靠运气和真实力。 学历是硬伤,已经毕业的你…

Java知识点总结(二)

ID生成策略 主键自增id 主键自动增长,不用手工设值、数字型,占用空间小、检索非常有利、有顺序,不会重复,但在迁移旧数据是会出现id冲突 UUID 基于时间,计数器和地址生成32位的id redis生成id 原子性自增,并…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:组件标识)

id为组件的唯一标识,在整个应用内唯一。本模块提供组件标识相关接口,可以获取指定id组件的属性,也提供向指定id组件发送事件的功能。 说明: 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容…

android开发教程百度网盘,高并发系统基础篇

展望未来 操作系统 移动操作系统的演变过程,从按键交互的塞班功能机到触摸屏交互的Android/IOS智能机,从小屏幕手机到全面屏、刘海屏、水滴屏。任何系统无非干两件事:输入和输出,接收到外部输入信号后经过操作系统处理后输出信息…

嵌入式工程师函数变量,常用的命名规则(参考学习)

很多工程师不注重平时编码习惯,比如命名规则,一会大写、一会小写,一会中文拼音,一会下划线等,导致自己写的代码自己都看不懂了。 今天就来分享一点关于软件代码常见的几种命名规则。 匈牙利命名法 匈牙利命名法广泛应…

关于我使用numpy.random.choice()遇到坑这件事

做仿真时经常使用到随机数,下面是一个场景:使用np.random.choice([0,1],p[0.5,0.5],size1)去进行随机的二选一,假设需要随机选择1000次,为了保证结果的稳健性,对前述过程重复50次,为了保证可复现性&#xf…

Nexus Repository的搭建

一、前言 Nexus Repository用于管理maven的jar包。java开发程序员每天都在使用,但是自己搭建或者管理的就很少。除非你是系统架构师。因为这一套东西,基本是搭建一次就不需要人来搭建了,日后打开界面维护的机会也很少,我们只需要…

嵌入式驱动学习第一周——阻塞IO,进程的休眠与唤醒

前言 本文介绍进程的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦! 行文目录 前言1. 阻塞和非阻…

鸿蒙全栈开发必学!码牛课堂《HarmonyOS NEXT星河版零基础入门到实战教程》,学到就是赚到!

众所周知,码牛发布的免费教程不仅质量高,而且更新快,帮助无数大学生成功踏入IT行业,被同学们亲切的称为“IT启蒙导师”。 今年被称为鸿蒙元年,各行业急缺鸿蒙相关人才,从招聘情况来看,鸿蒙人才…

巨控GRM561/562/563Y系列标准OPCUA客户端协议访问西门子1200PLC

驱动名称: 标准OPCUA客户端协议 描述: 本机作主机,读写其他外部设备数据 ◆寄存器类型: UA寄存器 地址范围: 可用数据类型:[BIT] [INT8] [INT16] [INT32] [INT64] [UINT8] [UINT16] [UINT32] [UINT64] [FLOAT32] [FLOAT64] ◆寄存器类型: 设备特殊寄存器 地址…

Transforms

数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用变换来对数据进行一些处理,使其适合训练。 所有的 TorchVision 数据集都有两个参数: transform 用于修改特征和 target_transform 用于修改标签,它们接受包含转换逻辑的 callables。tor…

表达式和语句

本文参考C Primer Plus进行C语言学习 文章目录 表达式语句 副作用和序列点复合语句(块)类型转换 1.表达式 表达式由运算符和运算对象组成。下面是一些表达式: 4 -6 421 a*(bc/d)/20 q5*2 xq%3 q>3 每个表达式都有一…