应用程序功能扩展方法和装置制造方法

文档序号:6634146阅读:183来源:国知局
应用程序功能扩展方法和装置制造方法
【专利摘要】本发明提出一种应用程序的功能扩展方法和装置,该应用程序的功能扩展方法包括安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性;运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。该方法能够解决链接库形式的扩展方式存在的一些问题。
【专利说明】应用程序功能扩展方法和装置

【技术领域】
[0001]本发明涉及信息【技术领域】,尤其涉及一种应用程序功能扩展方法和装置。

【背景技术】
[0002]目前移动应用程序开发过程中经常存在多团队在同一个应用程序中协同开发的情况,多团队利用团队各自的技术优势分担不同的开发功能,共同提升应用程序质量。在开发过程中,第三方开发者可以提供功能模块给宿主应用程序,以扩展宿主应用程序的功能。
[0003]现有技术中,第三方开发者以链接库形式提供功能模块给宿主应用程序,然后由宿主应用集成该链接库。但是,链接库形式的扩展方式需要单独集成到应用程序的可执行文件内,在脱离宿主应用程序源代码时无法修改和扩展链接库相关功能,一些情况下宿主应用的全部或部分源代码权限给第三方开发者,会造成安全问题,链接库形式的扩展方式无法做到在已发布的宿主应用程序中生效。


【发明内容】

[0004]本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0005]为此,本发明的一个目的在于提出一种应用程序的功能扩展方法,该方法可以解决链接库形式的扩展方式存在的上述问题。
[0006]本发明的另一个目的在于提出一种应用程序的功能扩展装置。
[0007]为达到上述目的,本发明第一方面实施例提出的应用程序的功能扩展方法,包括:安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性;运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
[0008]本发明第一方面实施例提出的应用程序的功能扩展方法,通过脚本插件实现应用程序的功能扩展,该脚本插件是第三方开发者根据宿主应用程序开放的接口编写的,可以解决链接库形式的扩展方式存在的上述问题。
[0009]为达到上述目的,本发明第二方面实施例提出的应用程序的功能扩展装置,包括:安装模块,用于安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性;运行模块,用于运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
[0010]本发明第二方面实施例提出的应用程序的功能扩展装置,通过脚本插件实现应用程序的功能扩展,该脚本插件是第三方开发者根据宿主应用程序开放的接口编写的,可以解决链接库形式的扩展方式存在的上述问题。
[0011]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0012]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0013]图1是本发明一实施例提出的应用程序的功能扩展方法的流程示意图;
[0014]图2是本发明另一实施例提出的应用程序的功能扩展方法的流程示意图;
[0015]图3是本发明另一实施例提出的应用程序的功能扩展装置的结构示意图;
[0016]图4是本发明另一实施例提出的应用程序的功能扩展装置的结构示意图。

【具体实施方式】
[0017]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0018]图1是本发明一实施例提出的应用程序的功能扩展方法的流程示意图,该方法包括:
[0019]Sll:安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性。
[0020]其中,宿主应用程序是指要进行功能扩展的应用程序。应用程序可以是指移动设备上的应用程序。
[0021 ] 脚本插件可以包括一个或者多个脚本文件。
[0022]脚本插件可以初始设置在客户端本地,宿主应用程序从本地安装脚本插件;或者,
[0023]脚本插件也可以初始设置在服务端,宿主应用程序从服务端下载脚本插件后安装该脚本插件。
[0024]脚本插件是具有需要扩展的功能的插件,例如,宿主应用程序初始功能是根据用户触发获取地理位置信息,需要扩展的功能是自动获取地理位置信息,因此,相应的脚本插件可以是具有自动获取地理位置信息的插件。
[0025]脚本插件是第三方开发者根据宿主应用程序的开放接口编写的,由于只需要宿主应用程序开发接口,并不需要宿主应用程序开发全部或部分的源代码,因此可以提高代码安全性。
[0026]脚本插件是使用指定脚本编写的,指定脚本的语言与宿主应用程序的编写语言具有互通性,例如,宿主应用程序的编写语言是C语言,脚本插件的编写语言可以是Lua语言坐寸ο
[0027]S12:运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
[0028]其中,宿主应用程序中可以预先设置与脚本插件对应的脚本解释器,通过脚本解释器可以解释脚本插件,从而正确运行脚本插件。
[0029]例如,将脚本插件安装在宿主应用程序的沙盒中,在运行宿主应用程序后,宿主应用程序从沙盒中加载脚本插件,并调用脚本解释器解释并运行脚本插件。
[0030]运行脚本插件后,脚本插件可以利用与宿主应用程序的语言互通性,调用宿主应用程序的运行环境(runtime)动态扩展本地语言的逻辑,达到扩展宿主应用程序功能的目的。
[0031]例如,当脚本插件是具有自动获取地理位置的插件时,该脚本插件在运行后,可以调用宿主应用程序的运行环境,从而使得宿主应用程序具有自动获取地理位置的功能。
[0032]本实施例通过脚本插件实现应用程序的功能扩展,该脚本插件是第三方开发者根据宿主应用程序开放的接口编写的,由于不需要宿主应用程序开放源代码,从而可以保证源代码的安全性;本实施例的功能扩展是采用脚本插件,脚本插件不需要集成到宿主应用程序的可执行文件内,因此可以脱离宿主应用程序进行修改和扩展等;本实施例的脚本插件在运行时可以调用宿主应用程序的运行环境实现功能扩展,不限定宿主应用程序是否发布,可以在已发布的宿主应用程序中生效,从而可以解决链接库形式的扩展方式存在的上述问题。
[0033]图2是本发明另一实施例提出的应用程序的功能扩展方法的流程示意图,该方法包括:
[0034]S21:由宿主应用程序向所述第三方开发者提供开放接口,以使所述第三方开发者根据所述开发接口使用指定脚本编写所述脚本插件,所述指定脚本的语言与所述宿主应用程序的编写语言具有互通性。
[0035]与现有技术宿主应用程序需要提供部分或全部源代码不同的是,本实施例只需要开放接口,不需要开发具体的代码,因此,可以保证宿主应用程序的安全性。
[0036]指定脚本是具有与宿主应用程序的本地语言具有互通性的语言的脚本,例如,宿主应用程序的本地语目是C语目,指定脚本的语目可以是Lua语g等。
[0037]Lua是一个小巧的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。
[0038]S22:在所述宿主应用程序内设置与所述指定脚本对应的脚本解释器。
[0039]脚本解释器可以用于脚本文本的解释及运行。
[0040]脚本通常具有跨平台的特性,但在特点的平台下需要安装特定版本的脚本解释器以支持脚本的运行。
[0041]S23:从本地或服务端获取脚本插件,并将该脚本插件安装在宿主应用程序的沙盒中。
[0042]其中,脚本插件可以初始设置在客户端本地或者设置在服务端,客户端从初始设置的本地或者服务端获取脚本插件。
[0043]在获取脚本插件后,可以将脚本插件安装在宿主应用程序的沙盒内。沙盒是一种可以应用程序的保护机制。
[0044]S24:运行宿主应用程序,宿主应用程序从本地加载脚本插件,并调用脚本解释器运行脚本插件。
[0045]例如,宿主应用程序在运行后,可以从沙盒中加载脚本插件,通过调用脚本解释器,保证脚本插件的正确运行。
[0046]S25:脚本插件在运行后,利用脚本插件与宿主应用程序之间的语言互通性,调用宿主应用程序的本地语言的运行环境,扩展宿主应用程序的功能。
[0047]由于脚本插件与宿主应用程序具有语言互通性,因此,脚本插件运行时可以调用宿主应用程序的运行环境(runtime),通过调用本地语言的运行环境,可以对宿主应用程序的功能进行修改,使得宿主应用程序具有脚本插件具有的功能,实现宿主应用程序的功能扩展。
[0048]通过脚本插件扩展宿主应用程序的功能后,用户或第三方开发者等可以观察到宿主应用程序的功能变化。
[0049]另外,当需要再次扩展宿主应用程序的功能后,可以重新安装新的脚本插件并运行该脚本插件,实现与新的脚本插件对应的功能的扩展。
[0050]本实施例中,采用脚本插件实现功能扩展,可以利用插件特性从服务端下载插件扩展功能,提高灵活性;本实施例开放的是接口不需要开放源代码,可以提高安全性;本实施例通过脚本插件实现功能扩展,可以促进宿主应用程序作为产品平台的相关建设;本实施例的宿主应用程序的行为修改不依赖版本发布,大大加快了开发进度。
[0051]图3是本发明另一实施例提出的应用程序的功能扩展装置的结构示意图,该装置30包括安装模块31和运行模块32。
[0052]安装模块31用于安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性。
[0053]其中,宿主应用程序是指要进行功能扩展的应用程序。应用程序可以是指移动设备上的应用程序。
[0054]脚本插件可以包括一个或者多个脚本文件。
[0055]脚本插件是具有需要扩展的功能的插件,例如,宿主应用程序初始功能是根据用户触发获取地理位置信息,需要扩展的功能是自动获取地理位置信息,因此,相应的脚本插件可以是具有自动获取地理位置信息的插件。
[0056]脚本插件是第三方开发者根据宿主应用程序的开放接口编写的,由于只需要宿主应用程序开发接口,并不需要宿主应用程序开发全部或部分的源代码,因此可以提高代码安全性。
[0057]脚本插件是使用指定脚本编写的,指定脚本的语言与宿主应用程序的编写语言具有互通性,例如,宿主应用程序的编写语言是C语言,脚本插件的编写语言可以是Lua语言坐寸ο
[0058]可选的,所述安装模块31具体用于:
[0059]从本地安装脚本插件;或者,
[0060]从服务端下载后安装脚本插件。
[0061]运行模块32用于运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
[0062]其中,宿主应用程序中可以预先设置与脚本插件对应的脚本解释器,通过脚本解释器可以解释脚本插件,从而正确运行脚本插件。
[0063]例如,将脚本插件安装在宿主应用程序的沙盒中,在运行宿主应用程序后,宿主应用程序从沙盒中加载脚本插件,并调用脚本解释器解释并运行脚本插件。
[0064]运行脚本插件后,脚本插件可以利用与宿主应用程序的语言互通性,调用宿主应用程序的运行环境(runtime)动态扩展本地语言的逻辑,达到扩展宿主应用程序功能的目的。
[0065]例如,当脚本插件是具有自动获取地理位置的插件时,该脚本插件在运行后,可以调用宿主应用程序的运行环境,从而使得宿主应用程序具有自动获取地理位置的功能。
[0066]另一实施例中,参见图4,该装置30还可以包括:
[0067]生成模块33,用于向所述第三方开发者提供开放接口,以使所述第三方开发者根据所述开发接口使用指定脚本编写所述脚本插件,所述指定脚本的语言与所述宿主应用程序的编写语言具有互通性。
[0068]与现有技术宿主应用程序需要提供部分或全部源代码不同的是,本实施例只需要开放接口,不需要开发具体的代码,因此,可以保证宿主应用程序的安全性。
[0069]指定脚本是具有与宿主应用程序的本地语言具有互通性的语言的脚本,例如,宿主应用程序的本地语目是C语目,指定脚本的语目可以是Lua语g等。
[0070]Lua是一个小巧的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。
[0071]可选的,该装置30还包括:
[0072]设置模块34,用于在所述宿主应用程序内设置与所述指定脚本对应的脚本解释器。
[0073]脚本解释器可以用于脚本文本的解释及运行。
[0074]脚本通常具有跨平台的特性,但在特点的平台下需要安装特定版本的脚本解释器以支持脚本的运行。
[0075]相应的,所述运行模块32具体用于:
[0076]加载所述脚本插件,并调用所述脚本解释器,解释运行所述脚本插件。
[0077]例如,宿主应用程序在运行后,可以从沙盒中加载脚本插件,通过调用脚本解释器,保证脚本插件的正确运行。
[0078]由于脚本插件与宿主应用程序具有语言互通性,因此,脚本插件运行时可以调用宿主应用程序的运行环境(runtime),通过调用本地语言的运行环境,可以对宿主应用程序的功能进行修改,使得宿主应用程序具有脚本插件具有的功能,实现宿主应用程序的功能扩展。
[0079]通过脚本插件扩展宿主应用程序的功能后,用户或第三方开发者等可以观察到宿主应用程序的功能变化。
[0080]另外,当需要再次扩展宿主应用程序的功能后,可以重新安装新的脚本插件并运行该脚本插件,实现与新的脚本插件对应的功能的扩展。
[0081]本实施例通过脚本插件实现应用程序的功能扩展,该脚本插件是第三方开发者根据宿主应用程序开放的接口编写的,由于不需要宿主应用程序开放源代码,从而可以保证源代码的安全性;本实施例的功能扩展是采用脚本插件,脚本插件不需要集成到宿主应用程序的可执行文件内,因此可以脱离宿主应用程序进行修改和扩展等;本实施例的脚本插件在运行时可以调用宿主应用程序的运行环境实现功能扩展,不限定宿主应用程序是否发布,可以在已发布的宿主应用程序中生效,从而可以解决链接库形式的扩展方式存在的上述问题。
[0082]需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0083]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0084]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0085]本【技术领域】的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0086]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0087]上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0088]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0089]尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【权利要求】
1.一种应用程序的功能扩展方法,其特征在于,包括: 安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性; 运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
2.根据权利要求1所述的方法,其特征在于,所述安装脚本插件之前,所述方法还包括: 向所述第三方开发者提供开放接口,以使所述第三方开发者根据所述开发接口使用指定脚本编写所述脚本插件,所述指定脚本的语言与所述宿主应用程序的编写语言具有互通性。
3.根据权利要求2所述的方法,其特征在于,所述安装脚本插件之前,所述方法还包括: 在所述宿主应用程序内设置与所述指定脚本对应的脚本解释器。
4.根据权利要求3所述的方法,其特征在于,所述运行所述脚本插件,包括: 加载所述脚本插件,并调用所述脚本解释器,解释运行所述脚本插件。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述安装脚本插件,包括: 从本地安装脚本插件;或者, 从服务端下载后安装脚本插件。
6.一种应用程序的功能扩展装置,其特征在于,包括: 安装模块,用于安装脚本插件,所述脚本插件能够提供需要扩展的功能,所述脚本插件是第三方开发者根据宿主应用程序提供的开放接口编写的,且所述脚本插件的编写语言与所述宿主应用程序的编写语言具有互通性; 运行模块,用于运行所述脚本插件,使得所述脚本插件利用所述脚本插件与所述宿主应用程序之间的语言互通性,调用所述宿主应用程序的运行环境扩展所述宿主应用程序的功能。
7.根据权利要求6所述的装置,其特征在于,还包括: 生成模块,用于向所述第三方开发者提供开放接口,以使所述第三方开发者根据所述开发接口使用指定脚本编写所述脚本插件,所述指定脚本的语言与所述宿主应用程序的编写语言具有互通性。
8.根据权利要求7所述的装置,其特征在于,还包括: 设置模块,用于在所述宿主应用程序内设置与所述指定脚本对应的脚本解释器。
9.根据权利要求7所述的装置,其特征在于,所述运行模块具体用于: 加载所述脚本插件,并调用所述脚本解释器,解释运行所述脚本插件。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述安装模块具体用于:从本地安装脚本插件;或者, 从服务端下载后安装脚本插件。
【文档编号】G06F9/44GK104391700SQ201410643756
【公开日】2015年3月4日 申请日期:2014年11月11日 优先权日:2014年11月11日
【发明者】张超 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1