热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Flutter完成10个商业项目后的经验教训,2021大厂安卓面试集合

自从我们交付了第一个应用程序并从客户那里收集到了五星级好评,我们认为,我们应该开始更加积极地向客户推荐Flutter。从2019年5月开始,

自从我们交付了第一个应用程序并从客户那里收集到了五星级好评,我们认为,我们应该开始更加积极地向客户推荐Flutter。从2019年5月开始,我们决定Flutter将是我们移动技术的第一选择。同时,我们将停止在其他不同框架上开发应用程序的工作。

自那时以来,我们已经在Flutter中交付了10多种移动产品,并提供了数十种MVP / PoC。现在,该得出结论了。


Flutter 更快

我们并未在这里讨论理论方法(在此处可以查找Bran De Connick的论文),尽管这也很有趣。后来我们重写了基于 Xamarin 和 ReactJS 的App,将二者进行对比,在后端使用相同API的情况下,与Xamarin(667h vs 987h)相比,我们减少了33%的时间,使用ReactJS(486h vs 704h)相比,则减少了31%的时间。

停下来思考一下这些数字。这些数据回答了如何更快,更便宜地构建移动应用程序(使用Flutter)。随着经济不景气,在预算范围内按时交付产品变得越来越重要。这也意味着对于相同的预算,您可以多交付50%的订单。想象一下,您是一名产品负责人,负责开发团队的优先事项,能够将预算壁垒进一步提高50%。

这将极大地提高团队的创造力和他们交付的工作质量。有关GastroJob案例的详细分析,请查看我们在Flutter Europe Conference上的演讲,或在此处查看我们的案例研究。


平均90%的代码在iOS和Android之间共享。

我们的90%的代码不会在两个本机平台上都编写两次。与本地应用程序开发相比,节省了90%的时间,并且由于一致性和团队围绕一个目标团结而不是分成两个本地流,因此释放了很多创造力。除了共享业务逻辑和用户体验外,我们还可以使用大量现成的库,这些库带来了更多的好处。首先,他们可以通过为应用程序内使用的许多不同事物提供常用逻辑来加快开发过程(例如与服务器(HTTP客户端)的通信,推送通知,安全存储,数据库,动画等)。其次,与许多流行的服务(例如Firebase,地图,支付,社交登录,分析,崩溃报告服务等)集成起来更加容易。因此,只有在编写特定于平台的自定义代码时,才需要编写两次代码(分别适用于iOS和Android)。但是,即使那样,在Dart和本机代码之间进行桥接还是相当合理的 简单,这将在本文后面进行解释。

更重要的是,如果考虑到质量因素,则可以节省更多,因此从长远来看,该应用程序的维护成本也更低。事实上,我们研究在Xamarin,React Native和Flutter构建的所有项目中修复bug的时间,,Flu
tter通常需要8–10%的修复bug时间。而 React Native 需要7–14%,Xamarin 需要11–23%。


与UX / UI的合作从未如此之好

在Flutter项目期间,需要UX / UI设计师和开发人员之间进行合作。可能是因为他们不需要进行这种乏味的本地改编,而使他们的创造力松散。但是,从React Native团队的经验中也可以期望得到同样的结果,事实并非如此。当我们更深入地挖掘时,我们发现Flutter为能够编写漂亮界面的开发人员带来了纯粹的欢乐,以前这些界面会带来额外的负担,从而减慢了步伐。因此,他们更愿意合作,并且我们已经看到结对编程会议开始于设计师与开发人员携手进行现场实验的过程中。经过几次这样的互动,得益于强大的主题引擎,团队能够为该应用程序提供一种自适应的设计语言,该语言不仅在Figma或Adobe XD中看起来很棒,而且还提供了最佳的用户体验以及连贯的感觉。正确的设计顺序。怎么样 在项目的整个生命周期中保持这种连贯性也很有趣。 以前,当UX / UI设计师在演示会议上审查产品时,他们在项目结束时拥有大部分评论,在实践经验之后改变主意或简化事情。 Flutter的独特之处在于,在项目结束时,设计师的参与已完全消失,因为他们在试验和错误的设计循环的初期就开始工作。 这也意味着后续sprint的优化花费的时间更少,并且这种持续的合作体现在下一个发行版的稳定Scrum速度上。


动画是如此的简单和实惠

在Flutter中实现静态视图不仅容易,而且在动画方面也提供了许多新的机会。这将这种UX-DEV的合作推向了新的高度,从而实现了前所未有的出色过渡效果。到目前为止,这仅对大型预算项目而言是典型的。如今,感谢Flutter,所有开发人员都可以使用它。之所以会发生这种情况,是因为Flutter可以直接在画布上进行渲染,并且可以完全控制图形,这使我们能够在所有平台上创建像素完美的图像,而无需像其他跨平台框架一样进行附加的条件格式设置。例如,在使用React Native进行绘制时,您基于默认视图,这些视图可以改变新控件的外观,因此,构建了一个臭代码,该代码依赖于平台,并且与共享代码不应采用的方法直接矛盾进入部署平台。


Flutter应用程序更轻巧

面对PWA业务选择时,PWA证明了在手机上添加快捷方式来像保存应用程序一样保存网站是多么容易。我们先不讨论用户体验,而只考虑下载应用程序的负担。是的,在两种情况下都并非易事。根据SimiCart博客,最佳PWA网站要求用户在加载时从4.9MB到11.6MB。这远远低于我们的Xamarin应用程序的平均大小25MB,甚至低于我们的React Native 32MB应用程序的平均大小,但非常接近Flutter的平均值11MB,所有Flutter应用程序的范围为9-14MB (请注意,尽管这些数字突出显示了模式,但它们不能直接比较)。您必须承认,对于本机应用程序体验,平滑的外观,快速的反应以及本机应用程序典型的所有服务(例如推送通知)而言,此(11MB)的空间非常低。这意味着没有障碍。 用户下载该应用程序,并开始与所有插件和集成一起尽可能高效地使用它。 这也意味着应用程序性能更高,因为它们可以使用较小的代码执行类似的任务。 与其他跨平台框架相比,这种性能上的提升直接转化为毫秒数,从而为您提供了较冷的应用程序,动画,CPU和内存使用方面的更快体验(实际上,在Flutter可以提供更好的冷启动应用程序的情况下,即使相比 到Swift / Kotlin本机应用程序)。


需要时可以访问本机代码。

Flutter的优点在于,移动团队更希望使用本机代码并编写一些Kotlin / Swift软件包,因为它们可以完全控制本机实现,而Xamarin就是这种情况最终代码在一个孤立的黑匣子中生成。到本机代码的桥也更强大,因为它们是完全透明的,因此对于从本机环境转移过来的开发人员来说更友好。由于采用了这种方法,因此可以轻松实现特定功能,例如本地支付提供商或一些复杂的库。更重要的是,即使是需要生物特征识别算法进行面部识别或指纹检查的高级功能,也可以在Flutter上顺利运行,这是由ING商业在Flutter中开发的银行应用程序展示的,该应用程序是在JakubBiliński在Flutter Warsaw Meetup上展示的(链接)。


Flutter中的概念非常简单

当我们需要构建概念证明以检查最危险的假设测试时,与本机代码的集成带来的其他好处。这意味着在客户决定签署整个项目的合同之前,我们可以构建最小的应用程序,以回答最关键的业务或技术问题。在这一点上,我们不能高估Flutter的功能。每次我们将此类计划定为两天的开发时间,试图找出在这么短的时间内可以实现的目标。到目前为止,我们正在尝试各种PoC,包括支持AR的图像检测系统(如下),

通过白板图纸绘制高级动画。

建立快速的PoC不仅使我们能够展示开发的速度,而且还有助于我们为最终项目提供更准确的估算。


开发人员很高兴

从建立内部团队的角度来看,Flutter被证明是一个不错的选择。最初,Flutter开发人员很少,因为没有专业经验。但是,与开发人员具有C#背景的Xamarin相比,情况有所不同,在Flutter的情况下,所有候选人都是已经从本地(主要是Android)背景转移的移动开发人员。随着Flutter变得越来越受欢迎,并且由于社区组织的活跃以及定期聚会和网络研讨会的兴起,可用的候选人数量呈指数增长,如今,有大量的专业人士愿意在Flutter项目中寻找工作经过多年的本机应用程序开发,我们改变了看法。得益于文件详尽的Flutter代码以及社区提供的其他库的可用性,进行此类转移非常容易。因此,一些以前拥有独立移动团队的公司 正在投资以使它们围绕Flutter。 在LeanCode,我们甚至组织了Flutter训练营,在湖边进行了为期三天的培训计划,以提供动手经验,并为密集的,为期两个月的学习计划选择最佳人选,在那里学习Flutter 伴随着做一些非商业项目。 我们惊讶地注意到,经过9个星期的培训,开发人员准备与他们的同事并肩工作,他们从早期就开始在Flutter中进行编码。 如此短暂的学习周期证明,从企业主的角度出发,选择从本地应用程序切换到Flutter并不是一场革命,而是一场内部团队可以发挥重要作用的演变。
对技术栈做出正确的决定可能会对您的业务和个人职业产生持久的影响。然而,很少有选择如此简单。 Flutter已经成为不可阻挡的运动,不可忽视的力量,并且它仍在发展并向具有银行或保险等极高质量标准的非常保守的行业扩展(例如NuBank,ING和AXA等)。
如果考虑到甚至在生产阶段发布Flutter for Web或Flutter for Desktop之前都会发生这种情况,则表明Flutter for mobile具有足够的价值,可以在这个非常先进的市场上竞争。无论您从事的行业是什么,早期采用者的时代都已经过去,我们很快就会见证越来越多的成熟参与者进入Flutter生态系统。我希望这将使我们能够在Flutter中制作出另外10款出色的应用程序后,在明年的总结中分享从这些实现中学到的经验教训。
能够在Flutter中制作出另外10款出色的应用程序后,在明年的总结中分享从这些实现中学到的经验教训。


推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 4554:[Tjoi2016&Heoi2016]游戏 ... [详细]
  • hadoop1.2.1文档中这样写:Nowcheckthatyoucansshtothelocalhostwithoutapassphrase:$sshlocalhostIfyou ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 转自:http:www.phpweblog.netfuyongjiearchive200903116374.html一直对字符的各种编码方式懵懵懂懂,什 ... [详细]
  • 1.dd命令dd命令的全称为diskdump,对系统所有用户开放。该命令用于复制磁盘的数据块,且可在复制文件的同时指定转换的文件格式。命令选项参数说明ifFILE:输入文件名称,默 ... [详细]
  • 仅以博客形式记录linux所学,不足之处继续优化linux系统的常用命令格式基本上是以cmd(command)选项参数的形式书写例如screen、date、ifconfig等命令1 ... [详细]
  • 尾款|建材_作为程序员,如何开展自己的副业?月赚三万的真实故事
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了作为程序员,如何开展自己的副业?月赚三万的真实故事相关的知识,希望对你有一定的参考价值。作为一名 ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
author-avatar
谁许我一世繁华似锦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有