1.本技术涉及电子技术领域,尤其涉及一种启动快应用的方法及相关装置。
背景技术:2.快应用,是一种无需提前安装,用户使用时即时下载的应用。在首次使用之前需要下载一个应用包。在点击快应用到首屏(应用开启时显示的初始界面)渲染完成过程中,需要下载应用包以及请求首屏显示所需的数据(例如,如新闻类应用需要向第三方服务器请求新闻列表等数据)。由于快应用首屏显示所需的数据对应的统一资源定位符(uniform resource locator,url)需要从应用包解析得到,因此首次启动快应用的耗时较长。
3.现有技术中,为了减少首次启动快应用的时间,一般通过人工将快应用启动过程中首屏显示所需数据对应的url的列表预存在应用服务器中。在运行快应用的引擎启动之后,引擎从应用服务器中获取所有快应用对应的url的列表。用户首次点击了一个快应用之后,手机在下载应用包的同时,引擎可以根据该快应用对应的url从第三方服务器中获取该快应用所需的数据,以减少启动该快应用的时间。这种预存url列表的方式需要人工进行维护,容易导致获取到的url有误的问题。
技术实现要素:4.本技术提供了一种启动快应用的方法及相关装置,可以提升启动快应用的效率。
5.第一方面,本技术实施例提供了一种启动快应用的方法。所述方法包括:电子设备向应用服务器发送第一请求,所述第一请求用于指示应用服务器向所述电子设备发送一个或多个快应用的加速脚本;所述电子设备接收所述应用服务器发送的所述一个或多个快应用的加速脚本;检测到针对目标快应用的第一操作,响应于所述第一操作,所述电子设备向所述应用服务器发送第二请求,所述第二请求用于请求所述目标快应用的应用包,所述目标快应用的加速脚本包含于所述一个或多个快应用的加速脚本;响应于所述第一操作,所述电子设备运行所述目标快应用的加速脚本,得到第一统一资源定位符url,并根据所述第一url从第三方服务器中获取第一数据;所述电子设备接收所述应用服务器发送的所述目标快应用的应用包;所述电子设备运行所述目标快应用的应用包,得到第二url;当所述第一url与所述第二url相同时,所述电子设备根据所述第一数据生成并显示所述目标快应用的首屏。
6.在一些实施例中,在电子设备向应用服务器发送第一请求之前,所述方法还包括:所述电子设备接收到包含有所述一个或多个快应用的即时通信信息。
7.在一些实施例中,在所述电子设备向应用服务器发送第一请求之前,所述方法还包括:所述电子设备检测到作用于所述一个或多个快应用的图标上的用户操作。
8.在一些实施例中,在所述电子设备向应用服务器发送第一请求之前,所述方法还包括:所述电子设备接收到输入的快应用名称信息,所述快应用名称信息与所述一个或多个快应用具有对应关系。
9.在一些实施例中,所述方法还包括:当所述第一url与所述第二url不相同时,所述电子设备根据所述第二url从所述第三方服务器中获取第二数据;所述电子设备根据所述第二数据生成并显示所述目标快应用的首屏。
10.在一些实施例中,所述方法还包括:当所述第一url与所述第二url相同时,所述电子设备向应用服务器发送指示所述目标快应用的加速脚本命中成功的信息;当所述第一url与所述第二url不相同时,所述电子设备向应用服务器发送指示所述目标快应用的加速脚本命中失败的信息。
11.在一些实施例中,所述电子设备运行所述目标快应用的加速脚本,得到第一统一资源定位符url,包括:所述电子设备根据所述目标快应用的加速脚本获取设备数据,所述设备数据包括所述电子设备的媒体存取控制mac位址、引擎版本号、互联网协议ip地址、操作系统版本、所处的地址信息、网络类型、生厂商品牌中的一项或者多项;所述电子设备根据所述目标快应用的加速脚本和所述设备数据得到所述第一url。
12.第二方面,本技术实施例提供了一种启动快应用的方法。所述方法包括:应用服务器接收快应用的应用包;所述应用服务器根据所述应用包生成所述快应用的加速脚本;所述应用服务器接收第一电子设备发送的第一请求,所述第一请求用于指示所述应用服务器向所述第一电子设备发送所述快应用的加速脚本;所述应用服务器根据所述第一请求向所述第一电子设备发送所述快应用的加速脚本。
13.在一些实施例中,所述方法还包括:所述应用服务器接收一个或多个第二电子设备发送的所述快应用的加速脚本的命中结果;所述应用服务器根据所述命中结果计算所述快应用的加速脚本的命中率;在所述应用服务器根据所述第一请求向所述第一电子设备发送所述快应用的加速脚本之前,所述方法还包括:所述应用服务器确定所述快应用的加速脚本的命中率不小于预设值。
14.在一些实施例中,所述应用服务器根据所述应用包生成所述快应用的加速脚本,包括:解析所述应用包,得到对应于所述快应用首页显示的第一源代码;解析所述第一源代码,得到抽象语法树;在所述抽象语法树的一个或多个节点处注入统计上传代码,得到第二源代码;根据所述第二源代码得到处理后的应用包;运行所述处理后的应用包,得到所述统计上传代码指示的关键路径;根据所述关键路径从第一源代码中选取出第三源代码;根据所述第三源代码得到所述快应用的加速脚本。
15.第三方面,本技术实施例提供了一种启动快应用的方法。所述方法包括:集成开发平台接收用户输入的快应用的第一源代码;所述集成开发平台根据所述快应用的第一源代码生成所述快应用的应用包;所述集成开发平台根据所述快应用的第一源代码生成所述快应用的加速脚本;所述集成开发平台向应用服务器发送所述快应用的应用包和所述快应用的加速脚本。
16.在一些实施例中,所述集成开发平台根据所述快应用的第一源代码生成所述快应用的加速脚本,包括:从所述第一源代码中选取对应于所述快应用首页显示的第二源代码;解析所述第二源代码,得到抽象语法树;在所述抽象语法树的一个或多个节点处注入统计上传代码,得到第三源代码;根据所述第三源代码得到处理后的应用包;运行所述处理后的应用包,得到所述统计上传代码指示的关键路径;根据所述关键路径从第一源代码中选取出第四源代码;根据所述第四源代码得到所述快应用的加速脚本。
17.第四方面,本技术实施例提供了一种电子设备。所述电子设备包括一个或多个处理器、存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储程序代码,所述一个或多个处理器调用所述程序代码以使得所述电子设备执行以下操作:向应用服务器发送第一请求,所述第一请求用于指示应用服务器向所述电子设备发送一个或多个快应用的加速脚本;接收所述应用服务器发送的所述一个或多个快应用的加速脚本;检测到针对目标快应用的第一操作,响应于所述第一操作,向所述应用服务器发送第二请求,所述第二请求用于请求所述目标快应用的应用包,所述目标快应用的加速脚本包含于所述一个或多个快应用的加速脚本;响应于所述第一操作,运行所述目标快应用的加速脚本,得到第一统一资源定位符url,并根据所述第一url从第三方服务器中获取第一数据;接收所述应用服务器发送的所述目标快应用的应用包;运行所述目标快应用的应用包,得到第二url;当所述第一url与所述第二url相同时,根据所述第一数据生成并显示所述目标快应用的首屏。
18.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:接收到包含有所述一个或多个快应用的即时通信信息。
19.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:检测到作用于所述一个或多个快应用的图标上的用户操作。
20.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:接收到输入的快应用名称信息,所述快应用名称信息与所述一个或多个快应用具有对应关系。
21.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:当所述第一url与所述第二url不相同时,根据所述第二url从所述第三方服务器中获取第二数据;根据所述第二数据生成并显示所述目标快应用的首屏。
22.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:当所述第一url与所述第二url相同时,向应用服务器发送指示所述目标快应用的加速脚本命中成功的信息;当所述第一url与所述第二url不相同时,向应用服务器发送指示所述目标快应用的加速脚本命中失败的信息。
23.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述电子设备还执行以下操作:根据所述目标快应用的加速脚本获取设备数据,所述设备数据包括所述电子设备的媒体存取控制mac位址、引擎版本号、互联网协议ip地址、操作系统版本、所处的地址信息、网络类型、生厂商品牌中的一项或者多项;根据所述目标快应用的加速脚本和所述设备数据得到所述第一url。
24.第五方面,一种应用服务器,其特征在于,所述应用服务器包括一个或多个处理器、存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储程序代码,所述一个或多个处理器调用所述程序代码以使得所述应用服务器执行以下操作:接收快应用的应用包;根据所述应用包生成所述快应用的加速脚本;接收第一电子设备发送的第一请求,所述第一请求用于指示所述应用服务器向所述第一电子设备发送所述快应用的加速脚本;根据所述第一请求向所述第一电子设备发送所述快应用的加速脚本。
25.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述应用服务器还执行以下操作:接收一个或多个第二电子设备发送的所述快应用的加速脚本的命中结
果;根据所述命中结果计算所述快应用的加速脚本的命中率;确定所述快应用的加速脚本的命中率不小于预设值。
26.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述应用服务器执行以下操作:解析所述应用包,得到对应于所述快应用首页显示的第一源代码;解析所述第一源代码,得到抽象语法树;在所述抽象语法树的一个或多个节点处注入统计上传代码,得到第二源代码;根据所述第二源代码得到处理后的应用包;运行所述处理后的应用包,得到所述统计上传代码指示的关键路径;根据所述关键路径从第一源代码中选取出第三源代码;根据所述第三源代码得到所述快应用的加速脚本。
27.第六方面,本技术实施例提供了一种集成开发平台,其特征在于,所述集成开发平台包括一个或多个处理器、存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储程序代码,所述一个或多个处理器调用所述程序代码以使得所述集成开发平台执行以下操作:接收用户输入的快应用的第一源代码;根据所述快应用的第一源代码生成所述快应用的应用包;根据所述快应用的第一源代码生成所述快应用的加速脚本;向应用服务器发送所述快应用的应用包和所述快应用的加速脚本。
28.在一些实施例中,所述一个或多个处理器调用所述程序代码以使得所述集成开发平台还执行以下操作:从所述第一源代码中选取对应于所述快应用首页显示的第二源代码;解析所述第二源代码,得到抽象语法树;在所述抽象语法树的一个或多个节点处注入统计上传代码,得到第三源代码;根据所述第三源代码得到处理后的应用包;运行所述处理后的应用包,得到所述统计上传代码指示的关键路径;根据所述关键路径从第一源代码中选取出第四源代码;根据所述第四源代码得到所述快应用的加速脚本。
29.第七方面,本技术实施例提供了一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在电子设备上运行时,使得上述电子设备执行如上述第一方面至第三方面中任一方面以及第一方面至第三方面中的任一可能的实现方式描述的方法。
30.第八方面,本技术实施例提供了一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得上述电子设备执行如上述第一方面至第三方面中任一方面以及第一方面至第三方面中的任一可能的实现方式描述的方法。
31.本技术实施例中,电子设备向应用服务器请求一个或多个快应用的加速脚本;检测到针对目标快应用的第一操作,响应于该第一操作,该电子设备向该应用服务器请求该目标快应用的应用包,该目标快应用的加速脚本包含于该一个或多个快应用的加速脚本;响应于该第一操作,该电子设备运行该目标快应用的加速脚本,得到第一url,并根据该第一url获取第一数据;电子设备可以根据该第一数据生成并显示该目标快应用的首屏。这种方式中,可以通过加速脚本预先获取快应用的首屏显示所需的数据,提升启动快应用的效率。
附图说明
32.图1a是本技术实施例提供的一种应用系统的示意图;
33.图1b是本技术实施例提供的一种快应用首次启动的流程图;
34.图1c是本技术实施例提供的一种快应用的搜索界面的示意图;
35.图1d是本技术实施例提供的一种显示应用列表的用户界面的示意图;
36.图2a是本技术实施例提供的一种电子设备10的结构示意图;
37.图2b是本技术实施例提供的一种电子设备20的结构示意图;
38.图2c是本技术实施例提供的一种电子设备10的软件结构框图;
39.图2d是本技术实施例提供的一种应用服务器200的软件结构框图;
40.图2e是本技术实施例提供的一种开发设备100的软件结构框图;
41.图3a是本技术实施例提供的一种启动快应用的方法的流程图;
42.图3b是本技术实施例提供的一种快应用启动进程以及加速脚本的执行进程的示意图;
43.图4a是本技术实施例提供的一种即时通信应用的聊天界面的示意图;
44.图4b是本技术实施例提供的另一种应用商店中的快应用搜索界面的示意图;
45.图4c是本技术实施例提供的一种快应用的详情页的示意图;
46.图5a是本技术实施例提供的一种加速脚本生成模块的软件结构框图;
47.图5b是本技术实施例提供的另一种加速脚本生成模块的软件结构框图。
具体实施方式
48.下面将结合附图对本技术实施例中的技术方案进行清除、详尽地描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
49.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
50.首先,对本技术涉及到的一些概念进行具体的介绍。
51.本技术实施例中的用户界面(user interface,ui),是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。应用程序的用户界面是通过java、可扩展标记语言(extensible markup language,xml)等特定计算机语言编写的源代码,界面源代码在电子设备300设备上经过解析,渲染,最终呈现为用户可以识别的内容,比如图片、文字、按钮等控件。控件(control),是用户界面的基本元素,典型的控件有按钮(button)、小工具(widget)、工具栏(toolbar)、菜单栏(menu bar)、文本框(text box)、滚动条(scrollbar)、图片和文本。界面中的控件的属性和内容是通过标签或者节点来定义的,比如xml通过《textview》、《imgview》、《videoview》等节点来规定界面所包含的控件。一个节点对应界面中一个控件或属性,节点经过解析和渲染之后呈现为用户可视的内容。此外,很多应用程序,比如混合应用(hybrid application)的界面中通常还包含有网页。网页,也称为页面,可以理解为内嵌在应用程序界面中的一个特殊的控件,网页是通过特定计算机语言编写的源代码,例如超文本标记语言(hyper text markup language,html),层叠样式表(cascading style sheets,css),java脚本(javascript,js)等,网页源代码可以由浏览器或与浏览器功能类似的网页显示组件加载和显示为用户可识别的内容。网页所包含的具体内容也是通过网页源代码中的标
签或者节点来定义的,比如html通过《p》、《img》、《video》、《canvas》来定义网页的元素和属性。
52.用户界面常用的表现形式是图形用户界面(graphic user interface,gui),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的一个窗口、控件等界面元素。
53.集成开发环境(integrated development environment,ide),是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些还可以设计图形接口。ide通常包括编程语言编辑器、自动构建工具、调试器等。有些ide包含编译器/解释器,有些则不包含。这些ide可以通过调用第三方编译器来实现代码的编译工作。可选的,ide还会包含版本控制系统和一些可以设计图形用户界面的工具。许多支持面向对象的现代化ide还包括了类别浏览器、对象查看器、对象结构图,等等。在本技术实施例中,快应用通常在特定的ide中进行开发,例如,ide可以为华为快应用的ide。
54.引擎(engine),是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏引擎、搜索引擎、杀毒引擎等。在本技术实施例中,快应用需要通过专门的引擎解释执行。
55.接下来,对本技术实施例提供的应用系统进行介绍。请参见图1a,图1a是本技术实施例提供的一种应用系统的示意图。应用系统10可以包括开发设备100,应用服务器200,智能终端300以及第三方服务器400。其中:
56.开发设备100,可以为笔记本电脑、台式电脑等配置有ide的电子设备,图1a中以台式电脑为例。程序开发人员可以借助开发设备100编写快应用的源代码。在快应用的源代码编写完成之后,开发设备100可以根据源代码生成快应用的应用包,并将这些应用包上传到应用服务器200中,供用户进行下载使用。其中,应用包是可自行解压缩文件的集合,可以解析出运行快应用所需的文件。
57.应用服务器200,可以接收并存储开发设备100上传的快应用的应用包,以及为智能终端300提供快应用包的下载服务。具体的,应用服务器200可以接收智能终端300发送的下载请求,该下载请求中包含快应用的标识。应用服务器200根据该快应用的标识向智能终端300发送该快应用的应用包。
58.智能终端300,可以为智能手机、平板电脑等可支持快应用运行的电子设备,图1a中以智能手机为例。用户可以通过智能终端300从应用服务器200中下载快应用的应用包。
59.第三方服务器400,可以为快应用提供运行时所需的数据,例如,可以为新闻类的快应用提供新闻列表、新闻内容等数据。在快应用初始化的过程中,智能终端300解析出应用首屏显示所需的数据对应的url,并根据该url向第三方服务器400请求这些数据。
60.目前,快应用首次启动的流程可以参照图1b所示的流程图。该流程包括以下步骤:
61.参见图1c,本技术实施例提供的一种快应用的搜索界面的示意图。如图1c示例性所示的用户界面31所示,。
62.s101、检测到用户点击键盘306中的搜索控件,响应于该点击操作,智能终端300向应用服务器200请求符合用户输入的名称的小程序的应用信息。
63.在一些实施例中,智能终端300可以向应用服务器200发送请求,该请求中包含用户输入的名称,该请求用于指示应用服务器200向智能终端300发送符合输入名称的小程序的应用信息。
64.s102、响应于该请求,应用服务器200向智能终端300发送符合用户输入的名称的小程序的应用信息。
65.具体的,应用服务器200根据用户输入的名称确定符合用户输入的名称的小程序,再向智能终端300发送符合用户输入的名称的小程序的应用信息。
66.s103、在接收到应用服务器200发送的应用信息之后,智能终端300根据应用信息显示应用列表。
67.显示该应用列表的用户界面可参照如图1d示例性所示的用户界面32所示。用户界面32中包括两个列表选项,选项320以及选项322。
68.s104、检测到用户点击选项320,响应于该点击操作,智能终端300向应用服务器200请求下载选项320对应的快应用的应用包。
69.s105、响应于该请求,应用服务器200向智能终端300发送“新闻网”快应用的应用包。
70.需要说明的是,在s106之前,应用服务器200中存储有“新闻网”快应用的应用包。该“新闻网”快应用的应用包是开发设备100向应用服务器200发送的。
71.s106、在接收应用服务器200发送的应用包之后,智能终端300初始化该快应用,从应用包中解析出该快应用首屏显示所需数据的url。
72.s107、智能终端300根据该url向第三方服务器400请求下载该快应用首屏显示所需的数据。
73.具体的,在执行s107之前,微信应用中快应用的引擎确定本地没有该url对应的数据。
74.s108、响应于该请求,第三方服务器400向智能终端300发送该数据。
75.s109、在接收第三方服务器400发送的数据之后,智能终端300根据该数据渲染生成并显示“新闻网”快应用的首屏。
76.在上述场景中,智能终端300需要下载完“新闻网”快应用的应用包之后,再根据从应用包中解析得到的url从第三方服务器400中下载首屏显示所需的数据,导致首次启动“新闻网”快应用的耗时较长。
77.在本技术实施例中,响应于该点击操作,智能终端300还向应用服务器请求该应用列表中的两个快应用的加速脚本。其中,该加速脚本可以解析出该加速脚本对应的快应用的首屏显示所需数据对应的url。在检测到用户点击选项320时,响应于该点击操作,智能终端300向应用服务器200请求下载选项320对应的快应用的应用包,同时,智能终端执行加速脚本,根据解析出的url向第三方服务器400请求首屏显示所需数据。应用包下载完成之后,智能终端300初始化该快应用,在快应用请求首屏显示所需数据时,引擎可以将下载好的数据发送给快应用,这样,快应用可以根据下载好的数据渲染生成并显示首屏。通过这种方式,可以节省下载首屏显示所需的数据的时间,提升启动快应用的效率。
78.在本技术实施例中,智能终端300可以为一种电子设备,下面对本技术实施例涉及的电子设备10进行介绍。请参阅图2a,图2a是本技术实施例提供的电子设备10的结构示意
图。
79.电子设备10可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户身份标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
80.应该理解的是,图1a所示电子设备10仅是一个范例,并且电子设备10可以具有比图1a中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
81.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
82.其中,控制器可以是电子设备10的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
83.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
84.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户身份标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
85.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备10的触摸功能。
86.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。
local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。在本技术实施例中,电子设备10可以通过无线通信模块160与应用服务器200以及第三方服务器400建立通信连接。
100.在一些实施例中,电子设备10的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备10可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。
101.电子设备10通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
102.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备10可以包括1个或n个显示屏194,n为大于1的正整数。
103.电子设备10可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
104.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。
105.摄像头193用于捕获静态图像或视频。在一些实施例中,电子设备10可以包括1个或n个摄像头193,n为大于1的正整数。
106.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备10在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
107.视频编解码器用于对数字视频压缩或解压缩。电子设备10可以支持一种或多种视频编解码器。这样,电子设备10可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
108.npu为神经网络(neural-network,nn)计算处理器。通过npu可以实现电子设备10的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
109.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备10的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
110.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备10的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备10使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
111.电子设备10可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
112.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。
113.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备10可以通过扬声器170a收听音乐,或收听免提通话。
114.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备10接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
115.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备10可以设置至少一个麦克风170c。
116.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
117.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。当有触摸操作作用于显示屏194,电子设备10根据压力传感器180a检测所述触摸操作强度。电子设备10也可以根据压力传感器180a的检测信号计算触摸的位置。
118.陀螺仪传感器180b可以用于确定电子设备10的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定电子设备10围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。陀螺仪传感器180b还可以用于导航,体感游戏场景。
119.气压传感器180c用于测量气压。在一些实施例中,电子设备10通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
120.磁传感器180d包括霍尔传感器。电子设备10可以利用磁传感器180d检测翻盖皮套的开合。
121.加速度传感器180e可检测电子设备10在各个方向上(一般为三轴)加速度的大小。
当电子设备10静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
122.距离传感器180f,用于测量距离。电子设备10可以通过红外或激光测量距离。
123.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备10通过发光二极管向外发射红外光。电子设备10使用光电二极管检测来自附近物体的红外反射光。电子设备10可以利用接近光传感器180g检测用户手持电子设备10贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。
124.环境光传感器180l用于感知环境光亮度。电子设备10可以根据感知的环境光亮度自适应调节显示屏194亮度。
125.指纹传感器180h用于采集指纹。电子设备10可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
126.温度传感器180j用于检测温度。在一些实施例中,电子设备10利用温度传感器180j检测的温度,执行温度处理策略。
127.触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。例如,触摸事件类型可以是单击事件、双击事件、长按事件、按压(force touch)事件、拖拽事件,等等。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备10的表面,与显示屏194所处的位置不同。
128.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。
129.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备10可以接收按键输入,产生与电子设备10的用户设置以及功能控制有关的键信号输入。
130.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。
131.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
132.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备10的接触和分离。电子设备10可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。在一些实施例中,电子设备10采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备10中,不能和电子设备10分离。
133.本技术实施例中,开发设备100可以为一种电子设备,下面对本技术实施例涉及的电子设备20进行介绍。请参阅图2b,图2b是本技术实施例提供的电子设备20的结构示意图。举例而言,该电子设备20可以是台式电脑、笔记本电脑等设备。如图2b所示,电子设备20可
包括处理器102、存储器103、无线通信处理模块104、电源开关105、输入模块106和输出模块107。这些部件可以通过总线连接。其中:
134.处理器102可用于读取和执行计算机可读指令。具体实现中,处理器102可主要包括控制器、运算器和寄存器。其中,控制器主要负责指令译码,并为指令对应的操作发出控制信号。运算器主要负责执行定点或浮点算数运算操作、移位操作以及逻辑操作等,也可以执行地址运算和转换。寄存器主要负责保存指令执行过程中临时存放的寄存器操作数和中间操作结果等。具体实现中,处理器102的硬件架构可以是专用集成电路(application specific integrated circuits,asic)架构、mips架构、arm架构或者np架构等等。
135.在一些实施例中,处理器102可以用于根据开发人员编写的快应用的源代码生成快应用的应用包。处理器102还可以用于解析无线通信处理模块104接收到的信号,以及生成无线通信处理模块104向外发送的信号。
136.存储器103与处理器102耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储器103可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器103可以存储操作系统,例如windows、android等嵌入式操作系统。存储器103还可以存储通信程序,该通信程序可用于与应用服务器200,或附加设备进行通信。
137.无线通信处理模块104可以提供应用在电子设备20上的包括无线局域网(wireless local area networks,wlan)(如wi-fi网络),蓝牙(bluetooth,bt),ble广播,全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。电子设备20可以通过无线通信处理模块104与其他设备建立无线通信连接,通过蓝牙或wlan中的一种或多种无线通信技术与其他设备进行通信。在一些实施例中,电子设备20可以通过无线通信模块104向应用服务器200发送快应用的应用包。
138.无线通信处理模块104还可以包括蜂窝移动通信处理模块(未示出)。蜂窝移动通信处理模块可以通过蜂窝移动通信技术与其他设备(如服务器)进行通信。
139.电源开关105可用于控制电源向大屏设备200的供电。
140.输入模块106可用于接收用户输入的指令,举例而言,该输入模块106可以包括鼠标、键盘、触摸板、触控屏、麦克风等一项或多项。
141.输出模块107可用于输出信息,举例而言,电子设备20中包括一块或者多块显示屏,显示屏可用于显示图像,视频等。显示屏包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。另外,输出模块107还可以包括扬声器、音箱等一项或者多项。
142.可以理解的是,图2b示意的结构并不构成对电子设备20的具体限定。在本技术另一些实施例中,电子设备20可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实
现。
143.电子设备10的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的android系统为例,示例性说明电子设备10的软件结构。
144.图2c是本技术实施例提供的一种电子设备10的软件结构框图。
145.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用层,应用框架层,安卓运行时(android runtime)和系统库,以及内核层。
146.应用层可以包括一系列应用包。如图2c所示,应用包可以包括快应用中心,微信,图库,音乐,视频,短信息等应用。
147.其中,快应用中心可以为快应用提供运行所需的功能。快应用中心可以为一个应用,快应用中心还可以作为一项功能集成在其他可以提供快应用的应用中,例如:微信、应用商店、谷歌,等等。
148.具体的,快应用中心可以包括预取模块、运行模块和统计上传模块。在本技术实施例中,预取模块可以根据应用服务器200发送的加速脚本得到快应用首屏显示所需数据的第一url,并根据该第一url从第三方服务器400中获取该首屏显示所需的数据。运行模块可以运行快应用,在快应用首次开启的场景中,运行模块可以根据应用服务器200发送的应用包初始化该快应用,解析出该快应用首屏显示所需的数据的第二url。在第一url与第二url相同的情况下,运行模块从预取模块中获取首屏显示所需的数据。统计上传模块,可以根据第一url和第二url向应用服务器200反馈加速脚本的命中情况。若第一url与第二url相同,则向应用服务器200反馈该快应用的加速脚本命中成功,若第一url与第二url不相同,则向应用服务器200反馈该快应用的加速脚本命中失败。在一些实施例中,快应用中心也可以不包括统计上传模块。
149.应用框架层为应用层的应用提供应用编程接口(application programming interface,api)和编程框架。应用框架层包括一些预先定义的函数。
150.如图2c所示,应用框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
151.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
152.内容提供器用来存放和获取数据,并使这些数据可以被应用访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
153.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
154.电话管理器用于提供电子设备10的通信功能。例如通话状态的管理(包括接通,挂断等)。
155.资源管理器为应用提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
156.通知管理器使应用可以在状态栏中显示通知信息,可以用于传达告知类型的消
息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,智能终端振动,指示灯闪烁等。
157.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
158.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
159.应用层和应用框架层运行在虚拟机中。虚拟机将应用层和应用框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
160.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
161.表面管理器用于对显示子系统进行管理,并且为多个应用提供了2d和3d图层的融合。
162.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,g.264,mp3,aac,amr,jpg,png等。
163.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2d图形引擎是2d绘图的绘图引擎。
164.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
165.需要说明的,图2c所示的电子设备的软件架构仅仅是本技术实施例的一种实现方式,实际应用中,电子设备还可以包括更多或更少的软件模块,这里不作限制。在本技术实施例中,智能终端300在如图2c所示的软件结构的基础上,还可以包括包括显示模块,该显示模块用于根据各个软件模块的运行而显示对应的用户界面。该显示模块显示的用户界面可参照如图1c,图1d,图4a-图4c所示的用户界面。该显示模块具体可以实现为图2a中的显示屏194。
166.图2d是本技术实施例提供的一种应用服务器200的软件结构框图。该应用服务器200可以包括应用包存储模块、加速脚本生成模块、加速脚本存储模块、数据统计模块和下发模块。
167.其中,应用包存储模块可以用于存储开发设备100向应用服务器200发送的应用包。
168.加速脚本生成模块可以根据应用包存储模块中的应用包生成该应用包对应的加速脚本。具体的,一个应用包对应一个加速脚本。
169.加速脚本存储模块可以用于存储加速脚本生成模块生成的加速脚本。可选的,一个快应用的应用包和加速脚本可以包含有相同的应用标识。
170.数据统计模块,可以用于计算加速脚本的命中率。数据统计模块可以包含分析模块和数据存储模块。其中,数据存储模块可以存储智能终端300发送的加速脚本的命中结果。分析模块可以根据该命中结果计算一个加速脚本的命中率。
171.下发模块,可以用于接收智能终端300发送的请求,响应于该请求,向智能终端300发送快应用的应用包或者加速脚本。在一些实施例中,下发模块可以根据请求中的应用标识,从应用包存储模块中选取要发送的应用包,或者根据请求中的应用标识,从加速脚本存储模块中选取要发送的加速脚本。在一些实施例中,下发模块可以接收数据统计模块发送的一个加速脚本的命中率,比较该命中率和预设值,确定是否向智能终端300发送加速脚本。举例而言,该预设值可以为90%,还可以为其他数据,此处仅为示例。若命中率不小于该预设值,则下发模块向智能终端300发送加速脚本。若命中率小于该预设值,则下发模块不向智能终端300发送加速脚本。
172.在一些实施例中,应用服务器200也可以不包括数据统计模块。在一些实施例中,应用服务器200也可以不包括加速脚本生成模块。在这种情况下,应用服务器200可以接收并存储开发设备100发送的加速脚本。
173.图2e是本技术实施例提供的一种开发设备100的软件结构框图。其中,开发设备100可以包括打包模块、加速脚本生成模块和上传模块。具体的,打包模块可以接收用户编写的快应用的源程序(或称为源代码),并根据该源代码生成快应用的应用包。加速脚本生成模块可以根据用户编写的快应用的源程序生成该快应用对应的加速脚本。具体的,一个快应用对应一个加速脚本。上传模块可以向应用服务器200发送生成的应用包以及加速脚本。在一些实施例中,开发设备100可以不包括加速脚本生成模块。在这种情况下,应用服务器200中包括加速脚本生成模块。
174.下面基于上述内容中介绍的应用系统10、开发设备100、应用服务器200、智能终端300和第三方服务器400,结合其他附图对本技术实施例提供的启动应用的方法进行详细说明。需要说明的是,在本技术实施例中,该快应用是首次启动的,即,智能终端300中没有存储该快应用的应用包。参见图3a,是本技术实施例提供的一种启动快应用的方法的流程图。该方法包括以下步骤:
175.s301、检测到用户点击键盘306中的搜索控件,响应于该点击操作,向应用服务器200发送第一请求,该第一请求用于请求下载符合用户输入的名称的快应用的应用信息和加速脚本。智能终端300的显示界面可参照图1c所示的用户界面31。
176.s302、在应用服务器200接收了智能终端300发送的第一请求之后,应用服务器200根据该第一请求向智能终端300发送符合用户输入的名称的快应用的应用信息和加速脚本。
177.应用服务器200与智能终端300预先建立有连接关系,例如华为手机可以预先与华为的应用服务器建立连接关系。具体的,应用服务器200根据用户输入的名称确定符合用户输入的名称的快应用,再向智能终端300发送符合用户输入的名称的快应用的应用信息和加速脚本。
178.在一些实施例中,符合用户输入的名称的小程序的名称可以与输入的名称相同,或者包含输入名称中的全部或者部分字符。该应用信息可以包括快应用的名称、图标、介绍信息,等等。示例性的,用户输入的名称为“新闻网”,则应用服务器200确定出的符合用户输入的名称的小程序为“新闻网”和“新闻中心”。
179.在又一种可能的实现方式中,符合用户输入的名称的小程序还可以包括与用户输入的名称所对应的小程序类型相同的小程序。举例而言,若用户输入的名称为“视频网”,则
符合用户输入的名称的小程序可以包括“视频网”,还可以包括与“视频网”同类型的“xx播放器”“韩剧中心”等视频类快应用。
180.在一些实施例中,应用服务器200的加速脚本存储模块中预存有多个快应用的加速脚本。应用服务器200的下发模块可以根据确定出的快应用“新闻网”以及“新闻中心”的标识从该多个加速脚本中,选取出“新闻网”以及“新闻中心”的加速脚本。在本技术实施例中,加速脚本的大小一般比较小,例如,8千字节(kb)、10kb,等等。
181.在一些实施例中,应用服务器200的下发模块向智能终端300发送该“新闻网”的加速脚本之前,应用服务器200的下发模块确定“新闻网”的加速脚本的命中率不小于预设值。相似的,可以对“新闻中心”的命中率进行相同方式的确认。通过这种方式,可以提升加速脚本的正确率。
182.可选的,应用服务器200的数据统计模块可以对一个加速脚本的命中率进行计算。该数据统计模块可以接收多个智能终端300反馈的命中结果。具体的,若根据加速脚本得到的第一url与根据应用包得到的第二url相同,表明该加速脚本可以得出正确的快应用首屏显示所需数据的url,则判定该加速脚本命中成功。若第一url与第二url不相同,表明该加速脚本得出的快应用首屏显示所需数据的url有误,则判定加速脚本命中失败。智能终端300的统计上传模块可以实时发送加速脚本的命中结果给应用服务器200。举例而言,在执行了本实施例的步骤s309之后,本智能终端300可以向应用服务器200此次发送“新闻网”的加速脚本的命中结果。
183.以下对“新闻网”的加速脚本命中率的计算方式进行示例性的说明。在一定的预设时间(例如,10分钟、20分钟,等时间值)内,数据存储模块存储了1000次“新闻网”的加速脚本的命中结果,其中,命中成功的结果有968次,则分析模块根据这些命中结果的得到的命中率为96.8%。若预设值为90%,则下发模块确定该命中率大于预设值,下发模块向智能终端300发送该“新闻网”的加速脚本。在一些实施例中,数据统计模块可以每隔预设时间段计算一个“新闻网”的加速脚本的命中率。
184.在另一些实施例中,应用服务器200的下发模块向智能终端300发送该“新闻网”的加速脚本之前,应用服务器200的下发模块确定“新闻网”的加速脚本的大小不大于预设阈值。例如,该预设阈值可以为15kb、20kb,等等。通过这种方式,可以确保发送的加速脚本的的大小较小,下载速度较快。
185.s303、在接收到应用服务器200发送的应用信息以及加速脚本之后,智能终端300根据应用信息显示应用列表,并存储加速脚本。
186.显示该快应用的应用列表的用户界面可参照如图1d示例性所示的用户界面32所示。用户界面32中包括两个列表选项,选项320以及选项322。在一些实施例中,智能终端300存储加速脚本的方式可以是缓存,通过这种方式,可以快速读取到加速脚本。
187.s304、检测到用户点击选项320,响应于该点击操作,智能终端300向应用服务器200发送第二请求,该第二请求用于请求下载选项320对应的快应用(即,“新闻网”)的应用包。
188.其中,该第二请求中可以包含“新闻网”的标识。可选的,响应于该点击操作,智能终端300的快应用中心的运行模块向应用服务器200发送第二请求。
189.s305、在应用服务器200接收了智能终端300发送的第二请求之后,应用服务器200
根据该第二请求向智能终端300发送“新闻网”的应用包。
190.其中,应用服务器200的应用包存储模块中预存有多个快应用的应用包。应用服务器200的下发模块可以根据第二请求中的“新闻网”的标识,从该多个应用包中,选取出“新闻网”的应用包。
191.s306、响应于该点击操作,智能终端300还运行“新闻网”的加速脚本,得到该快应用首屏显示所需的数据的第一url。
192.在一些实施例中,智能终端300可以根据“新闻网”的加速脚本获取智能终端300的媒体存取控制位址(media access control address,mac地址)、引擎版本号、互联网协议地址(ip地址)、操作系统版本、智能终端300所处的地址信息(例如,hangzhou、guangzhou等信息)、智能终端300当前的网络类型(例如,3g,4g,wifi,等等),智能终端300的生厂商品牌(例如,华为)中的一项或者多项,再根据获取到的信息生成该第一url。
193.s307、智能终端300根据该第一url向第三方服务器400发送第三请求,该第三请求用于请求下载该快应用首屏显示所需的数据。
194.可选的,智能终端300的快应用中心的预取模块可以运行该“新闻网”的加速脚本,并根据该第一url向向第三方服务器400发送该第三请求。
195.s308、在第三方服务器400接收了智能终端300发送的第三请求之后,第三方服务器400根据该第三请求向智能终端300发送“新闻网”首屏显示所需的数据。
196.可选的,智能终端300的快应用中心的预取模块可以存储该第三方服务器400发送的“新闻网”首屏显示所需的数据。或者,智能终端300的存储模块存储该数据,该预取模块可以记录该数据的存储路径。
197.s309、在智能终端300接收了应用服务器200发送的“新闻网”的应用包之后,智能终端300初始化该应用包,得到该快应用首屏显示所需的数据的第二url。
198.可选的,智能终端300的快应用中心的运行模块可以初始化该应用包。
199.s310、在第一url与第二url相同的情况下,则智能终端300根据第一url请求得到的数据渲染生成并显示“新闻网”快应用的首屏。
200.可选的,在第一url与第二url相同的情况下,运行模块从预取模块中获取已下载的数据或者该数据的存储路径,再根据该已下载的数据渲染生成并显示首屏。示例性的,快应用启动进程以及加速脚本的执行进程可以参照图3b所示的示意图。
201.在一些实施例中,在第一url与第二url不相同的情况,智能终端根据第二url从该第三方服务器中获取新的数据,再根据新的数据渲染生成并显示快应用的首屏。
202.通过这种方式,智能终端300可以根据“新闻网”快应用的加速脚本解析出的第一url下载的数据,渲染生成并显示首屏。可以在下载应用包以及初始化应用包的同时,下载快应用的首屏显示所需的数据,节省快应用的启动时间,提升启动快应用的效率。
203.在一些实施例中,用户也可以选择两个或两个以上的快应用选项,在这种情况下,响应于该点击操作,智能终端300请求下载这些选项对应的快应用的应用包,并且运行这些应用包对应的加速脚本,再按照上述介绍的方式显示这些快应用的首屏。例如,分屏场景,智能终端300可以在多个显示区域中的每个显示区域分别显示一个快应用的首屏。
204.以上实施例中介绍了在用户搜索快应用的场景中,本技术实施例提供的启动应用的方式的实施过程。需要说明的是,本技术实施例中的启动应用的方法还可以应用在其他
使用场景中。以下对一些其他的场景进行介绍。
205.参见图4a,是本技术实施例提供的一种即时通信应用的聊天界面的示意图。如图4a所示,用户界面41中包括显示区域400以及输入区域402。其中,显示区域400用于显示使用本智能终端300的用户与聊天对象(即,lisa)的聊天记录。输入区域402用于输入聊天消息,例如,文字、语音、表情等。
206.当智能终端300接收到聊天对象发送的快应用信息404时,智能终端300的预取模块可以向应用服务器200发送请求,以获取“新闻网”的加速脚本。可选的,在智能终端300的预取模块向应用服务器200发送请求之前,预取模块判定智能终端本地没有存储该“新闻网”的加速脚本。通过这种方式,可以避免重复获取加速脚本而造成的时间浪费的问题。
207.当检测到用户点击快应用信息404时,响应于该点击操作,智能终端300的预取模块运行该加速脚本,根据得到的第三url向应用服务器200发送请求,以获取“新闻网”的首屏显示所需的数据。另外,响应于该点击操作,智能终端300的运行模块向应用服务器200发送请求,以获取“新闻网”的应用包。在接收到应用服务器200发送的应用包之后,运行模块初始化该应用包,得到首屏显示所需的数据的第四url。在第三url和第四url相同的情况下,运行模块从预取模块中获取已下载的数据,再根据该已下载的数据渲染生成并显示“新闻网”快应用的首屏。
208.通过这种方式,当接收到快应用消息时,智能终端300获取“新闻网”快应用的加速脚本。当用户点击该快应用消息时,智能终端300获取“新闻网”快应用的应用包,同时,根据该加速脚本预先获取快应用的首屏显示所需的数据,可以节省快应用的启动时间,提升启动快应用的效率。
209.在另一些实施例中,当接收到聊天对象发送的快应用信息404时,智能终端300的预取模块可以向应用服务器200发送请求,以获取“新闻网”的加速脚本。另外,在接收到应用服务器200发送的加速脚本之后,智能终端300预取模块运行该加速脚本,根据得到的第三url向应用服务器200发送请求,以获取“新闻网”的首屏显示所需的数据。
210.通过这种方式,可以在应用包下载之前,通过加速脚本预先获取快应用的首屏显示所需的数据,在后续应用包初始化的过程中,可以利用已下载好的数据进行快应用首屏的渲染,节省快应用的启动时间,提升启动快应用的效率。
211.参见图4b,是本技术实施例提供的另一种应用商店中的快应用搜索界面的示意图。
212.如图4b所示,用户界面42可以显示多个快应用的图标,示例性的,用户界面42中显示了“新闻网”快应用的图标411,“新闻中心”快应用的图标413和“记事本”快应用的图标415。
213.当检测到用户点击图标411时,响应于该点击操作,智能终端300从显示用户界面42切换为显示用户界面43。参见图4c,是本技术实施例提供的一种快应用的详情页的示意图。其中,用户界面43用于显示有关于“新闻中心”快应用的详情信息,例如:图标、名称、下载次数、应用介绍、评论、相关推荐,等等。
214.具体的,响应于该点击操作,智能终端300的预取模块可以向应用服务器200发送请求,以获取“新闻网”的应用信息以及加速脚本。可选的,在智能终端300的预取模块向应用服务器200发送请求之前,预取模块判定智能终端本地没有存储该“新闻网”的加速脚本。
通过这种方式,可以避免重复获取加速脚本而造成的时间浪费的问题。
215.当检测到用户点击打开控件417时,响应于该点击操作,智能终端300的预取模块运行该加速脚本,根据得到的第五url向应用服务器200发送请求,以获取“新闻网”的首屏显示所需的数据。另外,响应于该点击操作,智能终端300的运行模块向应用服务器200发送请求,以获取“新闻网”的应用包。在接收到应用服务器200发送的应用包之后,运行模块初始化该应用包,得到首屏显示所需的数据的第六url。在第五url和第六url相同的情况下,运行模块从预取模块中获取已下载的数据,再根据该已下载的数据渲染生成并显示“新闻网”快应用的首屏。
216.通过这种方式,当用户查看快应用的详情消息时,智能终端300获取“新闻网”快应用的加速脚本。当用户点击打开控件时,智能终端300获取“新闻网”快应用的应用包,同时,根据该加速脚本预先获取快应用的首屏显示所需的数据,可以节省快应用的启动时间,提升启动快应用的效率。
217.在另一些实施例中,当检测到用户点击图标411时,智能终端300的预取模块可以向应用服务器200发送请求,以获取“新闻网”快应用的加速脚本。另外,在接收到应用服务器200发送的加速脚本之后,智能终端300预取模块运行该加速脚本,根据得到的第五url向应用服务器200发送请求,以获取“新闻网”快应用的首屏显示所需的数据。通过这种方式,可以在应用包下载之前,通过加速脚本预先获取快应用的首屏显示所需的数据,在后续应用包初始化的过程中,可以利用已下载好的数据进行快应用首屏的渲染,节省快应用的启动时间,提升启动快应用的效率。
218.需要说明的是,除以上介绍的三个应用场景,本技术实施例提供的启动应用的方法还可以适用于其他场景。举例而言,智能终端300中可以包括低功耗摄像头,智能终端300可以根据该低功耗摄像头识别到的手势信息来确定向应用服务器200请求加速脚本。
219.在另一些实施例中,在检测到用户开启一个可以运行快应用的应用时,智能终端300可以根据用户的行为习惯、快应用使用记录、用户画像等信息预先下载一些快应用的加速脚本。在用户后续触发这些快应用启动时,智能终端300通过加速脚本预先获取到快应用的首屏显示所需的数据,节省快应用的启动时间,提升启动快应用的效率。
220.在这些场景中,可以通过加速脚本预先获取到快应用的首屏显示所需的数据,节省快应用的启动时间,提升启动快应用的效率。
221.以上介绍了本技术实施例提供的启动快应用的方法的实施流程。以下将进一步介绍加速脚本生成模块根据应用包生成加速脚本的方式。
222.第一种方式,加速脚本生成模块可以参照图5a所示的软件结构框图。其中,该加速脚本生成模块包括解析模块、语法分析模块、代码注入模块、试运行模块、分析模块和裁剪模块。
223.具体的,解析模块用于解析应用包,得到快应用启动时有关于首页显示的源代码。举例而言,在快应用的场景下,有关于首页显示的源代码在应用包根目录下的配置文件(例如,manifest.json)里指明的。在manifest.json文件中,router.entry即代表应用的入口,在这个入口里的js文件,即首屏显示需要的源代码。
224.语法分析模块,用于采用语法分析的方式将该源代码解析为抽象语法树((abstract syntax tree,ast),或简称语法树(syntax tree))。其中,语法分析
(syntactic analysis,或称为parsing)是根据的应用编写时使用的形式规则对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。语法分析可以通过语法分析器来实现。语法分析器(parser)通常是作为编译器或解释器的组件出现的,它的作用是进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输入字符流中分离出一个个的“单词”,并将单词流作为其输入。
225.其中,ast是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。
226.代码注入模块,用于通过分析抽象语法树,并在抽象语法树的选取出的节点处注入统计上传代码。其中,该选取出的节点可以为函数入口、逻辑分叉节点、变量的获得(getter)和设置(setter)节点和应用内网络资源请求(即,请求首屏显示所需数据)节点,等等节点的一个或多个。举例而言,该统计上传代码输出的数据可以包括:被运行到的代码的具体位置(例如,处在哪个文件第几行)以及被运行到的时刻。该统计上传代码用于确定节点所属的子代码中已执行的代码在源代码中的具体位置。在源代码中注入统计上传代码之后,代码注入模块将处理后的源代码重新打包,以得到处理后的应用包。接着,代码注入模块将处理后的应用包发送给试运行模块。
227.可选的,本技术实施例中,可以使用钩子技术拦截变量的获得(getter)和设置(setter)操作。其中,钩子技术是一种拦截并改变程序原生行为的方式。可以通过钩子钩住程序的一个调用,在程序将要执行此一个调用前先执行钩子中预定义的逻辑,并在执行完预定义逻辑后选择执行或不执行程序的原生行为。通过钩子技术拦截变量的获得(getter)和设置(setter)操作,可以在该变量被用到(比如,获取该变量的值及修改该变量的值)的时候能够被感知到,以确定该变量是否可以被精简。试运行模块,用于运行处理后的应用包,得到统计上传代码反馈的自身所在节点所属的子代码中已执行的代码在源代码中的具体位置。之后,试运行模块将运行结果和处理后的应用包发送给分析模块。
228.分析模块,用于根据试运行模块反馈的运行结果,从处理后的应用包中确定从应用初始化到进行应用内网络请求的关键路径。具体的,运行模块反馈的位置信息反映了节点所属的子代码的每一行代码是否有被执行到的记录,根据这些记录,可以确定哪些代码是关键路径。
229.下面一段代码进行示例性的说明。其中,fetch(url)是应用内网络资源请求节点。
230.源代码:
231.[0232][0233]
根据运行模块反馈的位置信息,可以得到的关键路径如下:
[0234][0235][0236]
其中,未执行到的代码可以称为非关键路径。本技术实施例中,非关键路径可以存在以下几种情况。
[0237]
1、未被执行到的函数,如foo_method2()以及unused_method()。具体的foo_method2()在执行到fetch(url)之前未被执行,unused_method()在fetch(url)之前执行,但其执行后,后续的代码中并未使用执行结果。
[0238]
2、未被执行到的语句,如,整个else分支中的语句。
[0239]
3、在精简以上代码基础上,未被引用的变量,例如unused变量。举例而言,可以利用intellij idea等ide工具检查出一个变量未被任何函数使用。
[0240]
裁剪模块,可以根据分析模块发送的关键路径从源代码中选取出对应的代码,再对选取出的代码进行打包得到加速脚本。该加速脚本用于解析出快应用首屏显示所需的数据的url。在一些实施例中,在打包之前,裁剪模块还可以对选取出的代码进行混淆、压缩,以使得加速脚本的大小更小。
[0241]
第二种方式,加速脚本生成模块可以参照图5b所示的软件结构框图。其中,该加速脚本生成模块包括解析模块、语法分析模块和裁剪模块。
[0242]
其中,该解析模块和语法分析模块可参照上述内容中的描述,此处不再赘述。
[0243]
裁剪模块,用于通过分析抽象语法树的方式,根据先验知识对抽象语法树进行裁剪,再将裁剪后的代码进行打包以得到加速脚本。其中,先验知识指的是预先知晓的删除以后不影响应用包正常执行到应用内请求的代码内容。举例而言,先验知识可以包括:层叠样式表(cascading style sheets,css)、模板(即布局)、应用的生命周期回调(如ondestroy/onresume时的回调)以及仅在这些生命周期用到的接口代码,等等。开发人员可以对先验知识进行预设。在一些实施例中,在打包之前,裁剪模块还可以对裁剪后的代码进行混淆、压缩,以使得加速脚本的大小更小。
[0244]
在一些实施例中,加速脚本生成模块集成在开发设备100中。加速脚本生成模块可以利用用户输入的快应用的源代码生成加速脚本。
[0245]
第一种方式,该加速脚本生成模块包括选取模块、语法分析模块、代码注入模块、试运行模块、分析模块和裁剪模块。该选取模块用于从用户输入的快应用的源代码中选取快应用启动时有关于首页显示的源代码。剩余的其他模块可参照上述图5a对应的实施例中介绍的内容中的描述,此处不再赘述。
[0246]
第二种方式,加速脚本生成模块包括选取模块、语法分析模块和裁剪模块。该选取模块用于从用户输入的快应用的源代码中选取快应用启动时有关于首页显示的源代码。剩余的其他模块可参照上述图5b对应的实施例中介绍的内容中的描述,此处不再赘述。以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。