一种内核加载方法、装置及存储介质与流程

文档序号:15462250发布日期:2018-09-18 18:26阅读:131来源:国知局

本发明涉及互联网信息处理技术领域,具体涉及一种内核加载方法、装置及存储介质。



背景技术:

在终端的系统中,例如在终端的安卓(即Android)系统中,可以将系统的网页视图(即WebView)作为独立插件化存在,该WebView从系统层剥离,使得其具有独立升级及加载的逻辑。在对Android系统的WebView使用过程中,可以通过仅更新WebView安装包的形式,对系统内置的浏览器的内核进行更新升级,以实现对WebView的功能及性能等方面的提升,以及对WebView进行安全性能修复。

现有技术中,一般情况下,Android系统中浏览器的内核只使用原有的系统浏览器的内核(即原生内核),或者只使用非原有的内核(即非原生内核,例如,X5内核),而标准的Android系统浏览器的内核加载逻辑为全局替换的模式,例如,当前使用的是原有的系统浏览器内核,当更新系统浏览器的内核时,原有的系统浏览器内核将会被非原有的内核完全替换,此时,如果遇到内核版本异常,系统中使用WebView功能应用程序(Application,APP)不兼容非原有的内核,系统中使用WebView功能的APP将均无法正常使用。

在对现有技术的研究和实践过程中,本发明的发明人发现,由于WebView在Android系统作为很重要的组件存在,且X5内核与原生的系统浏览器的内核存在一定的差异,以及Android系统中的APP多种多样,从而不能保障使用X5内核能够完全兼容所有的APP,因此,使得内核的加载存在一定的质量风险,即存在不兼容的APP无法正常使用,降低了内核加载的可靠性及稳定性。



技术实现要素:

本发明实施例提供一种内核加载方法、装置及存储介质,旨在提高内核加载的可靠性及稳定性。

为解决上述技术问题,本发明实施例提供以下技术方案:

一种内核加载方法,包括:

获取待开启的应用程序的标识;

当所述标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核;

加载所述第二内核的网页视图的创建类,以及根据所述创建类构造所述网页视图的实例;

根据所述实例开启所述应用程序。

一种内核加载装置,包括:

第一获取单元,用于获取待开启的应用程序的标识;

切换单元,用于当所述标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核;

第一加载单元,用于加载所述第二内核的网页视图的创建类,以及根据所述创建类构造所述网页视图的实例;

第一开启单元,用于根据所述实例开启所述应用程序。

可选地,所述获取子单元具体用于:

根据所述内核开关向服务器发送获取请求;

接收所述服务器基于所述获取请求反馈的白名单;

从所述白名单中获取目标标识。

可选地,所述获取子单元具体用于:

根据所述内核开关判断终端本地是否存储有白名单;

当终端本地存储有白名单时,从所述终端本地获取所述白名单;

从所述白名单中获取目标标识。

一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述内核加载方法中的步骤。

本发明实施例通过将待开启的应用程序的标识与预设的目标标识进行匹配;当该标识与预设的目标标识正确匹配时,说明该应用程序兼容第二内核,此时将系统内核从第一内核切换为第二内核;然后,加载第二内核的网页视图的创建类,以及根据加载得到的创建类构造网页视图的实例;再根据实例开启应用程序。该方案的系统中可以并存第一内核及第二内核,且第一内核及第二内核之间可以相互切换,在应用程序兼容第二内核的情况下,可以通过第二内核的网页视图开启的该应用程序,提高了对内核进行加载及使用的可靠性及稳定性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的内核加载系统的场景示意图;

图2是本发明实施例提供的内核加载方法的流程示意图;

图3是本发明实施例提供的内核加载方法的另一流程示意图;

图4是本发明实施例提供的内核加载装置的结构示意图;

图5是本发明实施例提供的内核加载装置的另一结构示意图;

图6是本发明实施例提供的内核加载装置的另一结构示意图;

图7是本发明实施例提供的内核加载装置的另一结构示意图;

图8是本发明实施例提供的内核加载装置的另一结构示意图;

图9是本发明实施例提供的终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化形式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。

本发明实施例提供一种内核加载方法、装置和系统。

请参阅图1,图1为本发明实施例所提供的内核加载系统的场景示意图,该内核加载系统可以包括内核加载装置,该内核加载装置具体可以集成在平板电脑、手机、笔记本电脑、及台式电脑等具备储存单元并安装有微处理器而具有运算能力的终端中,主要用于获取待开启的应用程序的标识,该标识可以用于唯一标识该应用程序,该标识可以由数字、字母和/或文字组成等,具体内容在此处不作限定,例如,该标识可以是应用程序的名称或包名等,例如,手机QQ的包名可以是com.tencent.mobileqq,微信的包名可以是com.tencent.m等。当标识与预设的目标标识匹配时,说明应用程序兼容第二内核,此时将系统内核从第一内核切换为第二内核,例如,可以通过预设的切换接口将系统内核从第一内核切换为第二内核。其中,第一内核及第二内核在系统中并存,且第一内核及第二内核之间可以相互切换,该第一内核可以是原生内核,即第一内核可以是系统自带的内核,该第二内核可以是非原生内核,即第二内核可以是第三方针对APP改造的内核(例如,X5内核)。然后,加载第二内核的网页视图(即WebView)的创建类,以及根据创建类构造网页视图的实例,其中,创建类可以是Java编程语言中的类,或者是C++编程语言中的类等,实例可以是Java编程语言或C++编程语言中的实例,例如,可以利用Java编程语言中的反射机制通过WebView的创建类来构造WebView的实例。此时,可以根据实例开启应用程序,等等。

此外,内核加载系统还可以包括服务器,其中,预设的目标标识可以存储在白名单中,该白名单可以存储在服务器中,当需要将待开启的应用程序的标识与预设的目标标识进行比较时,终端可以向服务器发送获取请求,并接收服务器基于获取请求反馈的白名单,然后,从白名单中获取预设的目标标识,并将目标标识与应用程序的标识进行匹配。

需要说明的是,图1所示的内核加载系统的场景示意图仅仅是一个示例,本发明实施例描述的内核加载系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着内核加载系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

以下分别进行详细说明。

在本实施例中,将从内核加载装置的角度进行描述,该内核加载装置具体可以集成在平板电脑、手机等具备储存单元并安装有微处理器而具有运算能力的终端中。

一种内核加载方法,包括:获取待开启的应用程序的标识;当该标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核;加载第二内核的网页视图的创建类,以及根据创建类构造网页视图的实例;根据实例开启应用程序。

请参阅图2,图2是本发明第一实施例提供的内核加载方法的流程示意图。该内核加载方法包括:

在步骤S101中,获取待开启的应用程序的标识。

本实施例中,内核加载装置以终端为例,该终端上可以安装有多种不同的应用程序(即APP),且终端的系统中第一内核与第二内核共存,终端在开启应用程序时,终端的系统在构造内核实例(即WebViewChromiumFactoryProvider)之前,可以先尝试加载第二内核的网页视图(即WebView)的内部创建类,并尝试构造该创建类的实例。若加载成功,则使用系统的第二内核开启应用程序;若加载失败,则默认使用系统的第一内核开启应用程序。

其中,第一内核可以是原生内核,该原生内核可以是系统自带的内核,该第二内核可以是非原生内核,该非原生内核可以是第三方针对APP改造的内核(例如,X5内核),X5内核是一种针对终端系统的原生内核进行改造的内核,使得其可以作为系统浏览器内核,替换系统原生内核,为系统中的应用程序提供浏览保障能力等,解决Android系统内核所带来的安全及性能等问题。例如,X5内核可以运用于浏览器、即时通讯、及视频网站等应用程序。

另外,WebView为Android系统中用于网页浏览视图View的组件,可以依附于其他组件(例如,Fragment、及Activity等)为应用程序提供浏览能力。

首先,终端获取待开启的应用程序的标识,其中,该标识用于唯一识别应用程序,该标识可以由数字、字母和/或文字组成等,具体内容在此处不作限定,例如,该标识可以包括应用程序的名称或包名等,例如,手机QQ的包名可以是com.tencent.mobileqq,微信的包名可以是com.tencent.m等。

在某些实施方式中,获取待开启的应用程序的标识的步骤之后,内核加载方法还可以包括:

当标识与预设的目标标识不匹配时,加载第一内核;根据第一内核的网页视图开启应用程序。

具体地,终端在得到应用程序的标识后,可以将进一步获取预设的目标标识,将预设的目标标识与该应用程序的标识进行比较,其中,该预设的目标标识为与第二内核兼容的应用程序的标识,该目标标识可以存储在终端本地或存储在服务器等。

当应用程序的标识与预设的目标标识不匹配时,说明该应用程序与第二内核不兼容,无法使用第二内核开启该应用程序,此时,终端加载第一内核,通过第一内核的WebView开启应用程序,例如,终端可以加载第一内核的WebView的创建类,以及根据第一内核的WebView的创建类构造WebView的实例,并根据WebView的实例开启应用程序。

其中,创建类可以是Java编程语言中的类,或者是C++编程语言中的类等,实例可以是Java编程语言或C++编程语言中的实例,例如,可以利用Java编程语言中的反射机制通过WebView的创建类来构造WebView的实例。

在步骤S102中,当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

终端在将预设的目标标识与应用程序的标识进行比较的过程中,当应用程序的标识与预设的目标标识匹配时,说明该应用程序与第二内核兼容,可以使用第二内核开启该应用程序,此时,终端可以将系统内核从默认的第一内核切换为第二内核,以便根据第二内核的WebView开启应用程序。

可选地,终端将系统内核从第一内核切换为第二内核的步骤可以包括:通过预设的切换接口将系统内核从第一内核切换为第二内核。

由于终端的系统中第一内核与第二内核共存,因此,终端的系统中可以预先设置有切换接口,其中,该切换接口可以是软件开发工具包(Software Development Kit,SDK)开放的接口或其他的接口,主要用于实现第一内核与第二内核之间的切换,使得终端上不同的应用程序可以选择通过第二内核的WebView开启应用程序,或者通过第一内核的WebView开启应用程序,从而可以避免由于第二内核可能会对部分应用程序不兼容而造成潜在的质量风险。

在开启应用程序时,终端可以优先使用第二内核的WebView开启应用程序,当应用程序与第二内核兼容时,可以通过该预设的切换接口将系统内核从第一内核切换为第二内核。

在某些实施方式中,当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核的步骤可以包括:

启动内核进程,并根据所述内核进程拉取内核开关;根据内核开关从预设的白名单中获取目标标识;将标识与目标标识进行匹配;当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

其中,内核进程主要用于拉取内核开关,即切换内核开关,该内核进程可以独立于其他数据进程。另外,可以预先设置白名单,该白名单用于存储与第二内核兼容的应用程序的目标标识,在白名单中的应用程序可以使用第二内核的WebView,该白名单可以存储在服务器中,或者存储在终端本地。

需要说明的是,还可以预先设置黑名单,该黑名单用于存储与第二内核不兼容的应用程序的目标标识,在黑名单中的应用程序仅能使用第一内核的WebView,该黑名单可以存储在服务器中,或者存储在终端本地。可以仅设置白名单,或者仅设置黑名单;还可以既设置白名单,又设置黑名单(即在服务器或终端本地可以存储白名单和黑名单),具体设置内容在此处不作限定。

具体地,在进入第二内核创建类之前,终端的系统首先通过启动内核进程的方式拉取内核开关,此时终端可以根据内核开关确定即将使用第二内核。该实施例中通过独立多内核进程,可以保障内核开关拉取过程不受第二内核的WebView加载过程中,可能会引入的系统崩溃(即Crash)等问题的干扰。

然后,终端可以从本地或服务器获取预设的白名单,再从预设的白名单中提取出目标标识,将待开启的应用程序的标识与得到的目标标识进行匹配,确定待开启的应用程序的标识是否在白名单中。当待开启的应用程序的标识与预设的目标标识匹配时,说明待开启的应用程序的标识在白名单中,此时将系统内核从第一内核切换为第二内核。当待开启的应用程序的标识不在白名单中时,禁止该应用程序使用第二内核,只能使用第一内核。

需要说明的是,当设置有黑名单时,终端还可以从本地或服务器获取预设的黑名单,再从预设的黑名单中提取出目标标识,将待开启的应用程序的标识与得到的目标标识进行匹配,确定待开启的应用程序的标识是否在黑名单中。当待开启的应用程序的标识与预设的目标标识不匹配时,说明待开启的应用程序的标识不在黑名单中,此时将系统内核从第一内核切换为第二内核。当待开启的应用程序的标识在黑名单中时,禁止该应用程序使用第二内核,只能使用第一内核。

在某些实施方式中,终端根据内核开关从预设的白名单中获取目标标识的步骤可以包括:

根据内核开关向服务器发送获取请求;接收服务器基于获取请求反馈的白名单;从白名单中获取目标标识。

终端可以从服务器获取白名单,具体地,终端首先向服务器发送获取白名单的获取请求,以使得服务器根据获取请求从存储白名单的数据库中获取白名单,并将获取到的白名单发送给终端。终端接收服务器反馈的白名单,然后,从白名单中获取与第二内核兼容的应用程序的目标标识。

需要说明的是,当设置有黑名单时,终端可以从服务器获取黑名单,具体地,终端首先向服务器发送获取黑名单的获取请求,以使得服务器根据获取请求从存储黑名单的数据库中获取黑名单,并将获取到的黑名单发送给终端。终端接收服务器反馈的黑名单,然后,从黑名单中获取与第二内核不兼容的应用程序的目标标识。

在某些实施方式中,终端根据内核开关从预设的白名单中获取目标标识的步骤可以包括:

根据内核开关判断终端本地是否存储有白名单;当终端本地存储有白名单时,从终端本地获取白名单;从白名单中获取目标标识。

终端可以从终端本地获取白名单,具体地,终端可以首先查询本地的存储空间,判断终端本地是否存储有白名单;当终端本地存储有白名单时,可以从终端本地获取白名单,然后从白名单中获取与第二内核兼容的应用程序的目标标识;当终端本地没有存储白名单时,终端可以从服务器获取白名单,即向服务器发送获取白名单的获取请求,并接收服务器基于获取请求反馈的白名单,再从白名单中获取与第二内核兼容的应用程序的目标标识。

需要说明的是,当设置有黑名单时,终端可以从终端本地获取黑名单,具体地,终端可以首先查询本地的存储空间,判断终端本地是否存储有黑名单;当终端本地存储有黑名单时,可以从终端本地获取黑名单,然后从黑名单中获取与第二内核不兼容的应用程序的目标标识;当终端本地没有存储黑名单时,终端可以从服务器获取黑名单,即向服务器发送获取黑名单的获取请求,并接收服务器基于获取请求反馈的黑名单,再从黑名单中获取与第二内核不兼容的应用程序的目标标识。

在步骤S103中,加载第二内核的网页视图的创建类,以及根据创建类构造网页视图的实例。

当终端将系统内核从第一内核切换为第二内核时,此时终端可以加载第二内核的WebView的创建类,当加载第二内核的WebView的创建类成功时,表示当前可以使用第二内核的WebView,可以根据第二内核的WebView的创建类(例如,WebViewFactoryProvider)构造第二内核的WebView的实例。当加载第二内核的WebView的创建类失败时,表示当前不可以使用第二内核的WebView,此时加载第一内核的WebView的创建类,可以根据第一内核的WebView的创建类,构造第一内核的WebView的实例。

在某些实施方式中,终端根据创建类构造网页视图的实例的步骤之后,内核加载方法还可以包括:将网页视图的实例与应用程序的标识关联存储至缓存。

具体地,终端在根据第二内核的WebView的创建类,构造第二内核的WebView的实例后,可以将第二内核的WebView的实例与应用程序的标识关联存储至终端本地的缓存中,以便于应用程序再次开启时,若该应用程序使用第二内核,则终端可以根据应用程序的标识,从该缓存中获取第二内核的WebView的实例。

在步骤S104中,根据实例开启应用程序。

终端在得到第二内核的WebView的实例后,可以根据WebView的实例开启应用程序。

在某些实施方式中,内核加载方法还可以包括:

当再次开启应用程序时,根据应用程序的标识,从缓存中获取与标识对应的网页视图的目标实例;根据目标实例开启应用程序。

具体地,当终端本地的缓存中关联存储有第二内核的WebView的实例与应用程序的标识时,当终端再次开启该应用程序时,若该应用程序使用第二内核,则终端可以根据该应用程序的标识,从缓存中获取与该应用程序的标识对应的WebView的目标实例,即第二内核的WebView的目标实例。然后,根据得到的第二内核的WebView的目标实例,并根据WebView的目标实例开启应用程序。

需要说明的是,每个应用程序均有与其对应的第二内核的WebView的目标实例,当终端首次或再次开启该应用程序时,若终端本地的缓存中,未存储有与待开启的该应用程序的第二内核的WebView的实例,则当待开启的该应用程序需要使用第二内核时,终端可以加载第二内核的WebView的创建类,以及根据该创建类构造WebView的实例,根据WebView的实例开启应用程序。

由上可知,本发明实施例通过将待开启的应用程序的标识与预设的目标标识进行匹配;当该标识与预设的目标标识正确匹配时,说明该应用程序兼容第二内核,此时通过预设的切换接口将系统内核从第一内核切换为第二内核;然后,加载第二内核的网页视图的创建类,以及根据加载得到的创建类构造网页视图的实例;再根据实例开启应用程序。该方案的系统中可以并存第一内核及第二内核,且第一内核及第二内核之间可以相互切换,在应用程序兼容第二内核的情况下,可以通过第二内核的网页视图开启的该应用程序,提高了对内核进行加载及使用的可靠性及稳定性。

根据上述实施例所描述的方法,以下将举例作进一步详细说明。

上述终端以手机为例,第一内核以原生内核为例,第二内核以X5内核为例,手机上安装的多种应用程序中以浏览器A为例,请参阅图3,图3为本发明实施例提供的内核加载方法的另一流程示意图。该方法流程可以包括:

S201、手机获取待开启的浏览器A的标识。

其中,在手机的系统中设置原生内核与X5内核共存,并且,可以根据需要灵活切换原生内核与X5内核。例如,当手机需要开启浏览器A时,手机可以先尝试加载X5内核的WebView,若加载成功,则使用X5内核的WebView开启机QQ浏览器;若加载失败,则使用默认的原生内核的WebView开启机QQ浏览器。

具体地,手机首先获取待开启的浏览器A的标识,例如,该标识可以是浏览器A的名称或宿主包名等,以便根据得到的浏览器A的标识判定浏览器A是否能够使用X5内核的WebView,以下将进行详细说明。

S202、手机判断浏览器A的标识与白名单中的目标标识上是否匹配;若是,则执行步骤S203;若否,则执行步骤S206。

手机在得到浏览器A的标识后,可以从手机本地或服务器中获取预设的白名单,其中该白名单中存储与X5内核兼容的应用程序的目标标识,然后,从白名单中提取出与X5内核兼容的应用程序的目标标识,将X5内核兼容的应用程序的目标标识与浏览器A的标识进行匹配,判断与X5内核兼容的应用程序的目标标识中是否存在浏览器A的标识。

可选地,在一实施例中,手机可以从服务器获取白名单,具体地,手机首先向服务器发送获取白名单的获取请求,以使得服务器根据获取请求从存储白名单的数据库中获取白名单,并将获取到的白名单发送发手机。手机接收服务器反馈的白名单,然后,从白名单中获取与X5内核兼容的应用程序的目标标识。

可选地,在另一实施例中,手机可以从手机本地获取白名单,具体地,手机可以首先查询本地的存储空间,判断手机本地是否存储有白名单;当手机本地存储有白名单时,可以从手机本地获取白名单,然后从白名单中获取与X5内核的应用程序的目标标识;当手机本地没有存储白名单时,手机可以按照上述方法从服务器中获取白名单。

S203、手机通过预设的切换接口将系统内核从原生内核切换为X5内核。

当与X5内核兼容的应用程序的目标标识中存在浏览器A的标识时,说明浏览器A可以使用X5内核的WebView,此时,手机可以从默认的原生内核切换为X5内核,以便根据X5内核的WebView开启应用程序。

由于手机的系统中原生内核与非原生内核共存,因此,手机的系统中可以预先设置有切换接口,其中,该切换接口可以是SDK开放的接口或其他的接口,主要用于实现原生内核与X5内核之间的切换,使得手机上不同的应用程序可以选择通过X5内核的WebView开启应用程序,或者通过原生内核的WebView开启应用程序。此时,当手机从默认的原生内核切换为X5内核时,可以通过该切换接口将系统内核从原生内核切换为X5内核。

S204、手机加载X5内核的WebView的创建类,以及根据创建类构造WebView的实例。

当手机将系统内核从原生内核切换为X5内核后,手机可以加载X5内核的WebView的创建类,当加载X5内核的WebView的创建类成功时,即可根据X5内核的创建类构造X5内核的WebView的实例。

S205、手机根据WebView的实例开启浏览器A。

手机在得到X5内核的WebView的实例后,可以根据X5内核的WebView的实例开启浏览器A。

需要说明的是,手机在根据X5内核的WebView的创建类,构造X5内核的WebView的实例后,可以将X5内核的WebView的实例与浏览器A的标识关联存储至手机本地的缓存中。当手机再次开启浏览器A时,若该浏览器A使用X5内核,则手机可以根据该浏览器A的标识,从缓存中获取与该浏览器A的标识,对应X5内核的WebView的目标实例。然后,根据得到的X5内核的WebView的目标实例开启浏览器A。

S206、手机加载原生内核,根据原生内核的WebView开启浏览器A。

当与X5内核兼容的应用程序的目标标识中不存在浏览器A的标识时,说明浏览器A与X5内核不兼容,即不可以使用X5内核的WebView,而只能使用原生内核。此时,手机加载原生内核,通过原生内核的WebView开启应用程序,例如,终端可以加载原生内核的WebView的创建类,以及根据原生内核的WebView的创建类构造WebView的实例,根据原生内核的WebView的实例开启浏览器A。

本发明实施例中,通过设置原生内核与X5内核共同存在于手机系统中,并且可以根据需要灵活切换X5内核与原生内核,从而实现了在浏览器A兼容X5内核的情况下,可以切换到X5内核,通过X5内核的WebView开启的浏览器A;当浏览器A不兼容X5内核时,可以通过原生内核的WebView开启的浏览器A,提高了对内核进行加载及使用的可靠性及稳定性,有效降低了运营风险。

为便于更好的实施本发明实施例提供的内核加载方法,本发明实施例还提供一种基于上述内核加载方法的装置。其中名词的含义与上述内核加载方法中相同,具体实现细节可以参考方法实施例中的说明。

请参阅图4,图4为本发明实施例提供的内核加载装置的结构示意图,其中内核加载装置可以包括第一获取单元301、切换单元302、第一加载单元303、及第一开启单元304等。

其中,第一获取单元301,用于获取待开启的应用程序的标识。

本实施例中,内核加载装置以终端为例,该终端上可以安装有多种不同的应用程序(即APP),且终端的系统中第一内核与第二内核共存,终端在开启应用程序时,第一加载单元303在构造内核实例(即WebViewChromiumFactoryProvider)之前,可以先尝试加载第二内核的网页视图(即WebView)的内部创建类,并尝试构造该创建类的实例。若加载成功,则使用系统的第二内核开启应用程序;若加载失败,则默认使用系统的第一内核开启应用程序。

其中,第一内核可以是原生内核,该原生内核可以是系统自带的内核,该第二内核可以是非原生内核,该非原生内核可以是第三方针对APP改造的内核(例如,X5内核),X5内核是一种针对终端系统的原生内核进行改造的内核,使得其可以作为系统浏览器内核,替换系统原生内核,为系统中的应用程序提供浏览保障能力等,解决Android系统内核所带来的安全及性能等问题。例如,X5内核可以运用于浏览器、即时通讯、及视频网站等应用程序。

另外,WebView为Android系统中用于网页浏览视图View的组件,可以依附于其他组件(例如,Fragment、及Activity等)为应用程序提供浏览能力。

首先,由第一获取单元301获取待开启的应用程序的标识,其中,该标识用于唯一识别应用程序,该标识可以由数字、字母和/或文字组成等,具体内容在此处不作限定,例如,该标识可以包括应用程序的名称或包名等,例如,手机QQ的包名可以是com.tencent.mobileqq,微信的包名可以是com.tencent.m等。

在某些实施方式中,如图6所示,内核加载装置还可以包括:

第二加载单元305,用于当标识与预设的目标标识不匹配时,加载第一内核;

第二开启单元306,用于根据第一内核的网页视图开启应用程序。

具体地,第一获取单元301在得到应用程序的标识后,可以将进一步获取预设的目标标识,将预设的目标标识与该应用程序的标识进行比较,其中,该预设的目标标识为与第二内核兼容的应用程序的标识,该目标标识可以存储在终端本地或存储在服务器等。

当应用程序的标识与预设的目标标识不匹配时,说明该应用程序与第二内核不兼容,无法使用第二内核开启该应用程序,此时,第二加载单元305加载第一内核,再由第二开启单元306通过第一内核的WebView开启应用程序,例如,第二加载单元305可以加载第一内核的WebView的创建类,以及根据第一内核的WebView的创建类构造WebView的实例,再由第二开启单元306根据WebView的实例开启应用程序。

其中,创建类可以是Java编程语言中的类,或者是C++编程语言中的类等,实例可以是Java编程语言或C++编程语言中的实例,例如,可以利用Java编程语言中的反射机制通过WebView的创建类来构造WebView的实例。

切换单元302,用于当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

在将预设的目标标识与应用程序的标识进行比较的过程中,当应用程序的标识与预设的目标标识匹配时,说明该应用程序与第二内核兼容,可以使用第二内核开启该应用程序,此时,切换单元302可以将系统内核从默认的第一内核切换为第二内核,以便根据第二内核的WebView开启应用程序。

可选地,切换单元302具体用于,当标识与预设的目标标识匹配时,通过预设的切换接口将系统内核从第一内核切换为第二内核。

由于终端的系统中第一内核与第二内核共存,因此,终端的系统中可以预先设置有切换接口,其中,该切换接口可以是软件开发工具包(Software Development Kit,SDK)开放的接口或其他的接口,主要用于实现第一内核与第二内核之间的切换,使得终端上不同的应用程序可以选择通过第二内核的WebView开启应用程序,或者通过第一内核的WebView开启应用程序,从而可以避免由于第二内核可能会对部分应用程序不兼容而造成潜在的质量风险。

在开启应用程序时,可以优先使用第二内核的WebView开启应用程序,当应用程序与第二内核兼容时,切换单元302可以通过该预设的切换接口将系统内核从第一内核切换为第二内核。

在某些实施方式中,如图5所示,切换单元302可以包括启动子单元3021、获取子单元3022、匹配子单元3023和切换子单元3024等,如下::

启动子单元3021,用于启动内核进程,并根据所述内核进程拉取内核开关;

获取子单元3022,用于根据内核开关从预设的白名单中获取目标标识;

匹配子单元3023,用于将标识与目标标识进行匹配;

切换子单元3024,用于当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

其中,内核进程主要用于拉取内核开关,即切换内核开关,该内核进程可以独立于其他数据进程。另外,可以预先设置白名单,该白名单用于存储与第二内核兼容的应用程序的目标标识,在白名单中的应用程序可以使用第二内核的WebView,该白名单可以存储在服务器中,或者存储在终端本地。

需要说明的是,还可以预先设置黑名单,该黑名单用于存储与第二内核不兼容的应用程序的目标标识,在黑名单中的应用程序仅能使用第一内核的WebView,该黑名单可以存储在服务器中,或者存储在终端本地。可以仅设置白名单,或者仅设置黑名单;还可以既设置白名单,又设置黑名单(即在服务器或终端本地可以存储白名单和黑名单),具体设置内容在此处不作限定。

具体地,在进入第二内核创建类之前,启动子单元3021的系统首先通过启动内核进程的方式拉取内核开关,此时可以根据内核开关确定即将使用第二内核。该实施例中通过独立多内核进程,可以保障内核开关拉取过程不受第二内核的WebView加载过程中,可能会引入的系统崩溃(即Crash)等问题的干扰。

然后,获取子单元3022可以从本地或服务器获取预设的白名单,再从预设的白名单中提取出目标标识,由匹配子单元3023将待开启的应用程序的标识与得到的目标标识进行匹配,确定待开启的应用程序的标识是否在白名单中。当待开启的应用程序的标识与预设的目标标识匹配时,说明待开启的应用程序的标识在白名单中,此时切换子单元3024将系统内核从第一内核切换为第二内核。当待开启的应用程序的标识不在白名单中时,禁止该应用程序使用第二内核,只能使用第一内核。

需要说明的是,当设置有黑名单时,获取子单元3022还可以从本地或服务器获取预设的黑名单,再从预设的黑名单中提取出目标标识,由匹配子单元3023将待开启的应用程序的标识与得到的目标标识进行匹配,确定待开启的应用程序的标识是否在黑名单中。当待开启的应用程序的标识与预设的目标标识不匹配时,说明待开启的应用程序的标识不在黑名单中,此时切换子单元3024将系统内核从第一内核切换为第二内核。当待开启的应用程序的标识在黑名单中时,禁止该应用程序使用第二内核,只能使用第一内核。

在某些实施方式中,获取子单元3022具体用于:

根据内核开关向服务器发送获取请求;接收服务器基于获取请求反馈的白名单;从白名单中获取目标标识。

获取子单元3022可以从服务器获取白名单,具体地,获取子单元3022首先向服务器发送获取白名单的获取请求,以使得服务器根据获取请求从存储白名单的数据库中获取白名单,并将获取到的白名单发送给获取子单元3022。获取子单元3022接收服务器反馈的白名单,然后,从白名单中获取与第二内核兼容的应用程序的目标标识。

需要说明的是,当设置有黑名单时,获取子单元3022可以从服务器获取黑名单,具体地,获取子单元3022首先向服务器发送获取黑名单的获取请求,以使得服务器根据获取请求从存储黑名单的数据库中获取黑名单,并将获取到的黑名单发送给获取子单元3022。获取子单元3022接收服务器反馈的黑名单,然后,从黑名单中获取与第二内核不兼容的应用程序的目标标识。

在某些实施方式中,获取子单元3022具体用于:

根据内核开关判断终端本地是否存储有白名单;当终端本地存储有白名单时,从终端本地获取白名单;从白名单中获取目标标识。

获取子单元3022可以从终端本地获取白名单,具体地,获取子单元3022可以首先查询本地的存储空间,判断终端本地是否存储有白名单;当终端本地存储有白名单时,可以从终端本地获取白名单,然后从白名单中获取与第二内核兼容的应用程序的目标标识;当终端本地没有存储白名单时,获取子单元3022可以从服务器获取白名单,即向服务器发送获取白名单的获取请求,并接收服务器基于获取请求反馈的白名单,再从白名单中获取与第二内核兼容的应用程序的目标标识。

需要说明的是,当设置有黑名单时,获取子单元3022可以从终端本地获取黑名单,具体地,获取子单元3022可以首先查询本地的存储空间,判断终端本地是否存储有黑名单;当终端本地存储有黑名单时,可以从终端本地获取黑名单,然后从黑名单中获取与第二内核不兼容的应用程序的目标标识;当终端本地没有存储黑名单时,获取子单元3022可以从服务器获取黑名单,即向服务器发送获取黑名单的获取请求,并接收服务器基于获取请求反馈的黑名单,再从黑名单中获取与第二内核不兼容的应用程序的目标标识。

第一加载单元303,用于加载第二内核的网页视图的创建类,以及根据创建类构造网页视图的实例。

当终端将系统内核从第一内核切换为第二内核时,此时第一加载单元303可以加载第二内核的WebView的创建类,当加载第二内核的WebView的创建类成功时,表示当前可以使用第二内核的WebView,可以根据第二内核的WebView的创建类(例如,WebViewFactoryProvider)构造第二内核的WebView的实例。当加载第二内核的WebView的创建类失败时,表示当前不可以使用第二内核的WebView,此时加载第一内核的WebView的创建类,可以根据第一内核的WebView的创建类,构造第一内核的WebView的实例。

在某些实施方式中,如图7所示,内核加载装置还可以包括:

存储单元307,用于将网页视图的实例与应用程序的标识关联存储至缓存。

具体地,在第一加载单元303根据第二内核的WebView的创建类,构造第二内核的WebView的实例后,存储单元307可以将第二内核的WebView的实例与应用程序的标识关联存储至终端本地的缓存中,以便于应用程序再次开启时,若该应用程序使用第二内核,则可以根据应用程序的标识,从该缓存中获取第二内核的WebView的实例。

第一开启单元304,用于根据实例开启应用程序。

在得到第二内核的WebView的实例后,第一开启单元304可以根据WebView的实例开启应用程序。

在某些实施方式中,如图8所示,内核加载装置还可以包括:

第二获取单元308,用于当再次开启应用程序时,根据应用程序的标识,从缓存中获取与标识对应的网页视图的目标实例;

第三开启单元309,用于根据目标实例开启应用程序。

具体地,当终端本地的缓存中关联存储有第二内核的WebView的实例与应用程序的标识时,当再次开启该应用程序时,若该应用程序使用第二内核,则终端可以通过第二获取单元308根据该应用程序的标识,从缓存中获取与该应用程序的标识对应的WebView的目标实例,即第二内核的WebView的目标实例。然后,由第三开启单元309根据得到的第二内核的WebView的目标实例,并根据WebView的目标实例开启应用程序。

需要说明的是,每个应用程序均有与其对应的第二内核的WebView的目标实例,当终端首次或再次开启该应用程序时,若终端本地的缓存中,未存储有与待开启的该应用程序的第二内核的WebView的实例,则当待开启的该应用程序需要使用第二内核时,可以加载第二内核的WebView的创建类,以及根据该创建类构造WebView的实例,根据WebView的实例开启应用程序。

由上可知,本发明实施例通过将第一获取单元301获取到的待开启的应用程序的标识,与预设的目标标识进行匹配;当该标识与预设的目标标识正确匹配时,说明该应用程序兼容第二内核,此时切换单元302通过预设的切换接口将系统内核从第一内核切换为第二内核;然后,由第一加载单元303加载第二内核的网页视图的创建类,以及根据加载得到的创建类构造网页视图的实例;再由第一开启单元304根据实例开启应用程序。该方案的系统中可以并存第一内核及第二内核,且第一内核及第二内核之间可以相互切换,在应用程序兼容第二内核的情况下,可以通过第二内核的网页视图开启的该应用程序,提高了对内核进行加载及使用的可靠性及稳定性。

相应的,本发明实施例还提供一种终端,如图9所示,该终端可以包括射频(RF,Radio Frequency)电路601、包括有一个或一个以上计算机可读存储介质的存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线保真(WiFi,Wireless Fidelity)模块607、包括有一个或者一个以上处理核心的处理器608、以及电源609等部件。本领域技术人员可以理解,图9中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器608处理;另外,将涉及上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。

存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器608和输入单元603对存储器602的访问。

输入单元603可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元603可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元603还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元604可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元604可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的类型,随后处理器608根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图9中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。

终端还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路606、扬声器,传声器可提供用户与终端之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一终端,或者将音频数据输出至存储器602以便进一步处理。音频电路606还可能包括耳塞插孔,以提供外设耳机与终端的通信。

WiFi属于短距离无线传输技术,终端通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块607,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器608是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器608可包括一个或多个处理核心;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。

终端还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理系统与处理器608逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源609还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器608会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器608来运行存储在存储器602中的应用程序,从而实现各种功能:

获取待开启的应用程序的标识;当该标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核;加载第二内核的网页视图的创建类,以及根据创建类构造网页视图的实例;根据实例开启应用程序。

可选地,当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核的步骤可以包括:

启动内核进程,并根据所述内核进程拉取内核开关;根据内核开关从预设的白名单中获取目标标识;将标识与所述目标标识进行匹配;当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

可选地,获取待开启的应用程序的标识的步骤之后,该方法还可以包括:

当标识与预设的目标标识不匹配时,加载第一内核;根据第一内核的网页视图开启应用程序。

由上可知,本发明实施例通过将待开启的应用程序的标识与预设的目标标识进行匹配;当该标识与预设的目标标识正确匹配时,说明该应用程序兼容第二内核,此时通过预设的切换接口将系统内核从第一内核切换为第二内核;然后,加载第二内核的网页视图的创建类,以及根据加载得到的创建类构造网页视图的实例;再根据实例开启应用程序。该方案的系统中可以并存第一内核及第二内核,且第一内核及第二内核之间可以相互切换,在应用程序兼容第二内核的情况下,可以通过第二内核的网页视图开启的该应用程序,提高了对内核进行加载及使用的可靠性及稳定性。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对内核加载方法的详细描述,此处不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种内核加载方法中的步骤。例如,该指令可以执行如下步骤:

获取待开启的应用程序的标识;当该标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核;加载第二内核的网页视图的创建类,以及根据创建类构造网页视图的实例;根据实例开启应用程序。

可选地,当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核的步骤可以包括:

启动内核进程,并根据所述内核进程拉取内核开关;根据内核开关从预设的白名单中获取目标标识;将标识与所述目标标识进行匹配;当标识与预设的目标标识匹配时,将系统内核从第一内核切换为第二内核。

可选地,获取待开启的应用程序的标识的步骤之后,该方法还可以包括:

当标识与预设的目标标识不匹配时,加载第一内核;根据第一内核的网页视图开启应用程序。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种内核加载方法中的步骤,因此,可以实现本发明实施例所提供的任一种内核加载方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本发明实施例所提供的一种内核加载方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1