谈谈跨平台APP开发的难点在哪里?

发布时间:2020-01-19 07:07 | 浏览人次:浏览次数

在做客户端开发的企业都会面对1个庞大的问题,跨平台app开发对于现在上市面上的移动设备来说。AndroidiOSWindowsPhoneBlackBattery等等移动设备系统,让我们在开发适配上都很头痛。那么我们正常工作开发中为什么不选择一些跨平台的app开发伎俩呢?
谈谈跨平台APP开发的难点在哪里?

这里,我说一下我的归纳和考虑,基于WebView的跨平台解决办法相信大家已经很熟知了,而采取Web开发对于1个Web开发工程师也是1个轻而一举的事情。HTML5方案的重要不足则在于功能和性能方面,这重要是由于html5软件的能力严重依赖于系统自带的Web引擎:iOS的UIWebview、Android的Webview等,此类组件的Html5能力相比Safari for iOS、Chrome for Android都要差一截。

而且,对于源生系统的新能优化,如垃圾回收机制、ListView的复用机制等等,系统级其余的优化,对于采取WebView来实现的逻辑,往往很难做到。此外在Android平台上,由于系统碎片化较为严重,不一样Android版本的Webview的HTML5能力也有较大差别,引致相应的HTML5软件统一性难以保障。在Web开发中,我们总需求将变化的数据及时反应到UI上,此时就需求对DOM进行操作。

而复杂或反复的DOM操作通常是性能瓶颈产生的原因(怎样进行高性能的复杂DOM操作通常是衡量1个前端开发者技巧的主要指标)。跨平台开发app难题在于,功能基础实现不是完美实现。同一套代码要兼顾不一样平台,许多实现就成为折中实现了,起初一些很出色的平台特点为了兼顾另1个平台用不了。Facebook之前还打算用html5来进行移动开发,开发了半年发现坑太多了,还是转为ios的native开发。

Fackbook准备退出的React Native框架号称是可以良好的解决手机端跨平台开发app的难题,目前还没有开源,我们能够指日可待。

Hybrid开发混合App

就是混合开发的App。Andorid+Html5 or IOS + Html5。理论上来说,混合开发的App谈不上跨平台开发(我们能够简单的认为,就是采取源生的开发)。那么问题是,既然二者都会有好处,那么我们就将一些体验、操作、权限请求不高的页面,采取Web来开发。其他的地方,我们还是采取源生的SDK进行研制。(转了1个大圈,彻底没有跨平台,发现然并卵)

成本探讨

当然,能否采取一些开源的跨平台框架,制作跨平台开发app程序,还取决于我们的企业业务范畴和自己企业的技术人才积攒。下面,笔者简单的归纳了一下又如下几点原因,令大家在选择方向与平台的同时做1个良好的取舍。

Hybrid 技术

这类技术,采取 HTML/CSS/JavaScript 等前端技术来构建 App。运用 JSBridge 获得部分访问源生 API 的能力。更有标志性的是 PhoneGap,它是 Adobe 收购一家开源创业企业后推出的平台。这个链接有 PhoneGap 的一些历史信息。

这类平台的目的是维持大多数代码跨平台共用,牵涉到平台不共用的 API (例如 GPS 接口,iOS 和 Android 一定是不一致的),则由 PhoneGap 平台通过 JSBridge 提供。除此以外,还有一些显著的优势:

开发效率较高:采取 HTML/CSS/JavaScript 构建界面的效率要比源生 App 速度快许多。而且前端开发有一堆现有的框架和开源库能够直接采取。

即时更新:有 Bug 能够迅速更新,不需求上线新 App,仅需求更新服务器上更新有关的 HTML/CSS/JavaScript 即可。能够绕过 AppStore 的上架认证时间。

开发门槛低:对于前端开发工程师,能够迅速转岗,开发出可用的 App,不需求对 iOS 平台和 Android 平台有太深层次的了解。

这类平台的硬伤是:

单线程:JavaScript 在 WebView 里实施时是单线程的。对系统并发能力有较大的影响。

性能低:大概只能满足源生 App 70% 的流畅度。

这篇文章对几个热门的 Hybrid 平台进行了比照和讲述。

为了克服 Hybrid 的弊端,现在工程软件上经典的做法是,以源生 App 为主,把易变的逻辑,以及界面,不牵涉性能瓶颈的部分采取基于 WebView 的 Hybrid 技术来开发。

准源生平台

为了解决 Hybrid 的问题,一些其他的方案逐步时髦起来,更火的要算 React-Native,它是 Facebook 基于其前端框架 React 之上构建的跨平台 App 开发架构。

这类平台的特性是,只采取 JavaScript 来构建界面,但事实上构建出来的所有界面全是系统源生控件。这是和 Hybrid 平台更大的区别。在 Hybrid 平台,1个按钮就是 HTML 构建出来的,但在 React-Native 平台,1个按钮是在各自的平台 (Android/iOS) 上以源生控件的方式渲染出来的。

这类平台更大的优点是:

跨平台开发app界面及业务逻辑:以前端工程师熟知的架构和技术,以一致的方法构建界面和业务逻辑。

即时更新:能够把业务逻辑摆在 JavaScript 里,这样就能够直接在线更新功能。

性能较高:比 Hybrid 性能高,大概能满足源生 App 90% 的流畅度。

开发效率较高:能够采取前端技术迅速构建界面。例如,熟知 React 框架的人,能够无阻碍地在 React-Native 下构建界面和业务逻辑。

这类平台和 Hybrid 相比,跟源生平台靠得更近一些,更多地依赖源生平台的一些知识。例如,许多机制,其实还是要分 iOS 平台和 Android 平台的。即没法做到真正的跨平台开发,在运用 React-Native 这类架构时,还是需求对目的平台有较深层次的领会。除了 React-Native 之外,比较著名的还有 Weex 这是 alibaba 出品的1个架构,它是基于更近火爆的前端架构 Vue.js 的。此外1个是 NativeScript,这是基于老牌的前端架构 Angular之上构建的。

大家留意到,这些热门平台全是基于1个热门的前端架构来构建的。从这一点也可以够看见这种种类的架构的目的,就是让前端开发者能够在其原有知识体系里,迅速开发 App ,并且采取自己熟知的语言 JavaScript 来处理业务逻辑。至于核心的代码以及性能有关的代码,还是需求采取源生编程语言 (OC for iOS, Java for Android) 来撰写,不一样的平台更终向上层提供一致接口。这样,上面界面部分代码,甚至一些逻辑代码就能够跨平台共用了。

原理上,JavaScript 怎么样和源生平台交互呢?

JavaScript 是脚本语言,能够在运行时解释并实施。这类平台上写出来的 JavaScript 代码更终是由源生平台里面的 JavaScript 引擎来负责实施的。那么 JavaScript 怎样调用源生代码呢?答案是运用语言的元编程能力,OC 和 Java 都具有肯定的元编程能力,这样 JavaScript 只要知道源生平台的类名称,函数名称,就能够调用到源生平台的这个函数了。

Hybrid 技术的愿景是真正满足一次开发,跨平台运行,但其性能是其更大的瓶颈。准源生平台的目的是让前端开发者,基于其熟知的前端框架,迅速开发App的界面和业务逻辑,且其性能和源生 App 很贴近。当采取准源生平台开发 App 时,除非你是全栈工程师,或许大致了解 iOS/Android 平台的一些开发知识,否则很大几率需求 iOS/Android 源生平台的开发者配合。

以下几个场景能够思考采取 React-Native 之类的准源生构架来开发:

熟知前端技术架构:例如熟知 React ,则能够思考采取 React-Native 来进行开发。假如熟知 Vue.js ,能够思考选择 Weex 来进行开发。

对开发效率有较高的请求:尤其是那些互联网创业企业,假如刚好又是个全栈工程师,能够思考用这种技术来来提高整体开发效率,有也许1个人把 iOS/Android App 全包圆了。

软件非常反复地更新:不管是修复严重 Bug 的 HotFix ,还是业务场景迅速变化,我们在等候 AppStore 考核的同时,感觉是度日如岁。假如这个痛点让你肝肠寸断,不仿思考一下准源生平台方案。

结束语:反过来,假如你对前端开发和架构不熟,变换到任何种类的跨平台技术方案上来,成本都将是庞大的。从头学习和适应崭新的开发模式,尽管更后也许提高了效率,但学习时间成本也许会是不可承受这重。起码短期来看,性价比不高。

以上属于个人看法,仅供借鉴!

上述内容就是小编今天为您带来的关于《谈谈跨平台APP开发的难点在哪里?》的全部内容,希望能对您有所帮助,我们是一家成立于北京的IT外包公司,如果您有app软件或者微信小程序需要定制开发,不妨联系我们。
免责声明:本站部分文章转载自网络,不代表本站的观点和立场,不以盈利为目的。如有侵犯公司或个人权益,本站会第一时间删除文章。我们是一家北京app开发公司,欢迎咨询免费获取思维导图!

本文地址:https://appbj.cn/article/3298/

网友热评

暂无更多评论
思捷智联

思捷智联是一家2009年成立于北京的IT外包公司,我们致力于为企业提供app软件开发和微信小程序开发服务。公司成立10年来,我们为民政部、方正电子、神州数码、联想控股、壹基金、首钢集团、北京大学、北京师范大学、今麦郎、丰汇租赁、万通控股等上百家企业提供了IT外包服务。我们努力实现每一位客户的托付,为客户创造实在的效益,让您与梦想走得更近。

微信咨询

扫描微信二维码
同市场经理沟通需求

我们积累了丰富的移动互联网开发和运营经验,在开发中为客户提供更多帮助!
咨询热线:18612209195