您好, 访客   登录/注册

基于Android系统应用程序的轻量化研究

来源:用户上传      作者:崔凯 朱源安 卢禹锟 曾晶丽 张珉睿 许元朋

  摘要:随着移动互联网的快速发展,Android系统已经占据智能手机操作系统的统治地位,各种应用程序也呈现出了迸发式发展,极大地满足了人们日益增长娱乐消费需求。在快速发展的同时,如应用程序的安全,系统资源占用过多的问题也日益凸显。该文将根据Android系统自身的相关特性,面对日益加剧的应用体积及内存问题,寻找应用软件臃肿化的原因。通过探究现有的应用程序轻量化解决方案,以及轻量化应用的开发结构,思路和应用场景,对未来应用形势进行推测。
  关键词:Android;问题;轻量化;解决方案
  中图分类号:TP311        文献标识码:A        文章编号:1009-3044(2019)02-0216-03
  1 安卓应用程序的臃肿化
  以微信为例,2011年发布的微信2.0安卓版安装包仅有1.4MB。七年过去,最新的版本6.7.3的安卓安装包体积已经高达75.5MB,体积增大了50倍!
  1.1 应用自身体积的增长
  安卓平台核心系统更迭速度快,导致版本多,而且很多版本相互之间不兼容,开发人员再开发应用程序时,要考虑版本兼容性问题,就会将不同设备的适配代码放到一个安装包里,造成安装包包含了大量旧的冗余代码,进一步加重臃肿化。
  1.2安卓系统的内存管理缺陷
  Android的任务系统可以一次性开启多项程序。当任务量过大,系统内存就会出现不足, 此时就有了Low Memory Killer机制。预先设置了某个空闲内存的阈值。系统会周期性检查空闲内存是否低于标准值, 若低于就会关闭部分运行程序。
  Android内存系统的缺陷在于在实际运行过程中, 会针对每个应用程序启动一个独立的虚拟机, 造成比较大的内存消耗。另一方面, Android系统对已经关闭的程序的进程不再设置回收, 从而可能会造成内存泄露,即应用关闭后不能正常释放从而导致内存不足。
  1.3开发厂商的外部原因
  另外IT行业正在大举从桌面端移向移动端转型,新兴的应用环境层出不穷。受到大环境的影响,专精于单个功能的应用程序越来越少,软件厂商希望自家的软件能够一统用户的使用环境。这种指导思想下,进一步吃掉了硬件设备的剩余的性能。另外国内APP应用环境差也是重要因素之一,第三方应用商店往往和APP开发者达成了协议,捆绑各种广告,推送各种服务,造成了“全家桶”的普遍现象。
  2 轻量化应用的到来
  2.1软件轻量化思想
  轻量化这一概念最先起源于赛车运动,它的含义不难理解,重量轻了,可以带来更好的操控性,发动机输出的动力能够产生更高的加速度。将此概念引申到Android应用程序,用以形容以“小程序”为代表的对空间占用较小,不需要过高硬件要求的一类新型的应用程序。
  2.2轻量化应用平台的出现
  2017年微信正式发布“小程序”,“无须安装、触手可及、用完即走、无须卸载”的新型应用。2018年3月,中国的九大手机品牌厂商联合推出了“快应用”。使用前端技术栈开发,原生渲染,同时具备 HTML 5 页面和原生应用的双重优点。用户无须下载安装,即点即用,享受原生应用的性能体验。其实,类似这样的轻量化应用概念最早出现在2013年,当时百度在“百度世界大会”上推出”轻应用“,它是一种有别于本地APP和webapp的新型应用模式,能够实现“无须下载、即搜即用、智能分发”的理念。
  2.3轻量化应用的表现形式
  从现在较为成熟的轻量化应用平台来看,无论是“小程序”还是“快应用”,大多都采用传统WEBAPP+调用各种本地程序实现的。一方面避免了安装包的下载,跳过了安装的步骤,随用随开;另一方面,又通过调用本地各个程序接口,大大增加了用户的可交互性,提高了传统WEBAPP扩展性和易用性。
  轻量化应用是以web为基准,使用前端技术栈开发,原生渲染,同时具备 HTML 5 页面和原生应用的双重优点。
  微信小程序框架如下:它包含View(渲染页面结构)App service(针对数据,逻辑,接口的管理)两个框架,view和app service通过系统层JSBridage进行通信,逻辑层将数据变化传输到视图层,从而触发视图层页面更新;视图层把触发的事件传输到逻辑层进行业务处理。以webviwe来实现UI视图及逻辑处理,并且每个视图都有单独的webview来承载,负责逻辑处理的执行,在Android里主要通过WeixinJSCore.invokeHanlder实现,它用来提供JS的接口。软件的轻量化使用了组件机制,MSSM等规则,基于Web规范,保证现有的代码最大价值化,并且又易于理解和开发,使得更多的开发者愿意投入精力到轻量化软件中。
  另外中国的九大手机品牌厂商联合推出了”快应用“的框架如下。最上面是应用形态以及场景入口,中间是快应用引擎,底下是OS(操作系统)的基础设施及其硬件。从执行路径层面,有标准的HTML5方式支撑通用的Web场景(一般通过系统的Webview组件或定制的Webview), 以及 JS(JavaScript)+Native的方式,支撐更轻量、更快速的体验。
  应用的前端设计借鉴并整合了主流前端框架(Vue,React等)的设计思路:以组件化的方式构建应用,以数据绑定为核心的MVVM设计模式,以V-DOM的方式提升性能,同时选择了简洁清晰的类Vue的模板。同时对布局方面做了相应精简。从新的应用形态、映射原生UI、能力开放的角度,需要定义一套组件与API规范,方便开发这快速开发应用。
  2.4构建轻量化应用开发框架模型
  通过对现有的主流轻量化应用平台,我们构建出轻量化应用的框架模型。主要划分为三个层次:显示层、逻辑层、系统层。   显示层:以web为基准,使用前端技术栈开发,同时具备 H5 页面和本地应用的双重优点。
  逻辑层:借助事件处理引擎实现了对底层API接口的调用和事件的逻辑处理。渲染引擎用来对显示层进行输出,以及负责业务逻辑的实现。
  系统层:硬件设备和系统服务的调用。
  综上来看,轻量化应用架构相比沉重的原生APP开发简洁的多,对于擅长前端WEB的广大开发者来说,大大降低了开发门槛。在轻量化平台将框架构建好之后,应用开发者可以更加专注于表现层和系统层的处理。借助于前端技术的表现,能使应用程序快速迭代,避免了用户版本更新的不便利性。另一方面得益于轻量化开发降低了开发任务量,大大降低了应用开发成本和时间,可以让企业快速跟进业务需求。
  2.5 轻量化应用的发展前景
  轻量化应用具有利基市场的特性,利基市场的中文定义是高度专门化的需求市场。
  1)狭小的产品市场:轻量化软件服务的对象是一个比较小的客户群,轻量化软件是一个极度细分化的狭小市场,正因为如此,它在局部形成的力量必然压倒传统的软件。
  2)具有持续发展的潜力:轻量化软件和传统的软件最大的区别在于它便捷和快速,更具针对的场景性需求,使传统软件无法轻易模仿和替代。
  3)方便应用开发者在用户中快速建立了良好的口碑,降低应用准入门槛。
  轻量化应用软件的这几个特性,均符合利基市场(niche market)的中心战略,因此,轻量化软件理论上是可以在互联网时代的市场竞争中得以生存下去。
  正如腾讯微信事业群总裁张小龙所说:“小程序不同于 App,它是更灵活的组织形态。小程序推出并不是为了改变 App 的存在模式,相反,而是去满足特定需求。”互联网的发展,计算机管理系统的使用,让企业更加重视是否能够快速响应用户的请求,提供相应的服务。软件轻量化相比于传统的软件,将有压倒性的优势。
  在当前的软件市场中,轻量化的软件所提供的功能已经覆盖了电商、科技、旅游、房产、媒体、教育、工具、交通、医疗等上百个方面。这也造成信息的碎片化非常严重,用户的需求慢慢以完全的数据形式产生,这些东西的改变,使得目前的市场已经开始构建了一个数字化的场景环境,类似于小程序的轻量化软件便逐步的占据市场。
  2.6 轻量化应用的弊端
  轻量化应用并不是全部超越传统应用程序,他也有自己的短板和限制,从轻量化软件刚上线就处于长尾状态就可以看出,轻量化应用还存在很多问题:
  1)轻量化应用目前平台入口较深,用户不容易找到它们。
  2)轻量化应用的使用者不够广泛或客户已经习惯与传统软件的各个功能,对轻量化软件不熟悉,还需要一段时间的适应。
  3)从开发者方面考虑,轻量化软件的开发也相当于增加了一个需要维护的平台,而目前的用户活跃度不高,开发者为了实现导流的目的,以至于开发者不得不放弃对轻量化软件的开发。
  3 结论——轻量化应用取代传统APP?
  不难发现,平台更迭速度越快,应用软件越容易臃肿化。浮躁的互联网应用环境下,很难有厂商能细细耕耘,生存问题尚难以解决,又怎么可能去给应用程序减负?
  就目前而言,轻量化应用都属于探索阶段。主要应用于低频的使用场景,但对于高频使用场景,本地APP地位依旧稳固,轻量化应用难有较大突破。另外,轻量化应用还有入口接入的问题,增加了应用的进入深度。
  在未來,轻量化应用还需要进一步革新。增加交互性,缩减自身短板。但毋庸置疑,轻量化已成为一种趋势,得益于网络传输速度的快速提升,未来必将会有更大的发展。
  随着网络信息化时代的到来,轻量化应用的普适性也将越来越强,短板会进一步的补齐。在强大的传输速率支持下,本地硬件设备性能要求在不断降低,而手机等智能设备,很可能转变为一块显示的屏幕接口而已。云数据,云存储,云应用的进一步实现,轻量化应用在体验性和功能性也将得到大幅提升。以后,轻量化应用和传统应用很难有明显的分界线,应用形态的高度融合,很可能会是本地与云端的综合体。
  参考文献:
  [1] 喻国明,梁爽.小程序与轻应用:基于场景的社会嵌入与群体互动[J].武汉大学学报(人文科学版),2017,70(06):119-125.
  [2] 刘红卫.微信小程序应用探析[J].无线互联科技,2016(23):11-12+40.
  [3] 唐文捷,刘士成,张伍菲,等.轻应用(Lapp)——App未来发展趋势[J].三峡大学学报(人文社会科学版),2014,36(S2):27-29.
  [4] 杜吉志,徐明昆.Android系统内存管理研究及优化[J].软件,2012,33(12):89-90.
转载注明来源:https://www.xzbu.com/8/view-15270275.htm