用于计算设备的共享软件库制造技术

技术编号:21176244 阅读:26 留言:0更新日期:2019-05-22 12:04
提供了与存储的软件库相关的装置和方法。计算设备可以接收由软件应用使用的第一软件库的版本化共享库信息,其中,版本化共享库信息可以包括标识符。计算设备可以确定计算设备是否存储由标识符在版本化共享库信息中标识的第一软件库的副本。计算设备可以发送对软件应用的完整可执行文件和剥离可执行文件之一的请求,其中,完整可执行文件包括第一软件库,并且剥离可执行文件不包括第一软件库。响应于该请求,计算设备可以接收软件应用的完整可执行文件或剥离可执行文件。

Shared Software Library for Computing Devices

Devices and methods related to stored software libraries are provided. Computing devices can receive versioned shared library information of the first software library used by software applications, where versioned shared library information can include identifiers. The computing device can determine whether the computing device stores a copy of the first software library identified by the identifier in the versioned shared library information. Computing devices can send requests for complete executable files for software applications and for stripping one of the executable files, where the complete executable files include the first software library, and the stripped executable files do not include the first software library. In response to this request, the computing device may receive the complete executable file of the software application or strip the executable file.

【技术实现步骤摘要】
【国外来华专利技术】用于计算设备的共享软件库对于相关申请的交叉引用本专利申请要求在2017年3月14日提交的题为“SharedSoftwareLibrariesforComputingDevices(用于计算设备的共享软件库)”的美国临时专利申请No.62/471,298的优先权,其内容通过引用整体并入本文以用于各种目的。
技术介绍
许多计算设备(包括移动计算设备)可以运行应用软件以执行各种功能,例如通信相关功能、数据操纵功能、图像生成和/或呈现功能、音频生成和/或呈现功能以及其他功能。可以将应用软件从服务器或其他计算设备下载或传送到计算设备。在某些情况下,应用软件可以作为软件包的一部分下载。软件包可以包括应用软件和用于安装应用软件的指令。例如,软件包可以是可执行的,以执行安装应用软件的指令。一些软件应用可以依赖于一个或多个软件库中包含的功能。示例软件库包括具有输入/输出功能、图形用户界面功能、操作系统接口功能、存储器管理功能、数学功能和其他功能的软件。例如,软件应用可以被存储在包括应用使用的软件库的可执行文件中。
技术实现思路
在一个方面,提供了一种方法。计算设备接收由软件应用使用的至少第一软件库的版本化共享库信息,其中,第一软件库的版本化共享库信息包括第一软件库的标识符。计算设备确定计算设备是否存储由第一软件库的标识符在版本化共享库信息中标识的第一软件库的副本。基于计算设备是否存储第一软件库的副本,计算设备发送对软件应用的完整可执行文件和剥离可执行文件之一的请求,其中,完整可执行文件至少包括第一软件库,并且其中,剥离可执行文件不包括第一软件库。响应于该请求,计算设备接收用于软件应用的完整可执行文件或剥离可执行文件用于存储在计算设备上。在另一方面,提供了一种计算设备。计算设备包括:一个或多个处理器;以及,数据存储,至少包括被存储在其上的计算机可执行指令,当由一个或多个处理器执行时,该指令使得计算设备执行功能。所述功能包括:接收软件应用使用的至少第一软件库的版本化共享库信息,其中,第一软件库的版本化共享库信息包括第一软件库的标识符;确定计算设备是否被存储由第一软件库的标识符在版本化共享库信息中标识的第一软件库的副本;基于计算设备是否存储第一软件库的副本,发送对软件应用的完整可执行文件和剥离可执行文件之一的请求,其中,完整可执行文件包括第一软件库,并且剥离可执行文件不包括第一软件库;并且响应于该请求,接收软件应用的完整可执行文件或剥离可执行文件用于存储在计算设备上。在另一方面,提供了一种计算机可读介质。计算机可读介质上存储有指令,当由计算设备的一个或多个处理器执行时,该指令使计算设备执行功能。所述功能包括:接收软件应用使用的至少第一软件库的版本化共享库信息,其中,第一软件库的版本化共享库信息包括第一软件库的标识符;确定计算设备是否存储由第一软件库的标识符在版本化共享库信息中标识的第一软件库的副本;基于计算设备是否存储第一软件库的副本,发送对软件应用的完整可执行文件和剥离可执行文件之一的请求,其中,完整可执行文件包括第一软件库,并且剥离可执行文件不包括第一软件库;并且响应于该请求,接收软件应用的完整可执行文件或剥离可执行文件用于存储在计算设备上。在另一方面,提供了一种装置。该装置包括:用于接收软件应用使用的至少第一软件库的版本化共享库信息的装置,其中,第一软件库的版本化共享库信息包括第一软件库的标识符;用于确定计算设备是否被存储在版本化共享库信息中由第一软件库的标识符标识的第一软件库的副本的装置;用于基于计算设备是否存储第一软件库的副本来发送对软件应用的完整可执行文件和剥离可执行文件之一的请求的装置,其中,完整可执行文件包括第一软件库,并且剥离可执行文件不包括第一软件库;以及,用于响应于该请求接收软件应用的完整可执行文件或剥离可执行文件用于存储在计算设备上的装置。前述
技术实现思路
仅是说明性的,并不旨在以任何方式进行限制。除了以上描述的说明性方面、实施例和特征之外,通过参考图和以下详细描述以及附图,其他方面、实施例和特征将变得显而易见。附图说明图1示出了根据示例实施例的由应用商店存储的软件包。图2示出了根据示例实施例的工作流。图3A和3B示出了根据示例实施例的涉及使用软件包和共享存储库创建和安装软件应用的场景。图4描绘了根据示例实施例的分布式计算架构。图5A是根据示例实施例的计算设备的功能框图。图5B描绘了根据示例实施例的布置为基于云的服务器系统的计算集群的网络。图6是根据示例实施例的方法的流程图。具体实施方式用于共享软件库的技术和装置软件应用可以用一种或多种计算机语言编写为源代码。在某些情况下,可以编译软件应用的源代码,并且可以将编译的源代码存储在可执行文件中,并且可执行文件中的编译代码可以由计算设备执行以执行软件应用的各种功能。这些功能的一些可以被存储在一个或多个软件库中。然后,作为创建软件应用的可执行文件的一部分,一个或多个软件库可以与源代码的编译指令“链接”。可以静态链接这些软件库;即,软件库被包括在可执行文件中。注意,除非通过上下文另外清楚,否则术语“库”和“可执行”分别在整个说明书中指代软件库和可执行文件。然而,如果若干应用使用公共库,则公共库的静态链接可以创建公共库的若干副本,并且浪费用于保存相同公共库的副本的存储。在一项与超过10,000,000个已安装软件应用的样本相关的研究中,发现移动计算设备应用每个应用使用大约1兆字节(MB)的存储来存储库。许多这些库被多个应用使用,其中,最常用的库被90%以上的采样安装应用使用,并且其中,至少10%的采样安装软件应用使用了至少5个库。此外,库的规模可以随着时间的推移而增长;例如,该研究还表明,库大小在三年内增长了约50%,因此移动计算设备应用可以在几年内每个应用使用超过1.5MB(或更多)的存储来存储库。根据一个估计,如果三个或更多应用共享在计算设备上存储一次的公共库,则用于存储共享公共库的一个存储副本的三个或更多个应用的存储量小于用于存储三个或更多应用的存储量,每个应用中都链接有公共库。因此,即使相对较少的库共享——即在至少三个应用之间的库共享——也可以节省存储空间,并且这些节省可以随着时间的推移而增长。链接库的另一种技术是动态链接库;也就是说,在运行时将库加载到存储器中;也就是说,将对应于软件应用的源代码的可执行指令加载到存储器中,然后将库加载到存储器中。如果库已经被加载到存储器中(例如,另一个应用正在使用该库),则对已经加载的库的一个或多个存储器引用可以被解析或者引用已经加载的库的存储器地址。然后,如果只有一个库的副本被存储在计算设备上,然后动态加载库,则可以保存存储空间。但是,随着库的发展,动态加载可能导致困难。通常,动态加载命名库涉及在运行时加载至少部分命名库。在某些情况下,库可以“向后兼容”;也就是说,该库的较新版本支持该库的一个或多个先前版本的所有(或至少大多数)功能。随着库的演进,维持向后兼容性可能很困难,因为重组和/或新功能可能会改变先前的功能。如果库不是真正向后兼容的,这些更改可能会导致以前工作的软件应用出现故障,该应用依赖于早期版本库中实现的功能。如果使用静态链接库构建应用,则可以保证使用特定版本的库,因为软件应用的开发者或其他作者可以生成包括库的本文档来自技高网
...

【技术保护点】
1.一种方法,包括:在计算设备处接收至少由软件应用使用的第一软件库的版本化共享库信息,其中,所述第一软件库的所述版本化共享库信息包括所述第一软件库的标识符;确定所述计算设备是否存储由所述第一软件库的所述标识符在所述版本化共享库信息中标识的所述第一软件库的副本;发送对所述软件应用的可执行文件的请求,其中,所述请求基于所述计算设备是否存储所述第一软件库的所述副本,其中,所述软件应用的所述可执行文件是所述软件应用的完整可执行文件和所述软件应用的剥离可执行文件之一,并且其中,所述完整可执行文件包括所述第一软件库,并且其中,所述剥离可执行文件不包括所述第一软件库;以及响应于所述请求,接收所述软件应用的所请求的可执行文件用于存储在所述计算设备上。

【技术特征摘要】
【国外来华专利技术】2017.03.14 US 62/471,298;2017.07.06 US 15/643,4101.一种方法,包括:在计算设备处接收至少由软件应用使用的第一软件库的版本化共享库信息,其中,所述第一软件库的所述版本化共享库信息包括所述第一软件库的标识符;确定所述计算设备是否存储由所述第一软件库的所述标识符在所述版本化共享库信息中标识的所述第一软件库的副本;发送对所述软件应用的可执行文件的请求,其中,所述请求基于所述计算设备是否存储所述第一软件库的所述副本,其中,所述软件应用的所述可执行文件是所述软件应用的完整可执行文件和所述软件应用的剥离可执行文件之一,并且其中,所述完整可执行文件包括所述第一软件库,并且其中,所述剥离可执行文件不包括所述第一软件库;以及响应于所述请求,接收所述软件应用的所请求的可执行文件用于存储在所述计算设备上。2.根据权利要求1所述的方法,其中,确定所述计算设备是否存储由所述第一软件库的所述标识符在所述版本化共享库信息中标识的所述第一软件库的所述副本包括:确定所述计算设备确实存储了所述第一软件库的所述副本;以及其中,发送对所述软件应用的所述可执行文件的所述请求包括发送对所述软件应用的所述剥离可执行文件的请求。3.根据权利要求1所述的方法,其中,确定所述计算设备是否存储由所述第一软件库的所述标识符在所述版本化共享库信息中标识的所述第一软件库的所述副本包括:确定所述计算设备不存储所述第一软件库的所述副本;以及其中,发送对所述软件应用的所述可执行文件的所述请求包括发送对所述软件应用的所述完整可执行文件的请求。4.根据前述权利要求中任一项所述的方法,其中,所述第一软件库的所述版本化共享库信息还包括所述第一软件库的版本;并且所述第一软件库由所述第一软件库的所述版本所进一步标识。5.根据权利要求4所述的方法,其中,用于所述第一软件库的所述版本化共享库信息包括指定所述第一软件库的名称和所述第一软件库的所述版本两者的组合标识符。6.根据权利要求1或2所述的方法,其中,发送对所述软件应用的所述可执行文件的所述请求包括:发送对所述软件应用的所述剥离可执行文件的请求,并且其中,所述方法还包括:将所述剥离可执行文件和所述第一软件库加载到所述计算设备的数据存储中,其中,所述第一软件库是使用所述第一软件库的所述标识符和所述第一软件库的版本来识别的;以及在将所述剥离可执行文件和所述第一软件库加载到数据存储中之后,所述计算设备执行所加载的剥离可执行文件以使所述计算设备执行一个或多个功能,其中,所述一个或多个功能的至少一个功能是使用在所述第一软件库中存储的软件来执行的。7.根据权利要求1或3所述的方法,还包括:在确定所述计算设备未存储所述第一软件库的所述副本之后,基于所述第一软件库的所述标识符和所述第一软件库的版本定位所述第一软件库的副本,以及将所定位的所述第一软件库的副本存储在所述计算设备上。8.根据权利要求7所述的方法,其中,定位所述第一软件库的所述副本包括:发送对所述第一软件库的所述副本的请求,其中,所述请求包括所述第一软件库的所述标识符和所述第一软件库的所述版本,以及在发送所述请求之后,在所述计算设备处接收所述第一软件库的所述副本。9.根据权利要求1所述的方法,其中,至少所述第一软件库的所述版本化共享库信息还包括与所述第一软件库的散列和有关的信息。10.根据前述权利要求中任一项所述的方法,其中,所述计算设备被配置成存储由标识符和版本标识的第二软件库的多个版本,其中,所述第二软件库的所述多个版本中的每个共享公共标识符,其中,所述第二软件库的所述多个版本中的每一个都不同,并且其中,所述计算设备被配置成存储所述第二软件库的特定数量的版本。11.根据权利要求10所述的方法,其中,所述计算设备被配置成确定使用所述第二软件库的第一版本的多个应用,并且其中,所述方法还包括:确定释放所述计算设备的数据存储;在确定释放数据存储之后,所述计算设备确定使用所述第二软件库的所述第一版本的应用的数量是否小于阈值;以及在确定使用所述第二软件库的第一版本的应用的数量小于所述阈值之后,从所述计算设备上的数据存储中移除所述第二软件库的所述第一版本。12.根据权利要求11所述的方法,其中,所述软件应用额外地使用所述第二软件库,并且其中,发送对所述软件应用的所述可执行文件的所述请求包括:所述计算设备确定使用所述第二软件库的所述第一版本的应用的数量是否小于所述阈值;以及在确定使用所述第二软件库的所述第一版本的应用的数量小于所述阈值之后,发送对所述软件应用的所述完整可执行文件的请求。13.根据权利要求12所述的方法,其中,发送对所述软件应用的所述可执行文件的所述请求还包括:在确定使用所述第二软件库的所述第一版本的应用的数量不小于所述阈值之后,发送对所述软件应用的所述剥离可执行文件的请求。14.根据权利要求10至13中任一项所述的方法,还包括:确定...

【专利技术属性】
技术研发人员:托德·肯尼迪黛安娜·哈克伯恩阿古斯丁·丰特斯斯韦托斯拉夫·加诺夫
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利