IP Library Granted Patent US 11,385,890
Granted Patent B2
US 11,385,890 · App. 16/731,043 · Granted Jul 12, 2022

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 11,385,890
App. No.
16/731,043
Granted
Jul 12, 2022
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 (56)

1. A computer-implemented method, comprising:

receiving, at a first computing device and from a second computing device, a request for an executable for a software application for storage on the second computing device;

determining, by the first computing device, that the software application uses a first version of a shared library;

before installation of the software application on the second computing device, requesting and receiving, by the first computing device and from the second computing device, an indication of whether or not the second computing device already stores a copy of the first version of the shared library;

determining, by the first computing device and based on data indicative of stability of one or more versions of the shared library, whether the first version of the shared library is eligible for sharing between software applications on the second computing device;

determining, by the first computing device, the executable for the software application, wherein the executable comprises a stripped executable when the indication is that the second computing device already stores the copy of the first version of the shared library and based on determining that the first version of the shared library is eligible for sharing between the software applications on the second computing device, wherein the stripped executable excludes the first version of the shared library, wherein the executable comprises a full executable when the indication is that the second computing device does not store the copy of the first version of the shared library or based on determining that the first version of the shared library is not eligible for sharing between the software applications on the second computing device, and wherein the full executable includes the first version of the shared library; and

transmitting, from the first computing device and to the second computing device, the executable for the software application.

2. The computer-implemented method of claim 1 , wherein before installation of the software application on the second computing device, requesting and receiving the indication of whether or not the second computing device already stores a copy of the first version of the shared library comprises determining that the second computing device already stores the copy of the first version of the shared library, and wherein transmitting the executable for the software application comprises transmitting the stripped executable from the first computing device to the second computing device.

3. The computer-implemented method of claim 1 , wherein before installation of the software application on the second computing device, requesting and receiving the indication of whether or not the second computing device already stores a copy of the first version of the shared library comprises determining that the second computing device does not already store the copy of the first version of the shared library, and wherein transmitting the executable for the software application comprises transmitting the full executable from the first computing device to the second computing device.

4. The computer-implemented method of claim 3 , wherein the first computing device includes versioned-shared information for at least the first version of the shared library used by the software application, wherein the versioned-shared information for the first version of the shared library comprises an identifier of the shared library and a version identifier of the first version of the shared library, and wherein the first version of the shared library is identified by the identifier of the shared library and the version identifier of the first version of the shared library.

5. The computer-implemented method of claim 4 , further comprising:

after determining that the second computing device does not already store the copy of the first version of the shared library:

locating, by the first computing device, a copy of the first version of the shared library based on the identifier of the shared library and the version identifier of the first version of the shared library; and

transmitting, from the first computing device and to the second computing device, the located copy of the first version of the shared library.

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

7. The computer-implemented method of claim 1 , wherein determining whether the first version of the shared library is eligible for sharing between software applications on the second computing device comprises:

determining, by the first computing device, a number of requests for executables for software applications referencing the whether the first version of the shared library; and

after determining that the number of requests for executables for the software applications referencing the first version of the shared library is greater than a threshold value, determining that the first version of the software library is eligible for sharing.

8. The computer-implemented method of claim 1 , wherein the indication further comprises information on whether the second computing device supports shared sets of functions, and wherein transmitting the executable for the software application further comprises:

determining, by the first computing device and based on the indication, whether the second computing device supports the shared sets of functions; and

after determining that the second computing device does not support the shared sets of functions, transmitting the full executable for the software application.

9. The computer-implemented method of claim 8 , wherein transmitting the executable for the software application further comprises:

after determining that the second computing device supports shared sets of functions, transmitting the stripped executable for the software application.

10. The computer-implemented method of claim 1 , further comprising:

receiving, at the first computing device, a full software package having the full executable for the software application; and

removing, by the first computing device, at least the first version of the shared library from the full executable to create a corresponding stripped software package that includes the stripped executable, wherein the stripped software package includes information regarding sets of functions that were removed from the full executable.

11. The method of claim 1 , wherein the first version of the shared library is a software library, wherein stripped executable excludes the software library, and wherein the full executable includes the software library.

12. The method of claim 1 , wherein the stripped executable has a reduced file size in comparison with the full executable.

13. The method of claim 1 , wherein the data indicative of stability of one or more versions of the shared library comprises historical data indicative of the stability of one or more past versions of the shared library.

14. 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 operations comprising:

receiving, from a second computing device, a request for an executable for a software application for storage on the second computing device;

determining, that the software application uses a first version of a shared library;

before installation of the software application on the second computing device, requesting and receiving, from the second computing device, an indication of whether or not the second computing device already stores a copy of the first version of the shared library;

determining, by a first computing device and based on data indicative of stability of one or more versions of the shared library, whether the first version of the shared library is eligible for sharing between software applications on the second computing device;

determining the executable for the software application, wherein the executable comprises a stripped executable when the indication is that the second computing device already stores the copy of the first version of the shared library and based on determining that the first version of the shared library is eligible for sharing between the software applications on the second computing device, wherein the stripped executable excludes the first version of the shared library, wherein the executable comprises a full executable when the indication is that the second computing device does not store the copy of the first version of the shared library or based on determining that the first version of the shared library is not eligible for sharing between the software applications on the second computing device, and wherein the full executable includes the first version of the shared library; and

transmitting, to the second computing device, the executable for the software application.

15. The computing device of claim 14 , wherein before installation of the software application on the second computing device, requesting and receiving the indication of whether or not the second computing device already stores a copy of the first version of the shared library comprises determining that the second computing device already stores the copy of the first version of the shared library, and wherein transmitting the executable for the software application comprises transmitting the stripped executable to the second computing device.

16. The computing device of claim 14 , wherein before installation of the software application on the second computing device, requesting and receiving the indication of whether or not the second computing device already stores a copy of the first version of the shared library comprises determining that the second computing device does not already store the copy of the first version of the shared library, and wherein transmitting the executable for the software application comprises transmitting the full executable to the second computing device.

17. The computing device of claim 16 , wherein the computing device includes versioned-shared information for at least the first version of the shared library used by the software application, wherein the versioned-shared information for the first version of the shared library comprises an identifier of the shared library and a version identifier of the first version of the shared library, and wherein the first version of the shared library is identified by the identifier of the shared library and the version identifier of the first version of the shared library.

18. The computing device of claim 17 , wherein the operations further comprise:

after determining that the second computing device does already not store the copy of the first version of the shared library:

locating a copy of the first version of the shared library based on the identifier and the version identifier of the first version of the shared library; and

transmitting, to the second computing device, the located copy of the first version of the shared library.

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

20. The computing device of claim 1 , wherein determining whether the first version of the shared library is eligible for sharing between software applications on the second computing device comprises:

determining a number of requests for executables for software applications referencing the first version of the shared library; and

after determining that the number of requests for executables for the software applications referencing the first version of the shared library is greater than a threshold value, determining that the first version of the software library is eligible for sharing.

21. 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 operations comprising:

receiving, from a second computing device, a request for an executable for a software application for storage on the second computing device;

determining, that the software application uses a first version of a shared library;

before installation of the software application on the second computing device, requesting and receiving, from the second computing device, an indication of whether or not the second computing device already stores a copy of the first version of the shared library;

determining, by a first computing device and based on data indicative of stability of one or more versions of the shared library, whether the first version of the shared library is eligible for sharing between software applications on the second computing device;

determining the executable for the software application, wherein the executable comprises a stripped executable when the indication is that the second computing device already stores the copy of the first version of the shared library and based on determining that the first version of the shared library is eligible for sharing between the software applications on the second computing device, wherein the stripped executable excludes the first version of the shared library, wherein the executable comprises a full executable when the indication is that the second computing device does not store the copy of the first version of the shared library or based on determining that the first version of the shared library is not eligible for sharing between the software applications on the second computing device, and wherein the full executable includes the first version of the shared library; and

transmitting, to the second computing device, the executable for the software application.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2020
From: GANOV, SVETOSLAV
To: GOOGLE INC.
Reel/Frame 052042/0192 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY NAME PREVIOUSLY RECORDED AT REEL: 51512 FRAME: 804. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 6, 2020
From: KENNEDY, TODD; HACKBORN, DIANNE; FONTS, AGUSTIN; GANOV, SVETOSLAV
To: GOOGLE INC.
Reel/Frame 052116/0896 →
CHANGE OF NAME Recorded Mar 6, 2020
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 052119/0664 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2020
From: KENNEDY, TODD; HACKBORN, DIANNE; FONTS, AGUSTIN; GANOV, SVETOSLAV
To: GOOGLE LLC
Reel/Frame 051512/0804 →
Continuity (3)
Continuation 15643410 · Jul 6, 2017
Provisional Application 62471298 · Mar 14, 2017
Related Publication 20200142690A1 · May 7, 2020