敬件卄亥与龛用信18与电1E
China Computer&Communication2021年第6期基于JSBridge技术的跨平台移动应用开发研究
张静薛茹
(西北大学现代学院,陕西西妥710130)
摘要:随着移动互联网的发展与应用,智能移动设备的拥有率和使用率都达到了历史最高,但不同平台与系统之间的差异,向手机软件开发商提出了更多更高的要求.基于此,笔者分析了移动应用开发技术的现状,并研究了以JSBridge为代表的跨平台移动开发技术及其在实际开发中的应用.JSBridge技术在保证软件兼容稳走性的同时,也能最大程度保证用户终端使用及体验的一致性-
关键词:移动应用;跨平台;JSBridge
中图分类号:TP311文献标识码:A文章编号:4003-9767(2021)06-100-03
Research on Cross Platform Mobile Application Development Based on
JSBridge Technology
ZHANG Jing,XUE Ru
(Modem College of Northwest University,Xi'an Shaanxi710130,China)
Abstract:With the development and application of mobile Internet,the ownership and utilization rate of smart mobile devices have reached the highest in history,but the differences between different platforms and systems have put forward more and higher requirements for mobile phone software developers.Based on this,the author analyzed the current status of mobile application development technology,and studied the cross-platform mobile development technology represented by JSBridge and its application in actual development.JSBridge technology not only guarantees the compatibility and stability of the software,but also guarantees the consistency of user terminal use and experience to the greatest extent.
Keywords:mobile application;cross platform;JSBridge
0引言
随着苹果公司在2007年发布第一代iPhone手机,智能移动时代宣告开始,紧接着市场上陆续出现了Android、Windows Phone等智能移动手机。与传统的非智能手机相比,智能手机有着更好的操控体验,
同时运行性能更高且稳定,还可以为用户提供真彩视觉体验,可以说在性能、功能及感官各个方面都有着质的改变"1。为了满足用户的需求,各个硬件厂商开始推出形形的基于不同内核的智能手机,同时也为提供软件服务的开发商带来更多的难题,例如:同一个软件需要运行在不同的系统上,甚至同一OS系统上,还需要兼容不同的版本,由此带来了开发资源浪费和体验不同步等问题。因此,可以实现“一套代码,多端运行”的跨平台技术便应运而生。
1移动应用的现状
目前,市面上主流的移动操作系统分别是Android和iOS,市场占有率在99%以上。iOS以Unix为核心,前端应用开发主要采用的是Objective C和Swift语言,而Android 端开发则使用Java语言。两个系统在实现机制上相似,都是通过不同的开发语言,逐层调用底层OS提供的各个服务接口,来实现功能的展示。因此不同系统的底层结构原理和不同的开发语言环境是手机软件服务提供商面临的最大挑战。
2跨平台引擎概述
2.1Cocos Creator
Cocos Creator是一套整合了编码、动画编辑及成套开发工具集的可视化编辑器,使用JavaScript作为开发语言,支持开发Web、IOS、Android,小游戏及桌面程序,涵盖了几乎所有的运行平台。其底层Coc
os2d-X基于C++和STL标准库封装了一套图形、动画渲染API,依托Node.js 和Electron将JavaScript逻辑交付给底层接口执行。因为
作者简介:张静(1985-),女,陕西汉中人,硕士研究生,讲师。研究方向:计算机技术。
信息与电IE
China Computer&Communication 敬件打发与僉用
2021年第6期
JavaScript语言具有简单易懂、灵活等特点,深受开发者喜欢曲。
2.2Unity3D
Unity3D是最早一批实现可视化编辑的综合开发引擎,凭借众多优势深受开发者喜爱。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实设备和虚拟现实设备
2.3二者的区别
Cocos Creator与Unity3D都具有可视化开发、多平台输出及容易上手等特点,其中Unity3D更注重3D模型的高性能渲染输出,包含了大量与3D相关的实时库,因此输出的包体都较大,同时在2D UI方面的支持较弱。相反Cocos Creator更注重动画UI基础和多平台,使得开发门槛更低,研发效率更高。
3JSB跨平台技术的原理
3.1JSBridge的出现
在整个跨平台开发的过程中,各个引擎工具都是通过CIL公共中间套件将上层代码转为标准的C++语言,从而可以快速生成各种机器码直接执行。理论上讲,只要保证使用标准库即可实现真正的跨平台,但由于各个终端的多样性和用户体验需求的升级,标准库已无法满足需求,因此就需要使用混合开发模式。跨平台开发按照调用方式分为底层标准API接口调用和基于原生终端的个性化调用。
3.1.1标准API接口调用
通过CIL公共中间组件可以将引擎的上层开发语言,转换为支持多平台的C++标准函数,再由C++编译为机器可以直接运行的机器编码。在这个过程中,调用的都是公共底层封装的各类标准化的接口,也就是各个终端硬件都支持的接口。因此只需要将C++标准库的预置函数映射到上层引擎函数即可实现直接调用。
3.1.2个性化调用
随着智能终端的快速发展,为满足市场竞争需要,各个智能终端在标准库的基础上,研发出很多基于自有平台的特功能,并为开发者提供相关的开发工具集SDK。该部分功能仅限于自有平台,无法运行在标准库上,因此在开发跨平台时,这部分功能就需要依托其SDK,并在原生层面进行编写,最终通过代码绑定或者映射技术进行调用和返回,从而达到使用个性化功能的目的。
在实际应用的过程中,通常需要采用混合开发模式进行跨平台移植开发,虽然在一定程度上解决了项目遇到的实际问题,但开发人员还会面临系统不兼容的问题,开发和维护成本较高。而作为Web核心的Java Script语言,拥有其他语言无法比拟的天然优势,拥有不同系统的Webview控件和运行实时库。因此在混合开发的大背景下,为了解决上述难题便出现了基于Web技术的JSBridge□
3.2JSBridge的核心原理
JSBridge是Java Script Bridge的缩写,顾名思义是Java Script与原生Native(iPhone、Android)之间的一道桥梁。其核心提供了一整套API方式,供Java Script应用层与Native原生层之间进行双向通讯,即互相调用。例如:通过Java Script的一段固定代码,调用iPhone和Android系统层提供的摄像机功能权限,从而突破平台间的限制,实现一套代码跨平台化运行,如图1所示。通过JSBridge的核心原理图可以看到,JSBridge提供的是双通道通信环境,预置绑定了原生层标准库、自定义API之间的映射,从而实现
了消息的可逆性。
OS Core Service Java Script JSBridge
JS Runtime
图1JSBridge的核心原理
3.3JSBridge的特点
3.3.1可以快速访问各种属性和方法
api接口和sdk接口的区别
JSBridge在整个应用程序的生命周期内都是以单例存在且唯一,通过Windows下面的onlaod函数进行自动注册,使用时可以通过获取单例的方式获取一个全局对象,从而可以快速访问该对象下的各种属性和方法。
3.3.2预置方法齐全
传统的混合开发需要代码设计者考虑很多因为不同系统而可能引起的不同情况,往往需要很多判断分支。JSBridge 的引入通过预置方法与底层API的映射,封装了几个通用的方法,将很多判断分支都包含进去,因此在使用时,只需调用API即可,无须考虑平台的差异。
3.3.3通信快速
传统的通信模式需要开发者自己拼接一个JS形式的字符串,最终通过evalString执行生效。这种方式相当严格,一个空格或者字符都可能引起执行失败,而且一旦出现问题排查起来相当困难。相反,JSBridge则能很好地抽象并封装一系列方法,只需要极少的代码就可以完成执行任务,在规避人为可能引起错误的同时,可以说既快速又稳定。
後件卄茨与窓用信■与电09
China Computer&Communication2021年第6期
4JSBridge技术在实际开发中的应用
4.1调用系统函数
JSBridge是基于WebView框架的Web技术,通过发起_个URL Scheme请求,将系统函数名称包含到请求参数里,原生Native端会自动捕获该请求并解析函数动作名称,最后去调用该系统函数,并将执行结果实时输出。URL Scheme 机制是为APP之间的互相调用而设计的,一旦发起对应白名单id的请求,系统便会捕获并自动启动对应的APP。JSBridge正是利用这一特性,将函数请求跟到URL请求后面,一旦触发系统捕获机制,系统便会自动试图打开,发现没有APP后,又会自动寻API注册池,最终达到想要的效果。
4.2调用自定义函数
在实际应用中,除了系统函数外,还需要去调用自己定义的原生端函数,如接入支付功能。考虑到安全性和兼容性问题,支付功能提供商一般会分别提供IOS和Android双端的SDK,因此在接入时,首先需要在原生端分别引入其SDK,然后在原生端分别定义初始化、发起购买、结果查询等自定义函数API,最后再由JS调用。JS调用时,Native 原生端便会从注册池中寻对应的API,如果到就会执行,同时会返回执行结果,如图2所示。
Java Script
JSBridge JSBridgd|jSBridge|(JSBridge
c自定义函数池
图2自定义函数调用图5结语
随着硬件和软件的不断发展,各式各样的智能移动设备层出不穷,同一个软件面对不同手机及系统时依然需要保证功能体验的一致性,对于搭载的各种手机软件的兼容性和稳定性提出了更高的要求。传统的跨平台实现方式,虽然可以解决一定的问题,但对开发人员有着严格的使用限制,因此引入自动映射绑定的跨平台开发技术显得尤为重要。JSBridge利用Web核心机制,实现了真正的“一套代码,多端执行”,在大大降低开发维护成本的同时,也保证了不同系统用户之间的体验一致性。
参考文献
[1]邹琼俊.H5+跨平台移动应用实战开发[M].北京:北京航
空航天大学出版社,2019:152.
⑵彭娟.跨平台移动应用开发技术研究[J].科学咨询,2017(27):
59-60.
[3]彭文冲,敢煜.跨平台移动应用中间件的设计与实现[J].
大众科技,2015(1):12-14.
[4]熊亚蒙.跨平台移动应用开发系统的设计与实现[J].电子
测试,2017(11):57.
[5]柯芬芬.跨平台移动应用开发技术的安全性研究[J].无线
互联科技,2020(5):152-153.
[6]杨勇•跨平台移动应用开发系统设计的可行性研究[J].电
脑迷,2018(11):114.
[7]宋志京.Cocos Creator完全使用手册[M].北京:人民邮电
出版社,2018:91.
[8]赵林静•跨平台移动应用开发的优势与不足[J].信息与电
脑,2018(9):123-124.
[9]郭庆东.基于跨平台的移动应用开发框架研究[J].电脑知
识与技术,2018(4):64-65.
[10]崔康.智能手机跨平台开发高级教程[M].北京:清华大
学出版社,2011:79-80.