IP Library › Granted Patent US 11,243,748
Granted Patent B2
US 11,243,748 · App. 16/678,907 · Granted Feb 8, 2022

Artificial intelligence mobile integration

Inventors: Avner Yehuda (Ramat Gan, IL); Tomas Tovar (San Francisco, CA)
Assignee: APPDOME LTD.
G06F8/36G06F8/41G06F8/52G06F9/44526G06N3/04G06N3/08
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,243,748
App. No.
16/678,907
Granted
Feb 8, 2022
Kind
B2
Abstract

Systems, methods, devices and non-transitory, computer-readable storage mediums are disclosed for AI enhanced mobile integration (AMI). In an embodiment, a method comprises: receiving, by one or more processors, a user-driven integration request and a binary executable for a mobile application; analyzing, by the one or more processors, the binary executable to determine an integration plan; obtaining or creating fusion components based on the integration plan; and creating a second binary executable for the application using the obtained or created fusion components.

Claims (65)

1. A method comprising:

receiving, by one or more processors, a user-driven integration request and a first binary executable for a mobile application, wherein the integration request includes input specifying one or more user-selected services to be added to the first binary executable;

analyzing, by the one or more processors, the integration request and first binary executable to determine an integration plan, the analyzing including a machine learning model trained on at least one of compatibility rules or guidelines learned from past application integrations to determine combinations of services to the mobile application that work together or combinations that do not work together and thereby requiring adjustments;

automatically determining what fusion components are needed to complete the integration request based on the determined integration plan and obtaining the one or more fusion components if the fusion components are available, or if the fusion components are not available, dynamically creating the one or more fusion components based on the integration plan, wherein the fusion components include software adaptors for adjusting one or more plugin software components for implementing the user-selected services; and

generating, by one or more processors and without access to the source code for the first binary executable, a second binary executable for the mobile application-using the obtained or generated fusion components.

2. The method of claim 1 , wherein the machine learning model includes one or more convolutional or feed forward neural networks.

3. The method of claim 1 , wherein generating the second binary executable for the mobile application further comprises:

merging the first binary executable with binary code for the software adaptor and the one or more plugin software components.

4. The method of claim 3 , wherein dynamically creating a software adapter, further comprises:

using a position independent dependency and priority scheme to establish priorities and dependencies between different, fully compiled and linked plugin software components for implementing the user-selected mobile services.

5. The method of claim 4 , wherein using a position independent dependency and priority scheme to establish priorities and dependencies further comprises:

establishing an ordered list of the one or more plugin software components, an ordered list of functions within the one or more plugin software components and a priority for linking and initializing the one or more plugin software components.

6. The method of claim 5 , wherein establishing an ordered list of the one or more plugin software components further comprises:

establishing an order in which a function call is handled by the one or more plugin software components.

7. The method of claim 6 , wherein establishing an order in which a function call is handled by the one or more plugin software components further comprises:

using a hook with import marking and a call depth parameter to establish the order in which the function call is handled by the one or more plugin software components.

8. The method of claim 6 , wherein intercommunication between the one or more plugin software components is event driven where each plugin software component registers a handler for every event, every plugin can send any event, and when an event is sent, all of the event handlers are called.

9. The method of claim 3 , wherein dynamically creating a software adapter further comprises:

generating a first time binary code that will be executed first whenever the application is launched; and

merging the first time binary code with the binary code for the software adaptor and the one or more plugin software components.

10. The method of claim 9 , wherein generating the first time binary code comprises:

extracting activities from a manifest file; and

dynamically generating facade supportive code based on the activities; and

generating the first time binary code using the facade supportive code.

11. The method of claim 10 , wherein dynamically generating facade supportive code based on the activities further comprises:

automatically generating facade static constructors and dynamic facade runtime code; and

adding the facade static constructors and dynamic facade runtime code to the first time binary code.

12. The method of claim 3 , wherein dynamically creating a software adapter further comprises:

determining that duplicate symbols are used by two or more plugin software components;

adding prefixes to all imports and exports of the two or more plugin software components to remove the duplicate symbols; and

renaming invocations of the two or more plugin software components and import tables that are associated with the two or more plugin software components.

13. The method of claim 3 , wherein generating, by the server computer and without access to source code for the first binary executable further comprises:

adjusting the second binary executable to be compliant with one or more information-processing standards.

14. The method of claim 3 , wherein generating the second binary executable, further comprises:

adjusting the second binary executable so that the second binary executable can run on a particular hardware architecture with a particular binary format.

15. The method of claim 3 , further comprising:

automatically renaming classes and reordering resource identifiers used by the one or more plugin software components to resolve conflicts between the one or more plugin software components and the second binary executable.

16. The method of claim 3 , wherein generating the second binary executable, further comprises:

including a user-selected policy into the second binary executable.

17. The method of claim 3 , wherein one or more hooks are included in the second binary executable for at least one of tracking, intercepting or handling life cycle events for the application.

18. The method of claim 3 , further comprising:

automatically overloading classes and methods used by the one or more plugin software components.

19. The method of claim 3 , further comprising:

automatically determining how to split the second binary executable into multiple files based on dependencies so that the first time code is available to the application on startup.

20. The method of claim 3 , wherein the one or more plugin software components are software development kits (SDKs).

21. The method of claim 3 , further comprising:

performing in-line encryption and decryption of strings in the first binary executable.

22. The method of claim 3 , further comprising:

removing logs and debug data from first binary executable.

23. The method of claim 3 , further comprising:

adding a bundle identifier for the application into the second binary executable for use in tamper detection.

24. The method of claim 3 , further comprising:

merging required permissions for the one or more plugin software components and the first binary executable into a single permission file.

25. A system comprising:

one or more processors;

memory configured to store instructions that when executed by the one or more processors, cause the one or more processors to perform operations comprising:

receiving a user-driven integration request and a first binary executable for a mobile application, wherein the integration request includes input specifying one or more user-selected services to be added to the first binary executable;

analyzing the integration request and first binary executable to determine an integration plan, the analyzing including a machine learning model trained on at least one of compatibility rules or guidelines learned from past application integrations to determine combinations of services to the mobile application that work together or combinations that do not work together and thereby requiring adjustments;

automatically determining what fusion components are needed to complete the integration request based on the determined integration plan and obtaining the one or more fusion components if the fusion components are available, or if the fusion components are not available, dynamically creating the one or more fusion components based on the integration plan, wherein the fusion components include software adaptors for adjusting one or more plugin software components for implementing the user-selected services; and

generating, without access to the source code for the first binary executable, a second binary executable for the mobile application using the obtained or created fusion components.

26. A non-transitory computer readable storage medium configured to store instructions that when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving a user-driven integration request and a first binary executable for a mobile application, wherein the integration request includes input specifying one or more user-selected services to be added to the first binary executable;

analyzing the integration request and first binary executable to determine an integration plan, the analyzing including a machine learning model trained on at least one of compatibility rules or guidelines learned from past application integrations to determine combinations of services to the mobile application that work together or combinations that do not work together and thereby requiring adjustments;

automatically determining what fusion components are needed to complete the integration request based on the determined integration plan and obtaining the one or more fusion components if the fusion components are available, or if the fusion components are not available, dynamically creating the one or more fusion components based on the integration plan, wherein the fusion implementing the user-selected services; and

generating, without access to the source code for the first binary executable, a second binary executable for the mobile application using the obtained or generated fusion components.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2021
From: YEHUDA, AVNER; TOVAR, TOMAS
To: APPDOME LTD.
Reel/Frame 055524/0684 →
Continuity (2)
Provisional Application 62757681 · Nov 8, 2018
Related Publication 20200150933A1 · May 14, 2020