应用程序拼装方法和系统与流程

文档序号:13717999阅读:192来源:国知局
技术领域本申请公开的内容涉及一种应用程序安装包的拼装方法和系统,具体而言,涉及一种与用户设备适配且动态的应用程序安装包的拼装方法和系统。

背景技术:
诸如智能手机、平板计算机之类的便携式智能电子设备已越来越广泛地得到应用。这些智能电子设备具有强大的处理能力,并且可以在其上运行各种应用程序。通常在出厂时,这些电子设备上已经预装了一些应用程序。此外,用户可以根据个人需要在这些电子设备上额外地安装其他一些应用程序。在现有技术中,在便携式智能电子设备上安装应用程序的方式大致可以分为两种:一种方式是,用户直接利用其电子设备上的“应用程序商店”之类的应用程序(例如,Android系统上的“GooglePlay”应用程序)来选择需要安装的应用程序,然后下载所选应用程序的应用程序安装包并在电子设备上安装在电子设备上;另一种方式是,用户利用诸如个人计算机之类的设备访问特定的应用程序服务器来选择需要安装的应用程序,然后将所选应用程序的应用程序安装包下载或推送到用户的便携式智能电子设备上以进行安装。然而,无论采取何种形式,都是通过一次下载或推送来得到应用程序安装包的。也就是说,在安装应用程序之前,不能动态地配置应用程序的安装包。然而,各种电子设备在硬件配置方面存在有差异,例如,屏幕的像素密度可以包括lDPI(例如,120DPI)、mDPI(例如,160DPI)、hDPI(例如,240DPI)以及xhDPI(320DPI)四个基本像素密度,对于同一像素密度存在有多种不同的分辨率,并且硬件的架构可以包括x86、ARM、MIPS等等。为了能够在各种不同配置的电子设备上正常地运行和显示,应用程序安装包的尺寸通常较大以涵盖各种可能的硬件配置,从而在下载或推送过程中会占用更多的网络资源。此外,“应用程序商店”之类的服务型应用程序会定期扫描安装在电子设备上的各个应用程序的版本,并且与应用程序服务器上该应用程序的最新版本进行比较。当发现安装在电子设备上的应用程序不是最新版本时,会提示用户将应用程序升级。升级的方式是将最新版本的应用程序安装包下载或推送至用户的电子设备进行安装,以替换或覆盖旧版本的应用程序。由于应用程序安装包不是动态配置的,因而会出现这样一种情况:应用程序服务器上的最新版本应用程序是针对某一特定硬件配置的设备所进行的改进,例如,修复了在特定屏幕分辨率下的显示问题。然而,这样的改进对其他类硬件配置的设备是没有任何意义的。因而,用户经常会进行一些不必要的应用程序升级操作,浪费了更多的网络资源。

技术实现要素:
针对现有技术中的这些问题提出了本发明构思。根据本发明的应用程序拼装方法和系统,可以根据用户设备的实际情况动态地配置应用程序安装包,使得针对特定用户设备的应用程序安装包的尺寸最小化,从而节省了网络资源。此外,还可以为用户避免不必要的应用程序升级操作。根据本发明的一个方面,提供了一种应用程序拼装方法,用于拼装能够安装在用户设备上的应用程序的安装包,所述方法包括步骤:根据用户设备的屏幕信息选择与用户设备的屏幕适配的用户界面模块;以及将所选择的用户界面模块与操作逻辑模块拼装在一起以形成所述应用程序的安装包,所述操作逻辑模块与用户设备的屏幕无关。根据本发明的实施例,所述方法还可以包括步骤:响应于对已安装的应用程序的操作,判定在用户设备上是否存在用于实现该操作的构件,当不存在所述构件时:根据用户设备的架构信息来选择用于实现该操作的构件;以及在用户设备上将所选择的构件拼装至所述已安装的应用程序。根据本发明的实施例,可以通过应用程序服务器来选择所述用户界面模块并将所选择的用户界面模块与操作逻辑模块拼装在一起。根据本发明的实施例,可以通过应用程序服务器来选择所述构件,并且可以通过用户设备自身或者应用程序安装服务器将所选择的构件拼装至所述已安装的应用程序。根据本发明的实施例,用户设备的屏幕信息可以包括屏幕的像素密度信息和/或分辨率信息。根据本发明的另一个方面,提供了一种应用程序拼装系统,用于拼装能够安装在用户设备上的应用程序的安装包,所述系统包括:用户界面模块选择单元,用于根据用户设备的屏幕信息选择与用户设备的屏幕适配的用户界面模块;以及安装包拼装单元,用于将由用户界面模块选择单元所选择的用户界面模块与操作逻辑模块拼装在一起以形成所述应用程序的安装包,所述操作逻辑模块与用户设备的屏幕无关。根据本发明的实施例,所述应用程序拼装系统还可以包括构件选择单元和构件拼装单元。响应于对已安装的应用程序的操作,判定在用户设备上是否存在用于实现该操作的构件,当不存在所述构件时,所述构件选择单元用于根据用户设备的架构信息来选择用于实现该操作的构件,并且所述构件拼装单元用于在用户设备上将由构件选择单元所选择的构件拼装至所述已安装的应用程序。根据本发明的实施例,所述用户界面模块选择单元和所述安装包拼装单元可以实现在应用程序服务器中。根据本发明的实施例,所述构件选择单元可以实现在应用程序服务器中,并且所述构件拼装单元可以实现在用户设备中或者实现在应用程序安装服务器中。根据本发明的应用程序拼装方法和系统,可以实现对应用程序安装包的动态配置,即,选取与用户设备适配的各个模块来拼装应用程序安装包,并且仅在需要时才将与用户设备适配的构件拼装至已安装的应用程序,从而使得针对特定用户设备的应用程序安装包的尺寸最小化,以节省传输应用程序安装包所需的网络资源。此外,当在应用程序服务器上仅针对特定硬件配置的用户界面模块或构件进行了升级时,与该硬件配置无关的用户设备可以不必进行升级操作,从而为用户避免了不必要的应用程序升级操作。附图说明通过以下参考附图的详细说明,本发明的上述以及其他方面、特征和优点将得以呈现。在附图中:图1示出了根据本发明的实施例的应用程序安装包的示意性结构框图;图2示出了根据本发明的实施例在已安装的应用程序中拼装构件的示图;图3和图4示出了可以应用根据本发明的实施例的应用程序拼装方法和系统的应用环境;以及图5示出了根据本发明的实施例的应用程序拼装系统的示意性框图;以及图6示出了根据本发明的一个实施例的应用程序拼装方法的示意流程图。具体实施方式下文中,将参照附图详细描述本公开的实施例。然而,本发明可按照多种不同形式具体实现,并且不应理解为限于本文阐述的实施例。提供这些实施例是为了使得本公开将是彻底和完整的,并且将把本发明的范围完全传递给本领域技术人员。在附图中,为了清楚起见,没有按照比例绘制各个部件,并且相同的标号将始终用于指代相同或相似的部件。除非另有说明或者在上下文中明确地指出,否则在描述本发明的上下文中使用的术语“一”、“一个”和“该”以及类似的所指对象应当解释为涵盖单数形式和复数形式。除非另有所指,否则术语“包括”、“具有”、“包含”和“含有”应当解释为开放式术语(即,表示“包括但不限于”)。除非另有定义,否则在本文中使用的所有技术术语和科学术语具有与本发明所属领域的任一普通技术人员通常理解相同的含义。还应当理解,除非另有所指,否则本文使用的任何和所有实例或示例性术语仅用来更好地阐明本发明的而不是用来限制本发明的范围。此外,除非另有定义,否则不可以过度地解释在通常使用的字典中定义的所有术语。本发明提供了一种能够与用户设备适配且动态的应用程序拼装方法和系统。在本发明的各项技术方案中,应用程序安装包是动态拼装而成的。图1示出了根据本发明的实施例的应用程序安装包的示意性结构框图。如图1所示,根据本发明的实施例的应用程序安装包10可以包括动态配置的用户界面模块11和操作逻辑模块12。用户界面模块11与用户设备的屏幕相关。具体而言,用户界面模块11可以与用户设备的屏幕的像素密度相关和/或与屏幕的分辨率相关。屏幕的像素密度可以包括lDPI(例如,120DPI)、mDPI(例如,160DPI)、hDPI(例如,240DPI)以及xhDPI(320DPI)四个基本像素密度。因而,对同一应用程序而言,可以存在有四个不同的用户界面模块11-1至11-4以分别对应于四个像素基本。然而,本发明构思不限于此。例如,用户界面模块11可以对应于四个基本像素密度以外的像素密度;对于同一像素密度可以存在多个用户界面模块11以对应于不同的分辨率;或者对同一应用程序而言,可以存在少于或多于四个不同的用户界面模块11。在用户界面模块11中,例如,可以实现窗口、菜单、按钮等应用程序的显示元素,并且可以实现各个显示元素之间的相互位置关系。操作逻辑模块12与用户设备的屏幕无关。对同一应用程序而言,只需要一个操作逻辑模块12。具体而言,在操作逻辑模块12中可以实现有各种算法、数据结构等与显示无关的应用程序部分,并且还可以实现各个显示元素之间的调用关系,例如,通过点击当前窗口中的某一菜单项来切换至另一窗口。在现有技术中,为了能够适配多种不同的硬件配置,在一个应用程序安装包中包括有多个用户界面模块11和操作逻辑模块12,从而应用程序安装包的尺寸较大。根据本发明的技术方案,可以动态地配置用户界面模块11以适配用户设备的屏幕(比如,屏幕的像素密度),使得针对特定用户设备的应用程序安装包的尺寸最小化。如图1所示,可以根据用户设备的屏幕来选择用户界面模块11-1至11-4之一来作为用户界面模块11,并使其包括在应用程序安装包中。此外,以Android系统为例,其上的应用程序实际运行在Java虚拟机(JavaVirtualMachine,JVM)中,通过JVM来获得/访问底层的系统资源。有些时候,JVM并不能满足全部的需求,于是Java提供了Java本地接口(JavaNativeInterface,JNI),来使得用诸如C/C++等语言编写的代码可以通过JNI与运行在JVM中的Java代码集成。在一些应用程序中,为了实现某一特定功能或提高应用程序的运行效率,需要调用底层硬件平台的指令集。开发人员可以例如通过C/C++等语言编写的代码来访问底层硬件平台的指令集,进而实现某一特定功能或提高应用程序的运行效率。因而,同一应用程序在不同的硬件平台上的运行库(或构件)是不同的,这是因为不同的硬件平台所提供的指令集是不同的。在现有技术中,为了使得同一应用程序能够在具有不同硬件架构的多种用户设备上运行,在一个应用程序安装包中包括有针对不同硬件架构编写的运行库,从而应用程序安装包的尺寸较大。以Android系统的应用程序安装包为例,为了实现跨硬件平台,在一个Android包(AndroidPacKage,APK)文件中可以包括针对ARM和x86两种硬件架构的运行库。根据本发明的技术方案,可以动态地配置运行库(或构件)以适配不同的硬件架构(比如,ARM、x86、MIPS等),使得针对特定用户设备的应用程序安装包的尺寸最小化。此外,如图1所示,在拼装应用程序安装包10时并没有包括构件1至构件3(仅以虚线框示出),而是在用户对已安装的应用程序进行操作时,才将相应的构件拼装至已安装的应用程序,使得应用程序安装包的尺寸进一步减小。图2示出了根据本发明的实施例在已安装的应用程序中拼装构件的示图。如图2所示,例如,可以响应于对已安装的应用程序的操作,根据用户设备的架构选择构件1-1(例如,针对ARM架构的构件)或构件1-2(例如,针对x86架构的构件)来作为构件1,并使其拼装在已安装的应用程序中。此外,可以根据构件的构件信息来选择相应的构件。构件信息可以包括(但不限于)构件的唯一标识、名称和/或版本号。图3和图4示出了可以应用根据本发明的实施例的应用程序拼装方法和系统的应用环境。参考图3,在示出的应用环境中包括:用户设备100、应用程序服务器200以及用于实现用户设备100与应用程序服务器200之间的通信的网络300。用户设备100可以是能够在其上安装应用程序的任何设备,包括(但不限于)智能手机、平板计算机之类的便携式智能电子设备。应用程序服务器200可以是提供能够安装在用户设备100上的应用程序的各种类型的服务器,并且应用程序服务器200可以以应用程序安装包的形式来提供各种应用程序。网络300可以是任何有线网络、无线网络或它们的组合。与图3所示的应用环境相比,在图4所示的应用环境中还包括应用程序安装服务器400。应用程序安装服务器400用于在用户设备100上安装由应用程序服务器200提供的各种应用程序。图5示出了根据本发明的实施例的应用程序拼装系统的示意性框图。参见图1和图5,根据本发明的实施例的应用程序拼装系统500可以包括用户界面模块选择单元501和安装包拼装单元502。用户界面模块选择单元501用于根据用户设备100的屏幕信息选择与用户设备100的屏幕适配的用户界面模块(例如,图1所示的用户界面模块11-1至11-4之一)。安装包拼装单元502用于将由用户界面模块选择单元501所选择的用户界面模块与操作逻辑模块(例如,图1所示的操作逻辑模块12)拼装在一起以形成应用程序的安装包(例如,图1所示的应用程序安装包10)。操作逻辑模块12与用户设备100的屏幕无关。参见图3、图4和图5,用户界面模块选择单元501和安装包拼装单元502可以实现在应用程序服务器200中。应用程序服务器200可以响应于来自用户设备100的请求,通过用户界面模块选择单元501来选择与由用户设备100提供的屏幕信息适配的用户界面模块。用户设备100提供的屏幕信息可以包括屏幕的像素密度信息和/或分辨率信息。安装包拼装单元502可以将由用户界面模块选择单元501所选择的用户界面模块与操作逻辑模块拼装在一起以形成应用程序安装包。随后,应用程序服务器200通过网络300将拼装的应用程序安装包发送至用户设备100,并且在用户设备100上安装应用程序。此外,在图4所示的应用环境中,可以通过应用程序安装服务器400获取用户设备100的屏幕信息,并将该屏幕信息通过网络300发送至应用程序服务器200。应用程序服务器200通过网络300将拼装的应用程序安装包发送至应用程序安装服务器400,并且通过应用程序安装服务器400在用户设备100上安装应用程序。可附加地,根据本发明的实施例的应用程序拼装系统500还可以包括构件选择单元503和构件拼装单元504。响应于对已安装的应用程序的操作,判定在用户设备100上是否存在用于实现该操作的构件,当不存在所述构件时:构件选择单元503用于根据用户设备100的架构信息来选择用于实现该操作的构件。构件拼装单元504用于在用户设备100上将由构件选择单元503所选择的构件拼装至所述已安装的应用程序。如上所述,应用程序有可能包括有需要调用底层硬件平台的指令集的构件以实现特定的功能。在此情况下,响应于对已安装的应用程序的操作,首先判定在用户设备上是否存在用于实现该操作的构件,当不存在所述构件时,需要将实现该特定功能的构件拼装至所述已安装的应用程序。构件选择单元503可以根据用户设备100的架构信息来选择用于实现该操作的构件。构件拼装单元504可以在用户设备100上将由构件选择单元503所选择的构件拼装至所述已安装的应用程序,进而实现特定的功能。此外,可以根据构件的构件信息来选择相应的构件。具体而言,响应于对已安装的应用程序的操作,当判定在用户设备100上不存在用于实现该操作的构件时,可以获取用于实现该操作的构件的构件信息。构件选择单元503可以根据用户设备100的架构信息来选择与构件信息相对应的构件。构件信息可以包括(但不限于)构件的唯一标识、名称和/或版本号。根据本发明的实施例,当应用程序初始安装在用户设备100上时,应用程序安装包10可以不包括需要调用底层硬件平台的指令集的各种构件,以使得应用程序安装包10的尺寸进一步减小。在运行应用程序时,如果用户的操作(例如,点击了某一按钮或选择了某一菜单项)需要调用一个(或多个)构件来实现特定功能,则首先判断在用户设备上是否存在有所述一个(或多个)构件。如果不存在,则可以通过上述方式获得相应的构件,并将构件拼装至已安装的应用程序以实现特定功能。通过上述方式获得的构件是与用户设备的硬件平台适配的构件,因而能够使得应用程序正常运行。此外,无需得到与用户设备的硬件平台无关的构件,从而节省了网络资源。参见图3、图4和图5,构件选择单元503可以实现在应用程序服务器200中,而构件拼装单元504可以实现在用户设备100中或者实现在应用程序安装服务器400中。也就是说,虽然在图5中将根据本发明的实施例的应用程序拼装系统500示出为一个整体,然而应用程序拼装系统500中的各个单元可以分别实现在不同的设备或服务器中。本领域技术人员能够根据具体需要来合理地布置各个单元,而本发明旨在涵盖所有这些可能的变化。图6示出了根据本发明的一个实施例的应用程序拼装方法的示意流程图。如图6所示,首先根据用户设备的屏幕信息选择与用户设备的屏幕适配的用户界面模块(S601)。用户设备的屏幕信息可以包括屏幕的像素密度信息和/或分辨率信息。随后,将所选择的用户界面模块与操作逻辑模块拼装在一起以形成所述应用程序的安装包(S602)。操作逻辑模块与用户设备的屏幕是无关的。可附加地,响应于对已安装的应用程序的操作,判定在用户设备上是否存在用于实现该操作的构件。当不存在所述构件时,可以根据用户设备的架构信息来选择用于实现该操作的构件(S603)。随后,在用户设备上将所选择的构件拼装至所述已安装的应用程序(S604)。虽然已经结合实施例显示并描述了本发明的各实施例,但是本领域技术人员应当清楚的是,在不脱离本发明的精神和范围的情况下,可作出各种修改和改变。本发明的保护范围旨在涵盖所有这些修改和改变。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1