IP Library Granted Patent US 10,564,959
Granted Patent B2
US 10,564,959 · App. 15/643,410 · Granted Feb 18, 2020

Shared software libraries for computing devices

Inventors: Todd Kennedy (San Jose, CA); Dianne Hackborn (Mountain View, CA); Agustin Fonts (Santa Clara, CA); Svetoslav Ganov (San Francisco, CA)
Assignee: Google LLC
G06F8/71G06F8/61
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,564,959
App. No.
15/643,410
Granted
Feb 18, 2020
Kind
B2
Abstract

Apparatus and methods related to stored software libraries are provided. A computing device can receive versioned-shared-library information for a first software library used by a software application, where the versioned-shared-library information can include an identifier. The computing device can determine whether the computing device stores a copy of the first software library identified in the versioned-shared-library information by the identifier. The computing device can send a request for one of a full executable and a stripped executable for the software application, where the full executable includes the first software library, and where the stripped executable excludes the first software library. In response to the request, the computing device can receive the full executable or the stripped executable for the software application.

Claims (69)

1. A method, comprising:

receiving, at a computing device, versioned-shared-library information for at least a first software library used by a software application, wherein the versioned-shared-library information for the first software library comprises an identifier of the first software library;

determining whether or not the computing device does store a copy of the first software library identified in the versioned-shared-library information by the identifier of the first software library;

after determining whether or not the computing device does store a copy of the first software library, sending a request for an executable for the software application, wherein the request comprises a request for a stripped executable when the computing device does store the copy of the first software library, wherein the request comprises a request for a full executable when the computing device does not store the copy of the first software library, and wherein the full executable comprises an executable for the software application that includes the first software library, and wherein the stripped executable comprises an executable for the software application that excludes the first software library; and

in response to the request, receiving the requested executable for the software application for storage on the computing device.

2. The method of claim 1 , wherein determining whether or not the computing device does store the copy of the first software library identified in the versioned-shared-library information by the identifier of the first software library comprises determining that the computing device does store the copy of the first software library; wherein sending the request for the executable for the software application comprises sending the request for the stripped executable for the software application from the computing device to a second computing device; and

wherein receiving the requested executable for the software application for storage on the computing device comprises receiving the stripped executable at the computing device from the second computing device.

3. The method of claim 1 , wherein determining whether or not the computing device stores the copy of the first software library identified in the versioned-shared-library information by the identifier of the first software library comprises determining that the computing device does not store the copy of the first software library;

wherein sending the request for the executable for the software application comprises sending the request for the full executable for the software from the computing device to a second computing device; and

wherein receiving the requested executable for the software application for storage on the computing device comprises receiving the full executable at the computing device from the second computing device.

4. The method of claim 1 , wherein the versioned-shared-library information for the first software library further comprises a version of the first software library; and the first software library is further identified by the version of the first software library.

5. The method of claim 4 , wherein the versioned-shared-library information for the first software library comprises a combined identifier specifying both a name of the first software library and the version of the first software library.

6. The method of claim 1 , wherein sending the request for the executable for the software application comprises sending the request for the stripped executable for the software application; and wherein the method further comprises:

loading the stripped executable and the first software library into data storage of the computing device, wherein the first software library is identified using the identifier of the first software library and the version of the first software library; and

after loading the stripped executable and the first software library into data storage, the computing device executing the loaded stripped executable to cause the computing device to perform one or more functions, wherein at least one function of the one or more functions is performed using software stored in the first software library.

7. The method of claim 1 , further comprising:

after determining that the computing device does not store the copy of the first software library, locating a copy of the first software library based on the identifier of the first software library and a version of the first software library, and

storing the located copy of the first software library on the computing device.

8. The method of claim 7 , wherein locating the copy of the first software library comprises:

sending a request for the copy of the first software library, where the request comprises the identifier of the first software library and the version of the first software library, and

after sending the request for the copy of the first software library, receiving the copy of the first software library at the computing device.

9. The method of claim 1 , wherein the versioned-shared-library information for at least the first software library further comprises information related to a hash sum of the first software library.

10. The method of claim 1 , wherein the computing device is configured to store a plurality of versions of a second software library identified by identifier and version, wherein each of the plurality of versions of the second software library share a common identifier, wherein each of the plurality of versions of the second software library differs, and wherein the computing device is configured to store a particular number of versions of the second software library.

11. The method of claim 10 , wherein the computing device is configured to determine a number of applications that use a first version of the second software library, and wherein the method further comprises:

determining to free data storage of the computing device;

after determining to free data storage, the computing device determining whether the number of applications that use the first version of the second software library is less than a threshold value; and

after determining that the number of applications that use the first version of the second software library is less than the threshold value, removing the first version of the second software library from data storage on the computing device.

12. The method of claim 11 , wherein sending the request for the executable for the software application comprises:

the computing device determining whether the number of applications that use the first version of the second software library is less than the threshold value; and

after determining that the number of applications that use the first version of the second software library is less than the threshold value, sending a request for the full executable for the software application.

13. The method of claim 12 , wherein sending the request for the executable for the software application further comprises:

after determining that the number of applications that use the first version of the second software library is not less than the threshold value, sending a request for the stripped executable for the software application.

14. The method of claim 11 , further comprising:

determining to remove a first software executable that utilizes the first version of the second software library from the computing device; and

after determining to remove the first software executable, the computing device:

removing the first software executable, and

decrementing the number of applications using the first version of the second software library.

15. The method of claim 11 , further comprising:

receiving a first software package comprising a second software executable and first package information, the first package information comprising first versioned-shared-library information that includes an identifier for the second software library and for the first version of the second software library;

storing the second software executable and first package information on the computing device; and

incrementing the number of applications using the first version of the second software library.

16. The method of claim 10 , wherein each of the plurality of versions of the second software library has an age, and wherein the method further comprises:

determining whether an age of a second version of the second software library exceeds a threshold age; and

after determining that the age of the second version of the second software library exceeds the threshold age:

determining a third software executable that depends upon the second version of the second software library;

replacing the third software executable with a fourth software executable that includes the second version of the second software library; and

after replacing the third software executable, freeing data storage for the second version of the second software library on the computing device.

17. The method of claim 10 , wherein the computing device is further configured to generate a unique name for each of the plurality of versions of the second software library.

18. The method of claim 1 , wherein determining whether or not the computing device does store the copy of the first software library identified by the identifier of the first software library comprises:

receiving a query regarding storage of a software library, the query comprising a queried library identifier and a queried library version;

determining whether or not the computing device does store a copy of the first software library identified by a stored identifier of the first software library and a stored version of the first software library by at least matching the queried library version with the stored version of the first software library; and

after matching the queried library version with the stored version of the first software library, determining that the computing device does store a copy of the first software library.

19. The method of claim 18 , wherein matching the queried library version with the stored version of the first software library comprises one or more of: exactly matching the queried library version with the stored version of the first software library and determining that the stored version of the software library is at least the queried library version.

20. The method of claim 1 , further comprising:

receiving, at the computing device, versioned-shared-library information for at least a fourth software library used by a second software application, wherein the versioned-shared-library information for the fourth software library comprises an identifier of the fourth software library and a version of the fourth software library, and wherein the second software application depends on the fourth software library and a fifth software library;

after determining that the computing device stores a copy of the fourth software library identified in the versioned-shared-library information by the identifier of the fourth software library and the version of the fourth software library, sending, from the computing device, a request for one of a stripped executable for the second software application, wherein the stripped executable excludes the fourth software library; and

in response to the request, receiving a partially-full executable for the second software application for storing on the computing device, wherein the partially-full executable for the second software application excludes the fourth software library and includes a copy of the fifth software library.

21. A computing device, comprising:

one or more processors; and

data storage including at least computer-executable instructions stored thereon that, when executed by the one or more processors, cause the computing device to perform functions comprising:

receiving versioned-shared-library information for at least a first software library used by a software application, wherein the versioned-shared-library information for the first software library comprises an identifier of the first software library;

determining whether or not the computing device does store a copy of the first software library identified in the versioned-shared-library information by the identifier of the first software library;

after determining whether or not the computing device does store a copy of the first software library, sending a request for an executable for the software application, wherein the request comprises a request for a stripped executable when the computing device does store the copy of the first software library, wherein the request comprises a request for a full executable when the computing device does not store the copy of the first software library, wherein the full executable comprises an executable for the software application that includes the first software library, and wherein the stripped executable comprises an executable for the software application that excludes the first software library; and

in response to the request, receiving the requested executable for the software application for storage on the computing device.

22. A non-transitory computer-readable medium having stored thereon instructions, that when executed by one or more processors of a computing device, cause the computing device to perform functions comprising:

receiving versioned-shared-library information for at least a first software library used by a software application, wherein the versioned-shared-library information for the first software library comprises an identifier of the first software library;

determining whether or not the computing device does store a copy of the first software library identified in the versioned-shared-library information by the identifier of the first software library;

after determining whether or not the computing device does store a copy of the first software library, sending a request for an executable for the software application, wherein the request comprises a request for a stripped executable when the computing device does store the copy of the first software library, wherein the request comprises a request for a full executable when the computing device does not store the copy of the first software library, wherein the full executable comprises an executable for the software application that includes the first software library, and wherein the stripped executable comprises an executable for the software application that excludes the first software library; and

in response to the request, receiving the requested executable for the software application for storage on the computing device.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2020
From: GANOV, SVETOSLAV
To: GOOGLE INC.
Reel/Frame 052042/0454 →
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2017
From: KENNEDY, TODD; HACKBORN, DIANNE; FONTS, AGUSTIN; GANOV, SVETOSLAV
To: GOOGLE INC.
Reel/Frame 042927/0419 →
Continuity (2)
Provisional Application 62471298 · Mar 14, 2017
Related Publication 20180267796A1 · Sep 20, 2018
Cited By (2)
US 12,367,050 US 12,585,778