快应用的技术特征分析与系统实现*

2021-01-19 11:01张博文樊子谦任奎穆翟中豪王光辉
计算机与数字工程 2020年12期
关键词:页面组件客户端

张博文 樊子谦 任奎穆 翟中豪 王光辉,3 何 欣,4

(1.河南大学软件学院 开封 475001)(2.南京邮电大学物联网学院 南京 210023)(3.河南省智能网络理论与关键技术国际联合实验室 开封 475001)(4.河南省智能数据处理工程研究中心 开封 475001)

1 引言

随着移动应用服务的快速发展,作为新一代移动端应用程序分发入口,轻量级应用程序的发展前景日趋明朗化,群体智能软件生态环境蒸蒸日上并且竞争激烈[1]。微信小程序作为一种流行的轻量级应用开发平台,为开发人员提供了丰富的接口,简单的组件,降低了开发门槛。然而,微信小程序受制于微信生态环境限制[2],从功能到接口均受到微信的管控,限制了软件开发自由度与开放性,且单一开发平台可能导致用户隐私信息泄露风险。2018年,华为、小米、OPPO等九大手机厂商共同启动了快应用标准[3~6]。快应用架构深度集成于各厂商的手机操作系统中,不仅可以支撑轻量级应用开发,而且其支撑的移动应用具有高度开发性与自由性,已经受到了产业界与学术界的高度关注[7~8]。

快应用提供了一种新的应用形态,其架构与手机操作系统深度融合,在满足原生应用流畅体验的同时,具有无须下载、随时使用、用完就走的特点[9]。快应用架构建立了一种新的语言开发规范,使用前端技术栈开发,具备超级文本标记语言(Hyper Text Markup Language,HTML)与原生应用的双重优点。与微信小程序相比,快应用与手机全局搜索、语音、桌面快捷方式等功能结合,提高了与用户的交互性以及使用的便捷性。与HTML相比,快应用关注移动客户端的开发,具有无需下载、即点即用的特点。恶意文件检测系统能够检测移动应用中的恶意文件,有助于解决移动应用的安全问题[10],是智能软件开发与应用过程中不容缺失的模块。因此,基于快应用架构的恶意文件检测是未来轻量级应用软件开发关注的重要方向之一。

论文通过分析快应用架构的技术特征,实现了一种恶意文件检测快应用系统。首先,通过介绍快应用的起源与发展背景,阐述了快应用软件开发的生态系统。其次,通过与微信小程序和浏览器程序(论文以HTML5语言为例)进行技术特征对比,描述了快应用架构的技术特征,实现了一种恶意文件检测快应用系统。最后,基于技术特征分析和系统实现与测试,展现了快应用架构的技术特征优势。快应用架构代码简洁高效,可与手机搜索、语音识别等功能结合,拥有丰富程序入口,从而减少开发的成本、周期、难度。

2 背景介绍

2.1 快应用起源与发展

快应用标准在2018年3月20日由华为、小米、OPPO、vivo、中兴、金立、联想、魅族、努比亚九大主流手机厂商共同发起。在2017年,小米推出的“直达服务”、魅族推出的“快捷应用”、金立推出的“秒开应用”便存有快应用的影子。快应用的启动代表着九大手机厂商将基于安卓生态,在轻量级智能手机应用上进行长期合作。

快应用技术发展迅速。根据报告显示,截止到2019年12月快应用月活用户已经突破3亿,相比2019年3月公布的2亿用户,实现了1.5倍增长,并且每日用户人均打开次数从之前的2次增长至4次[11]。快应用联盟亦愈加壮大,先后有一加、海信和中国移动加入其中,使得快应用联盟成员扩大至12家。快应用联盟积极举办了线上流量扶持计划、线下巡回沙龙、快应用开发者大赛等活动。快应用标准版本已由最初的v1010版更新到v1070版本。

2.2 快应用生态系统

快应用生态系统整体结构如图1所示。其中,快应用的生态基础是手机硬件平台的统一适配,生态环境是手机厂商的合力流量扶持,生态核心是以用户为中心。快应用生态基础的本质在于手机硬件平台统一适配实现标准化,其基于前端技术栈与原生渲染结合的方式,提升移动互联网应用开发效率,减少快应用生态开发的成本,为生态核心提供原生体验。快应用生态环境的重点在于流量扶持。其中流量扶持可以分为四类:搜索场景中用户主动行为产生的流量,推荐场景中系统主动行为产生的流量,通信场景中用户之间交互产生的流量,营销场景中的线上线下结合产生的流量。通过流量扶持,可以创造快应用生态土壤,也可以满足不同用户的需求。快应用架构深度集成于手机操作系统,可在操作系统层面提供客户需求与应用服务的无缝连接,使用户享受原生应用体验,不需要搜索、下载环节,极大降低用户决策造成的损失[12]。此外,用户的不同需求将不断影响生态基础的未来发展与生态环境的模式更新迭代。

图1 快应用生态系统结构示意图

3 快应用技术特征描述与分析

本节首先从快应用的文档结构、组件和应用编程接口(Application Programming Interface,API)三个方面对快应用的技术特征进行描述。其次,将快应用与微信小程序和HTML5在文档结构、用户群、程序入口、运行环境以及代码复杂性五个维度进行技术特征对比与分析。

3.1 技术特征描述

快应用的文档结构如图2所示。快应用基于NodeJS环境,并研发了编译工具hap-toolkit,可以通过npm仓库执行命令行语句安装hap-toolkit。NodeJS环境搭建完成以及hap-toolkit工具安装完之后,使用相关命令行语句即可实现项目的初始化操作,即得到项目模板[13]。在项目模板中,快应用的文档结构由package.json、src以及sign三部分构成。其中,package.json文件用于定义项目需要的各种模块及配置信息。sign作为rpk包签名模块,内含debug调试环境,debug内为certificate.pem证书文件和private.pem秘钥文件。src是项目源文件夹,分为Common、Demo、app.ux和manifest.json四个部分。Common用于存放公用的资源和组件文件,在项目初始化中自动生成模板应用图标logo.png。Demo是页面目录,内含可自定义名称的index.ux页面文件,每一个ux文件是当前页面或组件的具体化描述,一般在开发过程中,一个页面乃至一个组件均独立存在为一个ux文件。manifest.json文件是项目的整体信息配置文件,是用于配置项目的公共脚本资源。

快应用的组件特征分析如下。快应用为开发者提供了丰富组件,可以便捷地实现各种开发需求,其中有两种使用率较高的开发组件:list和tabs。list组件用来对列表进行优化,从而达到对快应用的使用性能进行优化和用户需求快速响应。list组件的性能优化分为精简DOM层级、复用list-item、细粒度划分list-item、关闭scrollpage四个方面。tabs组件用于对选项卡、页面标签等的布局,让开发者可以对组件进行灵活搭配,达到对快应用的使用性能、操作体验进行优化的目的。tabs中封装了常见功能和效果,例如页签支持横向滚动,支持手势滑动切换内容页等。在快应用组件的使用上,开发者还可以自定义小组件来渲染其他页面标签内容,从而对代码的进行合理使用,提高代码的可读性,进而便于后期的维护以及其他开发者对该应用进行修改。除list和tabs组件外,快应用还可以使用灵活性较高的媒体组件、画布组件、第三方组件。

快应用的API特征分析如下。快应用架构深度集成进各手机厂商的手机操作系统中,因此API种类繁多,包括基本功能、页面交互、网络访问、文件数据、系统能力、图形图像、声音音频、第三方服务等。快应用程序可以通过应用市场、浏览器、桌面快捷搜索、智慧推荐服务等入口进入,也可以通过其API实现向特定服务进行推送的功能。

3.2 对比分析

快应用架构集成于手机操作系统并进行深度定制,微信小程序技术充满微信的原生色彩,浏览器具有跨平台、兼容性好、插件丰富等特点。上述三种开发技术的目的均是为了提升应用程序开发的便捷性。通过使用组件和内置API,快应用架构可节省开发时间,优化开发代码逻辑,提升代码的可维护性。

快应用、微信小程序和浏览器的技术特征对比分析如表1所示。三种技术的文档结构各有特色,快应用为ux文件、app.ux文件、manifest.json文件。微信小程序为app.js文件、app.json文件、app.wxss文件和wxml文件,其中app.js作为小程序的入口文件,app.wxss控制小程序的样式显示效果,app.json为小程序的全局配置文件,每个wxml文件用于描述当前页面结构[14]。HTML5则主要为html文件、css文件和javascript文件,在基于浏览器开发网页时,html文件主要是用于建立网页的骨架,决定网页的结构及内容,CSS(Cascading Style Sheet)层叠样式表单主要是用来设置html骨架元素的样式,设计网页的表现样式,javascript是一种解释性脚本语言(代码不进行预编译),主要用于向html添加交互行为。HTML5通过html、head、body和DOCTYPE四种标签统一其文档格式[15]。

表1 快应用与微信小程序和HTML5的技术特征对比

快应用运行于支持快应用架构的手机操作系统,在大部分Android端使用。由于快应用属于最新开发技术,虽然其用户群相对较少,但是其用户数量增长迅速。微信小程序用户群为微信用户,用户数量较多。HTML5基于手机与PC等多种运行环境浏览器,在世界范围内流行,用户群丰富。

快应用的程序入口多元。快应用架构已经深度集成到各手机厂商的手机操作系统中,可以实现用户需求与应用服务的无缝连接,程序入口丰富。微信小程序受制于微信生态环境限制,从功能到接口到程序入口均受到微信的管控,HTML5的程序入口基本为浏览器。

快应用与微信小程序的代码相对简洁。其快应用与微信小程序均在HTML5的基础上新增了用于列表渲染的for指令和用于条件渲染的if指令。根据市场需求,快应用与微信小程序还封装提供了功能集中的新标签。例如,快应用内置的popup标签可供开发者快速实现气泡窗口。因此,快应用和微信小程序的代码复杂度相对简洁,而HTML5代码复杂度相对复杂。

综上所述,快应用技术在交互性与便捷性方面具有一定的技术优势。首先,快应用区别于微信小程序的特点在于快应用无须基于任何基础软件支撑。快应用可与手机搜索功能、语音功能等深度融合交互,提高与用户的交互性以及使用的便捷性。其次,相比于HTML5,快应用关注移动客户端的开发,具有即点即用无需下载的特点,程序入口丰富。为了展现快应用所有具有的功能与优势,论文实现了一种基于快应用架构的恶意文件检测系统。

4 快应用系统实现与测试

4.1 系统架构

基于快应用的技术特征分析,论文实现了一种恶意文件检测快应用。如图3所示,该快应用系统采用了客户/服务器模式(Client-Server,C/S)结构进行部署。其设计思想为MVC架构模式,包含三个模块:View视图模块,Controller控制器模块和Model模型模块。View视图模块部署在客户端,Controller控制器模块和Model模型模块部署于服务器端的应用服务器内。

图3 恶意文件检测系统架构示意图

View视图模块、Controller控制器模块和Model模型模块的作用描述如下。View模块负责为客户提供操作简单、人性化的使用页面,实现文件和数据到服务器端的上传,并从服务器端获取数据,为客户展示相关文件检测的结果。Controller模块实现前后端数据、文件的交互。系统传输功能体现在客户选择欲检测的Android应用程序包(Android Package,APK)文件后,将其传输到服务器端进行检测,最终由服务器端将结果和相关数据传输回客户端,使用了网络数据传输功能。Model模块负责与数据库交互、文件的恶意性检测以及客户信息处理三大功能。服务器经由Controller模块接收客户端上传的APK文件,并对其进行反编译,将所得数据传入数据库。

恶意文件检测快应用利用反编译相似度检测算法进行恶意文件检测[16]。反编译相似度检测算法流程如图4(a)所示。算法对待测文件进行反编译预处理,使检测效率更高且检测结果更精准。算法核心特征是通过对文件进行反编译,提取其特征值[17]并与已知恶意文件特征库进行比较,分析结果进而判断待测文件是否具有恶意性。

恶意文件检测快应用的系统流程如图4(b)所示。首先,用户需自行指定欲检测的APK文件,选择完毕后文件会被发送至服务器端。若文件发送成功,服务器会给客户端返回响应,经客户端处理最终向客户提示成功信息,并自动跳转至检测页面,若失败会提示失败信息。其次,客户点击检测,客户端向服务器发送检测请求,服务器收到请求后访问并提取客户上传的APK文件,调用反汇编相似度检测算法对文件进行分析,并返回分析结果。最后,客户端接收并处理数据后向用户展现检测结果。若出现服务器未按时收到请求、出现故障或检测失败等情况,客户端将依据故障信息提示检测失败。

图4 反编译相似度检测算法流程图和恶意文件检测快应用的系统流程图

4.2 客户端和服务器端模块

恶意文件检测系统利用快应用架构进行客户端开发,嵌套使用了tabs组件,将其作为每个页面的框架结构,配合使用自定义组件和js脚本实现前端页面。系统使用的内部接口为自定义函数接口,即为实现系统需求而编写的不同功能的函数,包括判断是否处于WiFi情况下播放的startVideo(),判断网络状态的net WorkStatus(),检测完后从服务器捕获检测结果的fetchData(),选定本地文件进行检测的quickScan(),和承接文件上传至服务器的upLoadFn()。系统使用的外部接口均为快应用内置接口,包括路由接口route,多媒体接口media,数据请求接口fetch,上传下载接口request,文件存储接口file和网络状态接口network。

系统服务器端包含应用服务器和数据库,应用服务器采用Java语言编写,使用JavaWeb技术开发,并基于Tomcat服务器搭建。数据库使用MySQL数据库。应用服务器分为两个部分,分别对数据交互和恶意文件检测进行功能实现。首先,第一部分为前后端数据与文件交互功能,将所有数据进行处理后导入数据库,将文件单独存储到特定存储空间中,以备检测算法访问提取,将数据库中取出的数据信息做封装处理,将最终检测的结果数据封装响应客户端。其次,第二部分为恶意文件检测功能,即通过反编译相似度检测算法,检测客户上传的APK文件。此外,数据库负责数据的存储与维护,用于存储APK文件经反编译后得到的临时文件信息以及特征匹配所用的特征值信息。

4.3 系统实现

基于系统架构与客户端和服务器端模块,实现了一种恶意文件检测快应用。其源码中属性为class="down_div1"的div标签用于显示检测基准,属性为class="down_div2"的div标签用于显示检测结果。div标签的for属性用于根据源数据数组渲染列表,tid属性用于指定数组元素的唯一Id,tid="uniqueId"表示使用数组List1、List2的数组元素,$item.uniqueId作为数组元素的唯一Id。需要注意,uniqueId属性值在每个数组元素都不一样,其下的$item.type代表文件类别,$item.probability代表检测后得到的每种类别概率,从数组List1、List2内绑定具体数据。恶意文件检测快应用系统检测结果页面的核心代码如下:

{{$item.probability}}

{{$item.probability}}

快应用显示效果如图5(a)所示,基于移动HTML5应用开发实现的前端效果如图5(b)所示,微信小程序显示效果如图5(c)所示。通过分别基于快应用、HTML5和微信小程序进行开发,可以发现三者代码结构类同,组件标签相似,在显示效果基本相同时快应用开发代码最简。具体表现为在实现系统检测结果页面的结构文件时,快应用需编写42行代码,微信小程序需编写58行代码,HTML5需编写102行代码。这是因为快应用与微信小程序均比HTML5的基础上新增了用于列表渲染的for指令和用于条件渲染的if指令等。同时快应用与微信小程序还封装好了功能集中的新标签,这都大大减少了开发时所需代码的数量。

图5 快应用、HTML5和微信小程序的效果展示图

三者开发的不同点分析如下。快应用的ux页面文件中,template标签元素是根元素,template标签下只允许存在一个根节点[18]。HTML5中以html标签元素作为根元素,表明文档的开始部分。微信小程序中的wxml页面文件则是与HTML5非常类似,由标签、属性等构成。在上述快应用系统核心代码中,text是快应用的文本标签,而在HTML5中的文本标签则是p标签、b标签、h1标签等,并无text标签[19]。微信小程序拥有text文本标签,使用view标签、scroll-view标签、cover-view标签等作为视图容器标签,但快应用和HTML5并无div标签。因此可见快应用代码的简洁和高效特征。

4.4 系统测试

基于对快应用、微信小程序和移动HTML5应用开发的实现,进行测试与分析。系统已在测试网络中正常运行,整个测试网络由一台服务器和一部移动手机构成,服务器为惠普(HP)暗夜精灵Ⅲ代笔记本电脑,移动手机为华为nova 4。基于快应用、微信小程序和移动HTML5应用开发实现的前端在共同的一部手机上测试运行。

系统功能和性能测试结果如图6和图7所示。其中,快应用、微信小程序和HTML5的文件上传时间如图6所示,表示在待检测APK文件大小、网络通信环境等因素相同的情况下,三种技术上传速度的比较。待检测APK文件大小与检测算法执行时间的关系如图7所示,其时间仅指检测时间,不包含文件上传时间。通过功能测试和性能测试,达成了预期的设计目的,验证了系统的有效性和可行性。通过测试分析可以看出,在相同的环境下对同一文件进行上传操作,快应用和微信小程序速度基本相同且快应用更加稳定,HTML5具有较大时间。检测算法执行时间随着待检测APK文件大小的增加而增加。基于快应用的系统和传统的移动应用软件系统相比,便捷性取得了巨大的提升。

图6 快应用、微信小程序和HTML5的文件上传速度的比较

图7 APK文件大小与算法执行时间的关系

5 结语

快应用架构具有无需下载、即点即用等多类特点,获得了产业界与学术届的广泛关注与支持。论文介绍了快应用的起源与背景,阐述了其生态系统,分析了其在文档结构、用户群、程序入口和运行环境方面的技术特征,实现了一种基于快应用架构的恶意文件检测系统。通过将快应用与微信小程序和浏览器进行技术特征对比,分析得出快应用的技术优势。快应用采用前端技术栈作为开发框架,用户体验上与微信小程序类似,代码框架上与HTML类同,设计原理与实现技术上独具风格。与微信小程序相比,快应用程序入口更为丰富,能与手机搜索功能、语音功能深度结合。与浏览器前端开发技术相比,快应用代码更为简洁和高效。因此,快应用框架可以减少开发的成本、周期与难度,便于技术人员上手开发,基于快应用架构的应用软件无需繁琐的下载安装便可以实现其原生体验。

猜你喜欢
页面组件客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
刷新生活的页面
无人机智能巡检在光伏电站组件诊断中的应用
无人机快速巡检光伏电站中异常光伏组件的方法
Kistler全新的Kitimer2.0系统组件:使安全气囊和安全带测试更加可靠和高效
答案
让Word同时拥有横向页和纵向页
一种嵌入式软件组件更新方法的研究与实现
媒体客户端的发展策略与推广模式