IP Library Granted Patent US 10,474,479
Granted Patent B1
US 10,474,479 · App. 16/104,818 · Granted Nov 12, 2019

Preventing framework conflicts for multi-OS applications

Inventors: Jeremiah R. Sequoia (Woodside, CA); Juergen Ributzka (San Jose, CA); Shengzhao Wu (Cupertino, CA)
Assignee: Apple Inc.
G06F9/44521G06F8/20G06F8/41G06F9/541
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,474,479
App. No.
16/104,818
Granted
Nov 12, 2019
Kind
B1
Abstract

Embodiments described herein provide for system and methods to enable an operating environment that supports multi-OS applications. One embodiment provides for a non-transitory machine-readable medium storing instructions that cause a data processing system to perform operations to detect conflicts during a build process for a dynamic library, the operations comprising loading program code for the dynamic library to build for a first platform, determining a set of interfaces and data structures exported by the dynamic library for the first platform, determining a set of interfaces and data structures exported by the dynamic library for a second platform, parsing the set of interfaces and data structures to verify consistency of a build contract for the dynamic library, and generating a build error during a build process for the dynamic library upon detecting an inconsistent build contract specifying at least an application binary interface (ABI) for the dynamic library.

Claims (37)

1. A non-transitory machine-readable medium storing instructions which, when executed, cause one or more processors of a data processing system to perform operations to detect conflicts during a build process for a dynamic library, the operations comprising:

loading program code for the dynamic library to build for a first platform;

determining a set of interfaces and data structures exported by the dynamic library for the first platform;

determining a set of interfaces and data structures exported by the dynamic library for a second platform;

parsing the set of interfaces and data structures to verify consistency of a build contract for the dynamic library; and

generating a build error during a build process for the dynamic library upon detecting an inconsistent build contract, the build contract specifying at least an application binary interface (ABI) for the dynamic library, wherein detecting an inconsistent build contract includes detecting a mismatch between the ABI for the dynamic library when built for the first platform and the ABI for the dynamic library when built for the second platform and determining whether an application programming interface (API) exported for the dynamic library for the first platform matches the API exported for the dynamic library for the second platform.

2. The non-transitory machine-readable medium as in claim 1 , wherein the first platform is a target build platform for the dynamic library during a build process for the dynamic library.

3. The non-transitory machine-readable medium as in claim 1 , wherein the dynamic library is one of multiple dynamic libraries of an application framework.

4. The non-transitory machine-readable medium as in claim 1 , wherein determining a set of interfaces and data structures exported by the dynamic library for the first platform includes scanning the dynamic library to generate a first set of signatures for the first platform.

5. The non-transitory machine-readable medium as in claim 4 , wherein determining a set of interfaces and data structures exported by the dynamic library for the second platform includes scanning the dynamic library to generate a second set of signatures for second first platform.

6. The non-transitory machine-readable medium as in claim 5 , wherein detecting an inconsistent build contract includes determining that a signature for a symbol exported by the dynamic library for the first platform is a mismatch for the signature for the symbol exported by the dynamic library for the second platform, wherein the signature is generated based in part on a data type associated with the symbol.

7. The non-transitory machine-readable medium as in claim 1 , wherein the first platform is a mobile platform associated with a smartphone device or tablet computer and the second platform is associated with a desktop or laptop computing system.

8. The non-transitory machine-readable medium as in claim 7 , wherein the second platform is configured to host execution of applications associated with the first platform.

9. A data processing system comprising:

a memory to store instructions for execution;

one or more processors to execute instructions stored in memory, the instructions to cause the one or more processors to:

load program code for a dynamic library to build for a first platform;

determine a set of interfaces and data structures exported by the dynamic library for the first platform;

determine a set of interfaces and data structures exported by the dynamic library for a second platform;

parse the set of interfaces and data structures to verify consistency of a build contract for the dynamic library; and

generate a build error during a build process for the dynamic library upon detection of an inconsistent build contract, the build contract to specify at least an application binary interface (ABI) for the dynamic library, wherein detection of the inconsistent build contract includes detection of a mismatch between the ABI for the dynamic library when built for the first platform and the ABI for the dynamic library when built for the second platform and determining whether an application programming interface (API) exported for the dynamic library for the first platform matches the API exported for the dynamic library for the second platform.

10. The data processing system as in claim 9 , wherein the first platform is a target build platform for the dynamic library during a build process for the dynamic library and the dynamic library is one of multiple dynamic libraries of an application framework.

11. The data processing system as in claim 9 , wherein to determine the set of interfaces and data structures exported by the dynamic library for the first platform includes to scan the dynamic library to generate a first set of signatures for the first platform and to determine the set of interfaces and data structures exported by the dynamic library for the second platform includes to scan the dynamic library to generate a second set of signatures for the first platform.

12. The data processing system as in claim 11 , wherein detecting an inconsistent build contract includes to determine that a signature for a symbol exported by the dynamic library for the first platform is a mismatch for the signature for the symbol exported by the dynamic library for the second platform.

13. The data processing system as in claim 12 , the signature for the symbol exported by the dynamic library to be generated based in part on a data type associated with the symbol.

14. A data processing system as in claim 9 , wherein the first platform is a mobile platform associated with a smartphone device or tablet computer and the second platform is associated with a desktop or laptop computing system.

15. A data processing system as in claim 14 , wherein the second platform is configured to host execution of applications associated with the first platform.

16. A method of detecting conflicts during a build process for a dynamic library, the method comprising:

loading program code for the dynamic library to build for a first platform;

determining a set of interfaces and data structures exported by the dynamic library for the first platform;

determining a set of interfaces and data structures exported by the dynamic library for a second platform;

parsing the set of interfaces and data structures to verify consistency of a build contract for the dynamic library; and

generating a build error during a build process for the dynamic library upon detecting an inconsistent build contract, the build contract specifying at least an application binary interface (ABI) for the dynamic library, wherein detecting an inconsistent build contract includes detecting a mismatch between the ABI and an application programming interface (API) for the dynamic library when built for the first platform compared to when the dynamic library is built for the second platform.

17. The method as in claim 16 , wherein the dynamic library is one of multiple dynamic libraries of an application framework.

18. The method as in claim 16 , wherein determining a set of interfaces and data structures exported by the dynamic library for the first platform includes scanning the dynamic library to generate a first set of signatures for the first platform and determining a set of interfaces and data structures exported by the dynamic library for the second platform includes scanning the dynamic library to generate a second set of signatures for second first platform.

19. The method as in claim 18 , wherein detecting an inconsistent build contract includes determining that a signature for a symbol exported by the dynamic library for the first platform is a mismatch for the signature for the symbol exported by the dynamic library for the second platform, wherein the signature is generated based in part on a data type associated with the symbol.

20. The method as in claim 16 , wherein the first platform is a mobile platform associated with a smartphone device or tablet computer, the second platform is associated with a desktop or laptop computing system, and the second platform is configured to host execution of applications associated with the first platform.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: SEQUOIA, JEREMIAH R.; RIBUTZKA, JUERGEN; WU, SHENGZHAO
To: APPLE INC.
Reel/Frame 046648/0975 →
Continuity (3)
Provisional Application 62679827 · Jun 3, 2018
Provisional Application 62679829 · Jun 3, 2018
Provisional Application 62687945 · Jun 21, 2018
Cited By (3)
US 12,293,005 US 12,418,544 US 12,438,714