如何开发APP之技术讲解

对于现在的开发者来说,现在确实是一个比较好的时代,各种技术层出不穷,百花齐放。光是做app也已经演化出了很多方案,有些已经淡出视野,有些还活跃在开发者的世界中。今天主要介绍几种常见的开发app的技术。

原生开发

最基本的开发模式,采用各平台原生语言进行开发,iOS采用objective-c或者swift,安卓端采用java或者kotlin

ios

swift是14年由苹果发布的编程语言,主要用来开发iOS或者macOS的app,刚推出的时候因稳定性差,市场占有率低饱受开发者诟病,到目前得到比较大的改善,很多公司也开始逐渐适用swift作为主要编程语言,逐渐取代objective-c成为原生开发的主流。swift的优势在于代码更容易阅读、代码量更少、对于新手而言也更容易上手。对于新入门而言,比较推荐swift。

android

安卓的开发总08年诞生一直都是采用Java作为主要开发语言,后来jetbrain公司发布了新的语言kotlin,也因为其简单、安全等特性逐渐蚕食了不少原本属于Java语言的市场份额。而随着谷歌官方宣布kotlin成为安卓开发的主要语言,也让kotlin再次成为焦点,可以说现在的安卓开发就算不会kotlin,也在学习kotlin的路上了。当然Java与kotlin的关系不能简单的理解成swift和objective-c的关系,因为Java作为一门服务器语言市场份额相当客观,Java这门编程语言长期占领排行榜前三。而且由于Java跨平台的特性,很多嵌入式设备也会考虑适用Java作为编程语言,对于安卓开发来说,建议两者都了解。

跨平台开发

对于大部分软件来说,都不可能只是开发iOS或者安卓一个平台,而上面说的技术都无法满足多个平台同时适用的场景,意味着要开发一个app,需要分别配备安卓开发人员和iOS开发人员,一套逻辑写两遍,严重浪费人力物力,对于大部分公司都是一个比较大的负担。也正是因为这个,市面上涌现了很跨平台的解决方案,主要介绍几个比较成熟的:hybridReact-NativeFlutter

hybrid

hybrid是使用非常广泛的一项技术,实现原理其实类似于封装一个浏览器,然后提供一些个性化的接口,以弥补H5原生能力不足的缺憾。展现层使用html+css,逻辑层用JavaScript,再通过标准封装,让JavaScript拥有调用原生app的接口的能力,比如蓝牙、文件存储等。其优势非常明显,一个web开发者就可以同时开发安卓和iOS两端的app,开发效率自然提升很多,人才储备方面也节约了不少资金。缺点是效率方面比原生的差很多,可能会存在动画卡顿,随着手机性能的提升,这个缺点会越来越被忽视。事实是,现在越来越多的场景已经开始使用hybrid模式开发。

hybrid很好,那该如何使用呢?目前主要有两种模式:专门找人写原生接口,或者使用市面上比较成熟的框架。前者主要由原生开发人员提供框架层面的接口开发,由web开发人员负责具体业务开发,保证开发效率的同时关键体验也不会太差。如果个人,或者公司不打算招原生开发也是可以实现开发app的,目前有比较成熟的框架:‘cordova’,这个框架封装了写插件的标准,然后提供了标准的运行及打包模式。加上开源社区的强大力量,基本上大部分想要的原生功能插件都可以在上面找到。完成一个完整的app基本上没什么困难,很多公司都会采用这种模式,因为确实方便。

目前我自己的app【书香-得寸进尺】就是采用这种方式开发,效率很高,性能稍差,但也基本上没有太大感知。

react-native

react-native是Facebook公司开源的一个跨平台开发的框架,渲染交给原生,逻辑由JavaScript来控制,实现机制与hybrid稍有不同。hybrid的渲染是有webview完成,而react-native的渲染是由原生组件来实现,渲染效率方面得到比较大的改善。同时也保留了只写一套代码的优势,一经推出就得到了程序员的广泛关注,而且各大小厂商都已经使用这种模式开发。而且组件化开发,很节约开发效率。

17年的时候因为开源协议问题被很多开发者诟病,也因此国内部分公司表示内部严禁使用react-native相关的技术,后来官方修改了开源协议,也不存在太多问题。

之前在公司推过这套开发模式,也做个几个功能,只是后来因为新产品的规划问题没有继续往下推进。整体开发体验还是挺不错的,对于大部分场景都适用,不适用的地方也有很多成熟的免费框架,总之值得尝试。

flutter

flutter是谷歌开源的又一跨平台开发框架,这套框架吸取了react-native的优势,框架提供原生渲染。再次基础上做了更深入的优化:所有运行时代码均编译为原生二进制文件,这就意味着不光是渲染方面效率提升,连逻辑方面也不存在频繁的原生与JavaScript交互的场景,逻辑方面的性能又得到了很大的提升。近期的版本又可以支持web端,如果成型,flutter一套代码搞定安卓、iOS、web开发不是梦。

由于思想确实比较优秀,flutter的推出比起react-native的关注度只高不低,再加上阿里(闲鱼)的深入使用,flutter的崛起势头不可忽视。

当然也不是没有缺点,首先是语言,flutter采用dart作为开发语言,意味着使用这个框架对于原有的任何开发人员都是一个难点,虽然对于程序员来说这点也根本不算什么。第二是还太新了,flutter目前还处于发展阶段,难免存在一些不足,相关的生态也没有得到比较好的发展,导致研发实力不够的公司不太敢入坑。但是后续的发展还是值得关注,照这个势头下去,如果没有更优秀的跨平台框架出现,flutter很有可能会成为大部分人或公司的选择对象。

总结

以上方案各有优劣,根据公司情况不同也会采用不同的方式来实现。而基本上也就是在开发效率和运行性能方面做考量。最后根据开发效率做个参照:hybrid < react-native < flutter < 原生开发,开发效率反过来即可。

个人建议的选择标准是:

小公司(或者研发非主业务的公司)或者个人,选择hybrid。

中等公司,react-native或者原生开发

大公司,还建议什么都可以。

flutter目前还应该观望一下,可以自己先学习,不太建议立即投入生产。

本文为原创文章,转载请保留原出处。原文地址:https:/eatong.cn/blog/13

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

推荐阅读更多精彩内容