加载内核的方法及装置制造方法

文档序号:6507822阅读:191来源:国知局
加载内核的方法及装置制造方法
【专利摘要】本发明实施例提出一种加载内核的方法及装置,其方法包括:在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块;安装接收到的用户界面安装文件;在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。本发明实现了动态加载内核函数和文件的目的,使用户界面部分和内核部分实现了架构上的分离,从而不仅使用户界面和内核任意一个部分都可以独立升级更新,安装更方便,节约下载流量,而且只要在应用程序的用户界面导入相应的接口适配层,可以让内核部分同时被多个应用程序的用户界面加载和调用,使内核的使用具备通用性,可以大大节约移动终端的系统资源。
【专利说明】加载内核的方法及装置

【技术领域】
[0001 ] 本发明涉及通信【技术领域】,特别涉及一种加载内核的方法及装置。

【背景技术】
[0002]随着移动通信电子技术的发展,如今以手机为典型代表的移动终端已经不单具有远程通话的功能,许多个人电脑上的应用程序功能都可以通过移动终端来实现,如用户可以通过手机的浏览器浏览网页内容、通过手机上播放器播放视频和音乐、通过手机上的文档处理工具编辑文档等。
[0003]目前,移动终端使用的浏览器一般是由Π (User Interface,用户界面)部分和内核部分两块组成的,如图1所示,而内核部分通常又是由java代码和so库(so库即对象库,so库用于存放一些系统服务以及应用程序需要的文件)组成,在浏览器启动的时候,内核部分的java代码和so库就会被加载到运行环境中。
[0004]但是,现有浏览器的这种内核加载方式,使得Π部分和内核部分之间具有紧密的联系,无法进行动态分离,因而不管是浏览器产品的发布还是浏览器更新安装包的发布,都是把Π部分和内核部分这两部分集成在一起发布的。这样也导致在浏览器需要进行更新时,无论是Π部分还是内核部分需要更新,用户都必须下载完整的更新安装包,带来额外的流量和时间的开销。而且,由于安装包包含的内容较多,在移动终端内置存储器空间不足的情况下,不方便浏览器的内置,对系统硬件资源要求较高。
[0005]此外,考虑到so库的文件大小会比较大,一些开发商提出了一种方案是动态加载S0库,而内核部分的java代码并不改变一此种方案会相对较少包的大小,方便下载。但是由于so库和内核java代码联系的很紧,通常需要一起更新(java规范中定义了JNKJava Native Interface, Java本地调用 > 来加载so库,但是有个局限Native方法
〈java调用非java代码的接口函数〉需要和Java定义的方法--对应,所以只修改so库,
但是不修改java文件是不能运行的),所以这种方案不能满足内核更新的要求,每次的内核更新都需要更新UI部分,从根本上仍然无法使UI部分和内核部分分离,更新浏览器的时候仍然要对UI部分和内核部分进行全面更新,因此下载安装包时仍然会耗费较多的流量和时间。


【发明内容】

[0006]本发明实施例的目的是提供一种加载内核的方法及装置,以解决现有的移动终端浏览器无法动态加载内核的问题。
[0007]本发明实施例提出一种加载内核的方法,包括:
[0008]在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块;
[0009]安装接收到的用户界面安装文件;
[0010]在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
[0011]本发明实施例还提出一种加载内核的装置,包括:
[0012]更新文件接收单元,用于在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块;
[0013]安装单元,用于安装接收到的用户界面安装文件;
[0014]加载单元,用于在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
[0015]相对于现有技术,本发明实施例的有益效果是:
[0016]本发明实施例实现了动态加载内核函数和文件的目的,使用户界面部分和内核部分实现了架构上的分离,从而不仅使用户界面和内核任意一个部分都可以独立升级更新,安装更方便,节约下载流量,而且只要在应用程序的用户界面导入相应的接口适配层,可以让内核部分同时被多个应用程序的用户界面加载和调用,使内核的使用具备通用性,可以大大节约移动终端的系统资源。

【专利附图】

【附图说明】
[0017]图1为现有的移动终端浏览器的架构图;
[0018]图2为本发明实施例的一种加载内核的方法的流程图;
[0019]图3为本发明实施例的另一种加载内核的方法的流程图;
[0020]图4为本发明实施例的一种android系统下的浏览器其更新文件的开发过程的示意图;
[0021]图5为本发明实施例的一种android系统下的浏览器加载内核过程的示意图;
[0022]图6为本发明实施例的一种加载内核的装置的结构图;
[0023]图7为本发明实施例的另一种加载内核的装置的结构图。

【具体实施方式】
[0024]有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例详细说明中将可清楚的呈现。通过【具体实施方式】的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
[0025]本发明实施例的目的是通过在用户界面模块增加接口适配层模块,将用户界面模块和内核模块拆分为两个独立的部分,从而使内核可以在运行时被动态加载。
[0026]请参见图2,其为本发明实施例的一种加载内核的方法的流程图,其包括以下步骤:
[0027]S201,在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块。
[0028]所述接口适配层模块用来为用户界面模块提供接口,其将用户界面模块需要的对象和函数都抽象为接口,使得用户界面模块可以通过这些接口调用内核中的函数和文件。以浏览器为例,接口适配层模块主要针对调用WebView、WebViewClient、WebChromeClient、WebSettings等函数时作为用户界面部分和内核部分的对接接口。
[0029]S202,安装接收到的用户界面安装文件。
[0030]S203,在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库(so库)文件。
[0031]这里所述的应用程序运行是指应用程序启动后,为实现某个功能或操作而进行的运作,如用户点击用户界面上的一个操作按钮后,应用程序便开始运行,因而本发明实施例将这种在运行时加载的方式称之为动态加载。
[0032]可以利用系统虚拟机来加载内核中的函数和文件,以android系统为例,内核文件中的函数可以预先转换为可执行文件(即dex文件),并在程序运行时利用系统中的dvm虚拟机动态加载dex和so库文件。
[0033]通过在用户界面安装文件中增加接口适配层模块,实现了用户界面对内核的动态加载,也实现了用户界面部分和内核部分的分离,从而在更新时可以对用户界面或内核任意一部分进行单独更新,相对于现有技术中需要整体更新的方式,安装更方便,也节约了下载流量,更加适合无线方式下载安装,同时更便于将下载文件内置于移动终端有限的存储空间中。
[0034]而且,本发明实施例的方法可以同时加载内核函数文件(内核java代码)和对象库文件,可以为应用程序的架构改造形成更加灵活的支持。
[0035]特别的,通过本发明实施例的加载过程可以看到,只要在应用程序更新时向应用程序的用户界面导入相应的接口适配层,就可以让用户界面加载内核中对应的函数和文件,因而通过本发明实施例可以实现不同应用的用户界面共用同一内核,使内核的使用具备通用性,从而可以为移动终端节约大量的系统资源。
[0036]请参见图3,其为本发明实施例的另一种加载内核的方法的流程图,其包括以下步骤:
[0037]S301,在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块,所述内核文件为压缩包文件。
[0038]S302,安装接收到的用户界面安装文件。
[0039]S303,解压接收到的内核文件,获得内核文件中函数文件和对象库(so库)文件。所述函数文件是由函数代码转化的可执行文件(dex文件)。
[0040]S304,启动预置的系统虚拟机。
[0041]S305,接收用户根据用户界面模块输入的操作指令。
[0042]S306,根据操作指令,系统虚拟机通过接口适配层模块动态加载相应的由函数代码转化的可执行文件及对象库文件。
[0043]本发明实施例的加载方法,用户界面和内核两大部分不会紧紧耦合在一起,能够在接收到用户的操作指令时(即运行时)集成在一起,而不是像在现有技术中,必须在发布时就集成在一起。从而可以达到单独更新用户界面和内核其中一个部分的目的。
[0044]以android系统下的浏览器为例进行说明,在介绍内核加载之前需要先介绍浏览器及其更新文件的开发过程,请参见图4,其中包含7个关键部分:
[0045]①浏览器整个架构中增加一个“接口适配层模块”,将浏览器用户界面部分需要的对象和方法,都抽象为接口,方便用户界面部分调用;
[0046]②接口适配层模块为浏览器用户界面部分提供接口,使得浏览器的用户界面能通过提供的这些接口,调用浏览器内核中提供的函数和文件;
[0047]③在生成发布的apk (android Package,安卓安装包)文件的时候(发布的apk文件可以是首次安装浏览器产品的安装文件,也可以是更新浏览器的安装文件),浏览器用户界面和接口适配层模块是编译到一起的一换而言之是apk文件包含了所有接口层的代码;
[0048]④浏览器内核java函数在开发和编译时,也需要依赖接口适配层模块,生成一个过渡的jar文件(Java Archive, Java归档文件);但是接口适配层模仅作为编译依赖的项目,而不和浏览器内核java函数文件编译生成一个整体;
[0049]⑤将浏览器内核java函数编译生成的jar文件压缩转化为android系统中dvm虚拟机(Dalvik Virtual Machine, Google公司设计的用于android平台的java虚拟机)可以动态加载的dex文件;
[0050]⑥浏览器内核java函数文件生成的dex文件是内核压缩包的一部分;
[0051]⑦浏览器内核dex文件和内核的so库经过压缩生成可以发布的浏览器内核压缩包文件。
[0052]在需要更新用户界面部分时,下载apk安装包,需要更新内核部分时,下载浏览器内核压缩包文件。浏览器运行加载内核时,请参见图5,其包含3个关键部分:
[0053]①在android系统平台上需要先安装浏览器的apk文件,安装完毕后,用户便可以在移动终端上启动用户界面,并通过对用户界面的操作来加载内核;运行时,系统会自动启动dvm虚拟机;
[0054]②程序运行时会解压缩浏览器内核压缩包文件,解压缩得到dex文件和so库;值得注意的是,内核压缩包文件只在第一次运行时解压,以后再次运行时均不再重复解压;
[0055]③dvm虚拟机会在运行时通过接口适配层模块动态加载运行所需的dex文件和so库。
[0056]通过本发明实施例的加载方法,将android系统平台上的浏览器拆开成用户界面和内核两个独立的部分,任意一个部分都是相对独立的,只有在运行时才集成在一起,而且任意一个部分都可以独立升级更新,避免了现有技术中,更新负担大的问题。
[0057]本发明实施例还提出一种加载内核的装置,请参见图6,该加载内核的装置包括更新文件接收单元61、安装单元62以及加载单元63。
[0058]更新文件接收单元61用于在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块。所述接口适配层模块用来为用户界面模块提供接口,其将用户界面模块需要的对象和函数都抽象为接口,使得用户界面模块可以通过这些接口调用内核中的函数和文件。以浏览器为例,接口适配层模块主要针对调用 WebView、WebViewClient、WebChromeClient> WebSettings 等函数时作为用户界面部分和内核部分的对接接口。
[0059]安装单元62用于安装更新文件接收单元61接收到的用户界面安装文件。用户界面安装文件安装完毕后,用户便可以启动相应的用户界面,以及利用接口适配层模块加载内核。
[0060]加载单元63用于在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。所述的应用程序运行是指应用程序启动后,为实现某个功能或操作而进行的运作。当内核文件中的函数文件是由函数代码转化的可执行文件,加载单元63可以利用系统虚拟机来动态加载内核文件中相应的由函数代码转化的可执行文件及对象库文件。
[0061]本发明实施例的装置将用户界面和内核两部分有效地分离,实现在应用程序运行时动态加载内核,不仅使用户界面和内核任意一个部分都可以独立升级更新,安装更方便,节约下载流量,而且只要在应用程序的用户界面导入相应的接口适配层,可以让内核部分同时被多个应用程序的用户界面加载和调用,使内核的使用具备通用性,可以大大节约移动终端的系统资源。而且,本发明实施例的装置可以同时加载内核函数文件(内核java代码)和对象库文件,可以为应用程序的架构改造形成更加灵活的支持。
[0062]请参见图7,其为本发明实施例的另一种加载内核的装置的结构图。与图6的实施例相比,本实施例的加载内核的装置还包括解压单元64和指令接收单元65。
[0063]为节约下载流量,发布的内核文件通常是压缩包文件,解压单元64用于当更新文件接收单元61接收到的内核文件为压缩包文件时,对压缩包文件进行解压,获得其中的函数文件和对象库文件。
[0064]在安装单元62安装了更新文件接收单元61接收到的用户界面安装文件后,指令接收单元65用于接收用户根据用户界面模块输入的操作指令,以使加载单元63在指令接收接收单元65接收到操作指令后,根据操作指令并通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
[0065]通过本发明实施例的加载装置,将用户界面和内核拆分成两个独立的部分,任意一个部分都是相对独立的,只有在运行时才集成在一起,而且任意一个部分都可以独立升级更新,避免了现有技术中,更新负担大的问题。
[0066]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络设备等)执行本发明实施例各个实施场景所述的方法。
[0067]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本申请技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本申请技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种加载内核的方法,其特征在于,包括: 在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块; 安装接收到的用户界面安装文件; 在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
2.如权利要求1所述的加载内核的方法,其特征在于,所述在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件的步骤中,所述函数文件是由函数代码转化的可执行文件。
3.如权利要求2所述的加载内核的方法,其特征在于,所述在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件的步骤包括: 启动预置的系统虚拟机; 利用系统虚拟机动态加载内核文件中相应的由函数代码转化的可执行文件及对象库文件。
4.如权利要求1所述的加载内核的方法,其特征在于, 所述在需要更新时接收用户界面安装文件和/或内核文件的步骤中,所述内核文件为压缩包文件; 所述在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件的步骤之前包括:解压接收到的内核文件,获得所述函数文件和对象库文件。
5.如权利要求1所述的加载内核的方法,其特征在于,所述在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件的步骤包括: 接收用户根据用户界面模块输入的操作指令; 根据操作指令并通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
6.一种加载内核的装置,其特征在于,包括: 更新文件接收单元,用于在需要更新时接收用户界面安装文件和/或内核文件,所述用户界面安装文件中包括用户界面模块及接口适配层模块; 安装单元,用于安装接收到的用户界面安装文件; 加载单元,用于在应用程序运行时通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
7.如权利要求6所述的加载内核的装置,其特征在于,所述加载单元加载的所述函数文件是由函数代码转化的可执行文件。
8.如权利要求7所述的加载内核的装置,其特征在于,所述加载单元通过启动预置的系统虚拟机,并利用系统虚拟机动态加载内核文件中相应的由函数代码转化的可执行文件及对象库文件。
9.如权利要求6所述的加载内核的装置,其特征在于,所述更新文件接收单元接收到的所述内核文件为压缩包文件; 所述动态加载内核的装置还包括: 解压单元,用于解压所述更新文件接收单元接收到的内核文件,获得所述函数文件和对象库文件。
10.如权利要求6所述的加载内核的装置,其特征在于,所述动态加载内核的装置还包括: 指令接收单元,用于接收用户根据用户界面模块输入的操作指令; 所述加载单元在所述指令接收单元接收到操作指令后,根据操作指令并通过接口适配层模块动态加载内核文件中相应的函数文件和对象库文件。
【文档编号】G06F9/445GK104375849SQ201310355868
【公开日】2015年2月25日 申请日期:2013年8月15日 优先权日:2013年8月15日
【发明者】张力, 苏可, 陈震, 周代国, 阮曙东, 莫沙, 王万新 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1