WO2022072953A1 - Automatic app resource adaptation - Google Patents

Automatic app resource adaptation Download PDF

Info

Publication number
WO2022072953A1
WO2022072953A1 PCT/US2021/059754 US2021059754W WO2022072953A1 WO 2022072953 A1 WO2022072953 A1 WO 2022072953A1 US 2021059754 W US2021059754 W US 2021059754W WO 2022072953 A1 WO2022072953 A1 WO 2022072953A1
Authority
WO
WIPO (PCT)
Prior art keywords
app
package
resources
enhanced
user device
Prior art date
Application number
PCT/US2021/059754
Other languages
French (fr)
Inventor
Xiaofeng Li
Yiwei ZHAO
Original Assignee
Innopeak Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopeak Technology, Inc. filed Critical Innopeak Technology, Inc.
Priority to PCT/US2021/059754 priority Critical patent/WO2022072953A1/en
Publication of WO2022072953A1 publication Critical patent/WO2022072953A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Definitions

  • the present disclosure relates, in general, to methods, systems, and apparatuses for automatic deployment of resource to an application.
  • Mobile devices are increasingly available with a multitude of display sizes (e.g., aspect ratios, screen resolution, etc.), irregular display shapes, foldable displays, multiple displays, with headsets and unconventional user interfaces, multiple user input / output devices (such as touch screens, styluses, etc.), among other variations.
  • display sizes e.g., aspect ratios, screen resolution, etc.
  • irregular display shapes e.g., foldable displays, multiple displays, with headsets and unconventional user interfaces
  • multiple user input / output devices such as touch screens, styluses, etc.
  • Apps for mobile platforms are typically made available to devices as different versions, created for one or a few common or popular target devices having typical sized displays (e.g., a smartphone, tablet, and laptop computer), and further for groups of target users (e.g., region-specific apps).
  • target devices having typical sized displays (e.g., a smartphone, tablet, and laptop computer), and further for groups of target users (e.g., region-specific apps).
  • target users e.g., region-specific apps.
  • a computer implemented method may include unpacking an app package into one or more directories and one or more files, and extracting one or more app resources from the app package.
  • the method may continue by enhancing the one or more app resources based on one or more device parameters of a user device, and packaging one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the method further includes deploying the enhanced package to the user device.
  • an apparatus may include a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions.
  • the set of instructions may be executed by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package.
  • the instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of a user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the instructions may further be executed by the processor to deploy the enhanced package to the user device.
  • a non-transitory computer readable medium may have encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package.
  • the set of instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of the user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the set of instructions may further be executed by the processor to deploy, via one of the app market or the user device, the enhanced package to the user device.
  • FIG. 1 is a schematic block diagram of a system for automatic application resource adaptation and provisioning, in accordance with various embodiments
  • FIG. 2A is a sequence diagram of a system for automatic application resource adaptation and provisioning, in accordance with various embodiments
  • FIG. 2B is a sequence diagram of an alternative system for automatic application resource adaptation and provisioning, in accordance with various embodiments
  • FIG. 3 is a flow diagram of a method for automatic application resource adaptation and provisioning, in accordance with various embodiments
  • FIG. 4 is a schematic block diagram of a computer system for providing automatic application resource adaptation and provisioning, in accordance with various embodiments; and [0017] Fig. 5 is a block diagram illustrating a networked system of computing systems, which may be used in accordance with various embodiments.
  • a method for automatic application resource adaptation and provisioning may include unpacking an app package into one or more directories and one or more files, and extracting one or more app resources from the app package.
  • the method may continue by enhancing the one or more app resources based on one or more device parameters of a user device, and packaging one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the method further includes deploying the enhanced package to the user device.
  • the method may further include determining whether a key is required to validate the app package, wherein, in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package further comprises repackaging the app package with the one or more enhanced resources into the enhanced package.
  • the method may further include in response to determining that the key is required to validate the enhanced package, determining whether the key is available, wherein, in response to determining that the key is not available, the enhanced package is packaged as a separate package from the app package, and wherein the enhanced package is deployed in addition to the app package.
  • the method may include determining the one or more app resources to extract for enhancement based on a resource type of the one or more app resources.
  • enhancing the one or more app resources may further include modifying the one or more app resources extracted from the app package.
  • enhancing the one or more app resources further comprises replacing the one or more app resources extracted from the app package with a different app resource.
  • the method may include obtaining, via the app market system, the device information from the user device, determining, via an app market system, the app package for deployment to the user device based on device information of the user device, and obtaining, via the app market system, the one or more device parameters from the device information.
  • an apparatus for automatic app resource adaptation and provisioning may include a processor, and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package.
  • the instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of a user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the instructions may further be executed by the processor to deploy the enhanced package to the user device.
  • the apparatus may be the user device.
  • the one or more app resources may include one or more of icons, images, string literals, video, audio, and other media content.
  • the one or more device parameters may include one or more of a region, language, display size, display resolution, other hardware information, device identification, and user information
  • the set of instructions may further be executable by the processor to determine whether a key is required to validate the app package, and in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package may include further repackaging the app package with the one or more enhanced resources into the enhanced package.
  • the set of instructions in response to determining that the key is required to validate the enhanced package, may be further executable by the processor to determine whether the key is available, and in response to determining that the key is not available, the enhanced package may be packaged as a separate package from the app package, and wherein the enhanced package may be deployed in addition to the app package.
  • the set of instructions may further be executable by the processor to determine the one or more app resources to extract for enhancement based on a resource type of the one or more app resources.
  • enhancing the one or more app resources may include modifying the one or more app resources extracted from the app package.
  • enhancing the one or more app resources may further include replacing the one or more app resources extracted from the app package with a different app resource
  • a non-transitory computer readable medium with instructions encoded thereon for automatic app resource adaptation and provisioning may have encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package.
  • the set of instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of the user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources.
  • the set of instructions may further be executed by the processor to deploy, via one of the app market or the user device, the enhanced package to the user device.
  • the set of instructions may further be executable by the processor to determine whether a key is required to validate the app package, and wherein in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package may further include repackaging the app package with the one or more enhanced resources into the enhanced package.
  • the set of instructions in response to determining that the key is required to validate the enhanced package, is further executable by the processor to determine whether the key is available, wherein, in response to determining that the key is not available, the enhanced package may be packaged as a separate package from the app package, and wherein the enhanced package may be deployed in addition to the app package.
  • enhancing the one or more app resources further comprises modifying the one or more app resources extracted from the app package.
  • the various embodiments include, without limitation, methods, systems, apparatuses, and/or software products.
  • a method might comprise one or more procedures, any or all of which may be executed by a computer system.
  • an embodiment might provide a computer system configured with instructions to perform one or more procedures in accordance with methods provided by various other embodiments.
  • a computer program might comprise a set of instructions that are executable by a computer system (and/or a processor therein) to perform such operations.
  • software programs are encoded on physical, tangible, and/or non-transitory computer readable media (such as, to name but a few examples, optical media, magnetic media, and/or the like).
  • Various embodiments described herein, embodying software products and computer-performed methods represent tangible, concrete improvements to existing technological areas, including, without limitation, the provisioning of app packages (such as, without limitation, Android® .apk or iOS® .ipa packages).
  • app packages such as, without limitation, Android® .apk or iOS® .ipa packages.
  • implementations of various embodiments provide a way to dynamically adapt app resources of an app package, and to provision an enhanced app package to a user device.
  • apps are obtained by end users through an app marketplace, where a provider of an app (e.g., a publisher, developer, or other vendor) provides the app marketplace with one or more versions of their app as one or more respective app packages.
  • the app marketplace typically provides an appropriate app package for the user device.
  • different versions of app marketplaces may exist for difference device ecosystems, and an app package may be provided according to the type of app marketplace. Variations may exist, for example, by operating system, device type, region, and language.
  • the resources for the various app packages are typically provisioned to the app marketplace by the provider of the app and/or packaged into the app package by the provider for eventual distribution to end users.
  • the ability to adapt app resources to the increasing diversity of devices and users of those devices are limited.
  • Fig. 1 is a schematic block diagram of a system 100 for automatic app resource adaptation and provisioning.
  • the system 100 includes app provider 105, app market 110, vendor portal 115, resource packaging logic 120, resource enhancement logic 125, user portal 130, one or more app servers 135, app repository 140, and one or more user devices 145a-145n (collectively the user devices 145).
  • app provider 105 app provider 105
  • app market 110 vendor portal 115
  • resource packaging logic 120 resource enhancement logic 125
  • user portal 130 one or more app servers 135, app repository 140, and one or more user devices 145a-145n (collectively the user devices 145).
  • an app provider 105 system may be coupled to the app market 110.
  • the app market 110 may be an app marketplace platform including a vendor portal 115, resource packaging logic 120, resource enhancement logic 125, a user portal 130, and one or more app servers 135.
  • the app market 110 may further be coupled to an app repository 140, and the one or more user devices 145a- 145n.
  • the app provider 105 may be a system of a provider of an app, such as a developer, publisher, or other vendor of the app.
  • the app provider 105 system may include one or more computer systems, which may include content servers for providing one or more of app resources, an app package, or other app content to the app market 110.
  • the app provider 105 may provide the one or more of app resources, app package, or other app content to the app market 110 via the vendor portal 115.
  • the app market 110 may be an app market platform which includes various systems and components for the distribution of applications.
  • the app market 110 may include various cloud-based compute, storage, and networking resources for the deployment of applications to user devices.
  • the app market 110 may include one or more servers, storage devices (e.g., databases, repositories, etc.), and logic for providing vendor-facing and user-facing portals.
  • the app market 110 may include a vendor portal 115, a user portal 130, one or more app servers 135, and app repository 140.
  • the app market 110 may further include logic running on one or more computer systems and/or servers, configured to allow the app market 110 to handle requests for apps and/or app packages from user devices 145, and/or process apps for distribution from the app provider 105.
  • the app market 110 may include resource assembly logic 120 and resource enhancement logic 125, running, for example, on a resource enhancement system 150.
  • the app market 110 may include a resource enhancement system, which may itself comprise one or more computer systems (physical and/or virtual) configured to deploy he resource assembly logic 120 and/or resource enhancement logic 125.
  • the app market 110 may include one or more servers configured to host the vendor portal 115 and user portal 130.
  • the one or more servers hosting the vendor portal 115 and/or user portal 130 may include one or more physical machines, or one or more virtual machine (VM) instances configured to run on one or more physical machines.
  • the app servers 135 may include one or more physical machines and/or virtual machine instances configured to deploy appropriate app packages to the one or more user devices 145a- 145n.
  • the app provider 105 may provide an app to the app market 110 via the vendor portal 115.
  • the app provider 105 may provide one or more different app packages to the app market 110 via the vendor portal 115.
  • the app provider 105 may separately provide one or more app resources for later packaging via the resource assembly logic 120.
  • the vendor portal 115 may be configured to store the one or more app packages and/or one or more app resources in the app repository 140.
  • App resources may include various types of app resources, for example, icons, images, string literals, etc.
  • App resources may include various types of app resources, for example, icons, images, string literals, etc.
  • a finite number of app resources are designed for certain (e.g., common / popular) target devices and/or users. For example, a picture or video for certain display sizes and resolutions, string literals for certain languages, and audio of different bitrates or of different languages.
  • the app is executed on a different device or by different users from the original targeted device and/or user, the user experience of an app may become undesirable (e.g., imaging artifacts and aliasing, wrong language for a region, etc.).
  • the vendor portal 115 may be configured to accept additional content from content providers, including app provider 105.
  • the app market 110 may include additional repositories, including repositories for content in general.
  • Accepted content may include, without limitation, apps, media content (such as video, audio, images, etc.), websites / feeds (e.g., news, sports scores, etc.), user and/or content data, and user and/or content metadata (e.g., user metadata, content metadata, etc.).
  • content provided to the app market 110 may be stored in the appropriate repositories.
  • the resource assembly logic 120 may be executed, for example, on one or more server computers to disassemble an app package into one or more app resources and/or to assemble an app package from one or more app resources.
  • the resource assembly logic 120 may be executed on one or more computer systems, such as one or more dedicated resource assembly computer systems.
  • the one or more resource assembly computer systems may include on one or more physical machines and/or deployed as one or more VM instances.
  • the resource assembly logic 120 may be executed by one or more servers hosting the vendor portal 115.
  • an app package obtained via the vendor portal 115 may first be disassembled by the resource assembly logic 120 before storage in the app repository 140.
  • the app resources may be processed by resource enhancement logic 125 before storage in the app repository.
  • an app package may be obtained from the app repository 140 and disassembled by resource assembly logic 120, and extract one or more app resources from the app package. The one or more extracted resources may then further be processed via the resource enhancement logic 125.
  • the resource assembly logic 120 may be configured to package (or cause to be packaged) one or more app resources enhanced by the resource enhancement logic 125, referred to as "enhanced resources," into an enhanced package.
  • the resource enhancement logic 125 may be configured to enhance (or cause to be enhanced) the one or more extracted resources based on device information obtained from one or more user devices 145a- 145n. Accordingly, in some embodiments, when a user device 145a- 145n requests an app package from the app market 110, via user portal 130, one or more computer systems of the app market 110, such as one or more computer systems hosting the user portal 130, and/or one or more app servers 135, may be configured to obtain device information from the user devices 145.
  • the one or more app servers 135 may be configured to identify an appropriate app package from the app repository 140 for deployment to each user device 145a- 145n based on respective device information associated with the user device 145a- 145n, and further to deploy the appropriate app package. In some embodiments, as previously described, the one or more app servers 135 may obtain the device information directly from the user devices 145 and/or via the user portal 130.
  • the resource enhancement logic 125 may be configured to determine (or cause to be determined) whether to enhance one or more resource of an app package based on the device information and/or determine one or more app resources of an app package (app resources) to enhance based on the device information.
  • the enhancement logic 125 may further be configured to enhance the one or more app resources based on the device information (and further based on one or more device parameters of the device information). Accordingly, in some embodiments, resource enhancement logic 125 may be configured to obtain device information from the user portal 130 and/or one or more app servers 135.
  • the resource enhancement logic 125 may be configured to provide resource enhancement logic 125 with the device information and/or app package identified by the app server 135.
  • the resource enhancement logic 125 may obtain the one or more app resources of an app package corresponding to an app requested by the user device 145a- 145n from resource assembly logic 120, and enhance the one or more app resources.
  • the one or more enhanced resources may then be packaged into an enhanced package by the resource assembly logic 120, and associated with one or more device parameters of the device information.
  • the enhanced packages may be generated and stored in the app repository 140 beforehand, to create enhanced packages for user devices capable of supporting and/or having the associated device parameters.
  • the enhanced packages may be generated dynamically, based on device information obtained from the user devices 145 when a request for an app is received via the user portal 130, and provided to a user device.
  • the one or more app resources may be enhanced during installation on a respective user device 145a- 145n, or in real-time when an app is executed by a respective user device 145a- 145n.
  • the one or more app resources of the app package may be enhanced, via the resource enhancement logic 125, based on the one or more device parameters.
  • the one or more device parameters of the device information may include, without limitation, region, language, display size, display resolution, hardware information (e.g., central processing unit (CPU) information, graphics processing unit (GPU) information, memory information (capacity and speed), storage capacity, etc.), device identification (e.g., model number, serial number), network information (e.g., network speed, bandwidth, etc.), or other relevant information.
  • Device information may be transmitted, for example, in any acceptable format, including, without limitation, as an extensible markup language (XML) or JavaScript Object Notation (JSON) data object.
  • XML extensible markup language
  • JSON JavaScript Object Notation
  • the one or more app resources may be enhanced by the resource enhancement logic 125 by modifying one or more app resources extracted from an existing app package.
  • the one or more app resources extracted from the app package may, for example, include English language text (e.g., string literal).
  • the resource enhancement logic 125 may automatically translate (e.g., via a machine translation / natural language translation service) the English language text into another language based on a region and/or location of a user device 145a- 145n.
  • video resolution of a video file may be adjusted based on a display size and/or resolution of a user device 145a- 145n.
  • an audio file in a specific language may be selected according to a region or location of a user device 145a- 145n.
  • an image or 3D model may automatically be upscaled or downscaled in resolution based on a display size and/or display resolution of a user device 145a- 145n.
  • the one or more app resources may be enhanced based on resources already provided by the app provider 105.
  • an app provider may provide a full resolution image to the app market 110, which may be automatically scaled by the resource enhancement logic 125 based on a display size and/or display resolution of a respective user device 145a- 145n.
  • the one or more app resources may include different types of app resources, without limitation, icons, images, string literals, menus, user interface (UI) layouts and other UI elements, colors, animations, etc.
  • various types of app resources may be enhanced automatically by the resource enhancement logic 125.
  • the resource enhancement logic 125 may be configured to generate additional graphic resources for a large display (whether by obtaining a larger image, or upscaling an existing image) if the original app resource is designed for small display.
  • the resource enhancement logic may automatically generate string literals in additional languages if they are not included as an original app resource.
  • resource enhancement logic 125 may be configured to allow manual enhancement of an app resource, for example, by a user, app provider, or the proprietor of the app market 110.
  • resource assembly logic 120 may be configured to unpack the app package and extract the one or more app resources for enhancement.
  • Unpacking an app package may include, for example, unpacking the app package according to a standard format (e.g., directories with respective files). For example, compiled source code files, compiled and uncompiled resources, manifest files, assets, etc. may be unpacked from the app package in their respective directories.
  • a standard format e.g., directories with respective files.
  • compiled source code files, compiled and uncompiled resources, manifest files, assets, etc. may be unpacked from the app package in their respective directories.
  • the one or more app resources may be extracted from the app package, for example, from a standard directory (e.g., a resources folder) of the app package.
  • the resource assembly logic 120 may then package the one or more enhanced resources with the one or more original app resources to produce a new app package (e.g., an enhanced package).
  • the one or more enhanced resources may be added to the original app package to produce the enhanced package.
  • the one or more enhanced resources may replace the respectively enhanced original app resource, and the one or more enhanced resources may be repackaged with the one or more original app resources that were not enhanced.
  • the one or more enhanced resources may be placed back into resource folders as specified according to an application format.
  • resource qualifiers may further be used for the one or more enhanced resources according to the application format to modify a standard resource folder, etc.
  • the resource enhancement logic 125 may be configured to enhance the one or more app resources during installation or run-time at the user devices 145. Accordingly, in some embodiments, the resource enhancement logic 125 may be configured to further be implemented as part of a respective user device 145a- 145n instead of and/or in addition to the app market 110. Thus, in some examples, one or more app resources may be enhanced after an app is unpacked by a respective user device 145a- 145n (e.g., by a package manager 150a of the user device 150a), or in further examples, when an app is executed and uses a respective app resource. Thus, the resource enhancement logic 155a may further be integrated into a user device 145a- 145n instead of and/or in addition to the app market 110. Thus, in some examples, the user device 145a may itself be a resource enhancement system as described above.
  • app resources are put in standard folders specified by the application format, and according to resource type.
  • Android® applications place app resources in a "res/" folder, such as “res/drawable,” “res/values,” “res/anim,” etc.
  • resource files for different languages.
  • the resource assembly logic 120, and/or a package manager of the user device 145a- 145n may be configured to extract the resource from the known locations, and resource enhancement logic 125, 155a, may be configured to enhance the extracted app resources based on the device information as previously described.
  • enhancement of an app resource may further include replacement of an original app resource with an altogether new resource.
  • the resource enhancement logic 125, 155a may obtain a different resource with which to replace the original app resource. For example, a first image may be replaced with a different second image, as opposed to an enhanced version of the first image.
  • specific app resources (or types of resources) to be enhanced may be determined based on one or more rules.
  • the one or more rules may be created by one or more of an app provider 205, a user of a respective user device 145a- 145n, a manufacturer of a respective user device 145a- 145n, a proprietor of the app market 210, a service provider (such as a cellular service provider, wireless service provider, or internet service provider), or a regulatory entity (e.g., government or other organization).
  • the one or more rules may further specify, without limitation, who (users and/or user devices 145) may enhance an app resource, what app resources may be enhance, where and/or when an app resource may enhanced, and how an app resource is enhanced.
  • the app may be repackaged with the one or more enhanced resources according to the application format.
  • the app package may need to be signed with a key to be valid.
  • the one or more enhanced resources may be packaged as an enhanced package, separate from the original package, and including only the one or more enhanced resources.
  • the original package may be left untouched, and both the original package and the enhanced package may both be installed on the user device 145a- 145n. The user device 145a- 145n may then validate both packages and merge their resources when executed.
  • Figs. 2A & 2B are sequence diagrams depicting examples of automatic application resource adaptation and provisioning, in accordance with various embodiments.
  • the system 200A, 200B includes an app provider 205, app market 210, app repository 215, and user device 220. It should be noted that the various components of the system 200 are schematically illustrated in Fig. 2, and that modifications to the various components and the sequence of operations may be possible, in accordance with the various embodiments.
  • the sequence diagrams begin with the app provider 205 providing an app package to the app market 210.
  • the app provider 205 may be a developer, publisher, or vendor of an application.
  • the app provider 205 may provide one or more versions of an app package to the app market 210 for distribution to various user devices, such as user device 220.
  • the app provider 205 may provide one or more app resources to the app market 210, which may then be packaged into app packages by the app market 210.
  • the app market 210 may be a cloud-based platform for distributing apps to user devices, including the user device 220. Accordingly, the app market 210 may include various computer systems, servers, and storage devices in a distributed (or centralized) architecture. The various systems and components of the app market may further include one or more physical machines and/or one or more VM instances of the respective components of the app market 210. Accordingly, in various embodiments, the app market 210 may further include resource assembly logic and resource enhancement logic, as previously described with respect to Fig. 1. Once the app market 210 receives the app package, in some examples, the app market 210 may store the app package in the app repository 125.
  • the sequence diagram continues with the app market 210 obtaining device information from the user device 220.
  • the user device 220 may provide device information along with a request for an app.
  • the app market 210 may obtain device information from previously stored user demographic and/or hardware survey data.
  • the app market 210 may obtain an app package from the app repository 215 based on the device information.
  • one or more app resources of the app package may be extracted, for example, via resource assembly logic, in the app market 210.
  • the extracted one or more app resources may then be enhanced, via resource enhancement logic, in the app market 210, as previously described with respect to Fig. 1.
  • the one or more enhanced resources may then be packaged into a new enhanced package, and provided to the user device 220.
  • the enhanced resources may be packaged by themselves into an enhanced package, which may be provided to the user device 220 in addition to the original app package.
  • the enhanced resources may be packaged together with one or more of the original one or more app resource that were not enhanced, into an enhanced package.
  • the enhanced package may be provided as a single app package to the user device 220.
  • the app market 210 may store the enhanced package in the app repository 215 for future deployment to other user devices having device information (or one or more device parameters) that matches the device information (or one or more device parameters) of the user device 220.
  • resource enhancement may take place at the user device 220.
  • the app market 210 may obtain an app package from the app repository 215, and provide the app package to the user device 220.
  • the user device 220 may then unpack the app package, for example, via a package manager of the user device 220.
  • the package manager of the user device 220 may thus extract resources from the unpacked package for enhancement.
  • resource enhancement logic may further be deployed at the user device 220 to enhance the one or more extracted app resources.
  • the enhanced resources may then be packaged at the user device as an enhanced package, and deployed at the user device 220.
  • app resources may be enhanced during installation, or while the application is running at the user device runs an application, in real-time.
  • an enhanced package of the one or more enhanced resources may be deployed during installation or during run-time of the app.
  • Fig. 3 is a flow diagram of a method 300 for automatic application resource adaptation and provisioning, in accordance with various embodiments.
  • the method 300 begins, at block 305, by unpacking an app package.
  • one or more versions of an app package may be provided to an app market by an app provider.
  • the app market may then determine an app package to provide a user device based on device information.
  • the app market may unpack the app package.
  • the app package may be provided to the user device for unpacking of the app package.
  • the method 300 continues by extracting app one or more app resources for enhancement.
  • the one or more app resources may be organized into one or more standard folders as specified by an app format. Accordingly, one or more app resources may be extracted from respective standard folders.
  • the method 300 further includes enhancing the extracted one or more app resources.
  • the one or more app resources may be enhanced by the app market, or at the user device.
  • the one or more app resources may be enhanced based on device information, and more specifically one or more device parameters, received from a user device. As previously described with respect to Fig. 1, the one or more app resources may be enhanced automatically, according to the device information.
  • enhancement of an app resource may include modification of an existing app resource by the resource enhancement logic.
  • enhancement of an app resource may include replacement of the app resources altogether with a different resource.
  • a determination of which of the one or more app resources to enhance may take place according to one or more rules as set forth by a user, app provider, app market provider, or regulatory entity. Thus, one or more app resources may be enhanced to produce one or more enhanced resources.
  • a key is required to validate the app package.
  • a key may be required to validate an app.
  • the method 300 may first be determined whether a key is required to validate the package. If no key is required, the method 300 continues, at block 330, by repackaging the app with the one or more enhanced resources. Specifically, in some examples, the one or more enhanced resources may be packaged with one or more app resources that have not been enhanced, into an enhanced package.
  • the method 300 further includes deploying the enhanced package on the user device.
  • the method 300 may continue, at decision block 325, by determining whether a key is available. If a key is available, the app may be repackaged with the one or more enhanced resources to produce an enhanced package. If no key is available, the method 300 may continue, at block 335, by packaging the one or more enhanced resources separately into an enhanced package, where the enhanced package includes only the one or more enhanced resources. The enhanced package may then be provided, at block 340, with the original app package, and deployed, at block 345, to the user device.
  • Fig. 4 is a schematic block diagram of a computer system for providing automatic application resource adaptation and provisioning, in accordance with various embodiments.
  • FIG. 4 provides a schematic illustration of one embodiment of a computer system 400, such as the one or more computer systems (physical and/or virtual) of the app provider 105, 205, app market 110, 210 including servers for the vendor portal 115 and user portal 130, one or more app servers 135, or computer systems for running resource assembly logic 120 and/or resource enhancement logic 125, user devices 145a- 145n, 220, or subsystems thereof, which may perform the methods provided by various other embodiments, as described herein.
  • Fig. 4 only provides a generalized illustration of various components, of which one or more of each may be utilized as appropriate. Fig. 4, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.
  • the computer system 400 includes multiple hardware elements that may be electrically coupled via a bus 405 (or may otherwise be in communication, as appropriate).
  • the hardware elements may include one or more processors 410, including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers); one or more input devices 415, which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like; and one or more output devices 420, which can include, without limitation, a display device, and/or the like.
  • processors 410 including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers); one or more input devices 415, which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like; and one or more output devices 420, which can include,
  • the computer system 400 may further include (and/or be in communication with) one or more storage devices 425, which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random-access memory (“RAM”) and/or a read-only memory (“ROM”), which can be programmable, flash-updateable, and/or the like.
  • RAM random-access memory
  • ROM read-only memory
  • Such storage devices may be configured to implement any appropriate data stores, including, without limitation, various file systems, database structures, and/or the like.
  • the computer system 400 might also include a communications subsystem 430, which may include, without limitation, a modem, a network card (wireless or wired), an IR communication device, a wireless communication device and/or chipset (such as a BluetoothTM device, an 802.11 device, a WiFi device, a WiMax device, a WWAN device, a Z-Wave device, a ZigBee device, cellular communication facilities, etc.), and/or a low-power wireless device.
  • the communications subsystem 430 may permit data to be exchanged with a network (such as the network described below, to name one example), with other computer or hardware systems, between data centers or different cloud platforms, and/or with any other devices described herein.
  • the computer system 400 further comprises a working memory 435, which can include a RAM or ROM device, as described above.
  • the computer system 400 also may comprise software elements, shown as being currently located within the working memory 435, including an operating system 440, device drivers, executable libraries, and/or other code, such as one or more application programs 445, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein.
  • an operating system 440 operating system 440
  • device drivers executable libraries
  • application programs 445 which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein.
  • code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.
  • a set of these instructions and/or code might be encoded and/or stored on a non- transitory computer readable storage medium, such as the storage device(s) 425 described above.
  • the storage medium might be incorporated within a computer system, such as the system 400.
  • the storage medium might be separate from a computer system (i.e., a removable medium, such as a compact disc, etc.), and/or provided in an installation package, such that the storage medium can be used to program, configure, and/or adapt a general purpose computer with the instructions/code stored thereon.
  • These instructions might take the form of executable code, which is executable by the computer system 400 and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system 400 (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.
  • some embodiments may employ a computer or hardware system (such as the computer system 400) to perform methods in accordance with various embodiments of the invention.
  • some or all of the procedures of such methods are performed by the computer system 400 in response to processor 410 executing one or more sequences of one or more instructions (which might be incorporated into the operating system 440 and/or other code, such as an application program 445) contained in the working memory 435.
  • Such instructions may be read into the working memory 435 from another computer readable medium, such as one or more of the storage device(s) 425.
  • execution of the sequences of instructions contained in the working memory 435 might cause the processor(s) 410 to perform one or more procedures of the methods described herein.
  • machine readable medium and “computer readable medium,” as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion.
  • various computer readable media might be involved in providing instructions/code to processor(s) 410 for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals).
  • a computer readable medium is a non-transitory, physical, and/or tangible storage medium.
  • a computer readable medium may take many forms, including, but not limited to, non-volatile media, volatile media, or the like.
  • Non-volatile media includes, for example, optical and/or magnetic disks, such as the storage device(s) 425.
  • Volatile media includes, without limitation, dynamic memory, such as the working memory 435.
  • a computer readable medium may take the form of transmission media, which includes, without limitation, coaxial cables, copper wire and fiber optics, including the wires that comprise the bus 405, as well as the various components of the communication subsystem 430 (and/or the media by which the communications subsystem 430 provides communication with other devices).
  • transmission media can also take the form of waves (including, without limitation, radio, acoustic, and/or light waves, such as those generated during radio-wave and infra-red data communications).
  • Common forms of physical and/or tangible computer readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.
  • Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 410 for execution.
  • the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer.
  • a remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system 400.
  • These signals which might be in the form of electromagnetic signals, acoustic signals, optical signals, and/or the like, are all examples of carrier waves on which instructions can be encoded, in accordance with various embodiments of the invention.
  • the communications subsystem 430 (and/or components thereof) generally receives the signals, and the bus 405 then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory 435, from which the processor(s) 410 retrieves and executes the instructions.
  • the instructions received by the working memory 435 may optionally be stored on a storage device 425 either before or after execution by the processor(s) 410.
  • Fig. 5 is a block diagram illustrating a networked system of computing systems, which may be used in accordance with various embodiments.
  • the system 500 may include one or more user devices 505.
  • a user device 505 may include, merely by way of example, mobile devices such as smartphones and tablets, desktop computers, single-board computers, tablet computers, laptop computers, handheld computers, and the like, running an appropriate operating system, which in various embodiments may include resource assembly logic and/or resource enhancement logic as previously described.
  • User devices 505 may further include external devices, remote devices, servers, and/or workstation computers running any of a variety of operating systems.
  • the operating systems may include commercially- available operating systems, such as UNIXTM or UNIX-like operating systems, Android®, iOS®, or other mobile operating systems, and other suitable operating systems, as known to those skilled in the art.
  • a user device 505 may also have any of a variety of applications, including one or more applications configured to perform methods provided by various embodiments, as well as one or more office applications, database client and/or server applications, and/or web browser applications.
  • a user device 505 may include any other electronic device, such as a thin-client computer, Internet-enabled mobile telephone, and/or personal digital assistant, capable of communicating via a network (e.g., the network(s) 510 described below) and/or of displaying and navigating web pages or other types of electronic documents.
  • a network e.g., the network(s) 510 described below
  • the exemplary system 500 is shown with two user devices 505, any number of user devices 505 may be supported.
  • Certain embodiments operate in a networked environment, which can include a network(s) 510.
  • the network(s) 510 can be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available (and/or free or proprietary) protocols, including, without limitation, MQTT, CoAP, AMQP, STOMP, DDS, SCADA, XMPP, custom middleware agents, Modbus, BACnet, NCTIP 1213, Bluetooth, Zigbee / Z-wave, TCP/IP, SNATM, IPXTM, AppleTalkTM, and the like.
  • the network(s) 510 can each include a local area network (“LAN”), including, without limitation, a fiber network, an Ethernet network, a Token-RingTM network and/or the like; a wide-area network (“WAN”); a wireless wide area network (“WWAN”); a virtual network, such as a virtual private network (“VPN”); the Internet; an intranet; an extranet; a public switched telephone network (“PSTN”); an infra-red network; a wireless network, including, without limitation, a network operating under any of the IEEE 802.11 suite of protocols, the BluetoothTM protocol known in the art, and/or any other wireless protocol; and/or any combination of these and/or other networks.
  • the network might include an access network of the service provider (e.g., an Internet service provider (“ISP”)).
  • the network might include a core network of the service provider, management network, and/or the Internet.
  • Embodiments can also include one or more server computers 515.
  • Each of the server computers 515 may be configured with an operating system, including, without limitation, any of those discussed above, as well as any commercially (or freely) available server operating systems.
  • Each of the servers 515 may also be running one or more applications, which can be configured to provide services to one or more clients 505 and/or other servers 515.
  • one of the servers 515 might be a data server, a web server, a cloud computing device(s), or the like, as described above.
  • the data server might include (or be in communication with) a web server, which can be used, merely by way of example, to process requests for web pages or other electronic documents from user computers 505.
  • the web server can also run a variety of server applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, and the like.
  • the web server may be configured to serve web pages that can be operated within a web browser on one or more of the user computers 505 to perform methods of the invention.
  • the server computers 515 might include one or more application servers, which can be configured with one or more applications, programs, webbased services, or other network resources accessible by a client.
  • the server(s) 515 can be one or more general purpose computers capable of executing programs or scripts in response to the user computers 505 and/or other servers 515, including, without limitation, web applications (which might, in some cases, be configured to perform methods provided by various embodiments).
  • a web application can be implemented as one or more scripts or programs written in any suitable programming language, such as JavaTM, C, C#TM or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming and/or scripting languages.
  • the application server(s) can also include database servers, including, without limitation, those commercially available from OracleTM, MicrosoftTM, SybaseTM, IBMTM, and the like, which can process requests from clients (including, depending on the configuration, dedicated database clients, API clients, web browsers, etc.) running on a user computer, user device, or customer device 505 and/or another server 515.
  • an application server can perform one or more of the processes for implementing media content streaming or playback, and, more particularly, to methods, systems, and apparatuses for implementing video tuning and wireless video communication using a single device in which these functionalities are integrated, as described in detail above.
  • Data provided by an application server may be formatted as one or more web pages (comprising HTML, JavaScript, etc., for example) and/or may be forwarded to a user computer 505 via a web server (as described above, for example).
  • a web server might receive web page requests and/or input data from a user computer 505 and/or forward the web page requests and/or input data to an application server.
  • a web server may be integrated with an application server.
  • one or more servers 515 can function as a file server and/or can include one or more of the files (e.g., application code, data files, etc.) necessary to implement various disclosed methods, incorporated by an application running on a user computer 505 and/or another server 515.
  • a file server can include all necessary files, allowing such an application to be invoked remotely by a user computer, user device, or customer device 505 and/or server 515.
  • the system can include one or more databases 520a-520n (collectively, "databases 520").
  • databases 520 The location of each of the databases 520 is discretionary: merely by way of example, a database 520a might reside on a storage medium local to (and/or resident in) a server 515a (or alternatively, user device 505).
  • a database 520n can be remote from any or all of the computers so long as it can be in communication (e.g., via the network 510) with one or more of these.
  • a database 520 can reside in a storage-area network ("SAN") familiar to those skilled in the art.
  • SAN storage-area network
  • the database 520 may be a relational database configured to host one or more data lakes collected from various data sources, user devices 505, or other sources.
  • Relational databases may include, for example, an Oracle database, that is adapted to store, update, and retrieve data in response to SQL- formatted, NoSQL, or hybrid database commands.
  • the database might be controlled and/or maintained by a database server.
  • the system 500 may further include an app market 525, which may further include resource enhancement logic 530 and resource assembly logic 535, and app provider system 540.
  • the app market 525 may be coupled, via the network 510, to the one or more user devices 505a-505b, and further to the app provider system 540.
  • the app market 525 may receive, from the app provider 540, one or more app packages (or alternatively, one or more app resources). The app market 525 may then store the app package, or assemble an app package, via resource assembly logic 535, from the one or more app resources and store the assembled app package.
  • a user device such as user device 505a, may request the app from the app market 525. The app market 525 may, in turn, determine an appropriate app package from the user device 505a, based on device information associated with the user device 505a.
  • the app market 525 may unpack the app package, via resource assembly logic 535, and extract one or more app resources for enhancement. The one or more extracted app resources may then be enhanced, at the app market 525, via the resource assembly logic 535.
  • the app market may instead provide the user device 505a with the appropriate app package. The user device 505a may then unpack the app package, extract the one or more app resources for enhancement, and enhance the one or more app resources at the user device 505a.
  • the app may then be repackaged with the one or more enhanced resources, as an enhanced package.
  • the one or more enhanced resources may instead be packaged as an enhanced package and provided separately and/or in addition to the original app package for deployment at the user device 505a.

Abstract

A non-transitory computer readable medium having encoded thereon a set of instructions executable by a processor to unpack an app package into one or more directories and one or more files, extract one or more app resources from the app package, and enhance the one or more app resources based on one or more device parameters of the user device. The instructions may further be executed by the processor to package and deploy an enhanced package of one or more enhanced resources to the user device.

Description

AUTOMATIC APP RESOURCE ADAPTATION
COPYRIGHT STATEMENT
[0001] A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
FIEED
[0002] The present disclosure relates, in general, to methods, systems, and apparatuses for automatic deployment of resource to an application.
BACKGROUND
[0003] As the number of different types of mobile devices continues to explode, new and irregular form factors continue to emerge. Mobile devices are increasingly available with a multitude of display sizes (e.g., aspect ratios, screen resolution, etc.), irregular display shapes, foldable displays, multiple displays, with headsets and unconventional user interfaces, multiple user input / output devices (such as touch screens, styluses, etc.), among other variations.
[0004] Applications (or "apps" in shortened form) for mobile platforms are typically made available to devices as different versions, created for one or a few common or popular target devices having typical sized displays (e.g., a smartphone, tablet, and laptop computer), and further for groups of target users (e.g., region-specific apps). Thus, when an app is developed, it includes app resources that are designed for the target devices and/or target users.
[0005] Thus, apps executed on different devices or by users that are not the target devices or users may lead to an undesirable user experience. Thus, methods, systems, and apparatuses for automatic app resource adaptation are provided.
SUMMARY
[0006] Novel tools and techniques for automatic app resource adaptation and provisioning are provided.
[0007] In one embodiment, a computer implemented method may include unpacking an app package into one or more directories and one or more files, and extracting one or more app resources from the app package. The method may continue by enhancing the one or more app resources based on one or more device parameters of a user device, and packaging one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The method further includes deploying the enhanced package to the user device.
[0008] In another embodiment, an apparatus may include a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to perform various functions. The set of instructions may be executed by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package. The instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of a user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The instructions may further be executed by the processor to deploy the enhanced package to the user device.
[0009] In a further embodiment, a non-transitory computer readable medium may have encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package. The set of instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of the user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The set of instructions may further be executed by the processor to deploy, via one of the app market or the user device, the enhanced package to the user device.
[0010] These illustrative embodiments are mentioned not to limit or define the disclosure, but to provide examples to aid understanding thereof. Additional embodiments are discussed in the Detailed Description, and further description is provided therein.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] A further understanding of the nature and advantages of particular embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used to refer to similar components. In some instances, a sub- label is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
[0012] Fig. 1 is a schematic block diagram of a system for automatic application resource adaptation and provisioning, in accordance with various embodiments;
[0013] Fig. 2A is a sequence diagram of a system for automatic application resource adaptation and provisioning, in accordance with various embodiments;
[0014] Fig. 2B is a sequence diagram of an alternative system for automatic application resource adaptation and provisioning, in accordance with various embodiments;
[0015] Fig. 3 is a flow diagram of a method for automatic application resource adaptation and provisioning, in accordance with various embodiments;
[0016] Fig. 4 is a schematic block diagram of a computer system for providing automatic application resource adaptation and provisioning, in accordance with various embodiments; and [0017] Fig. 5 is a block diagram illustrating a networked system of computing systems, which may be used in accordance with various embodiments.
DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS
[0018] Various embodiments provide tools and techniques for automatic application resource adaptation.
[0019] In some examples, a method for automatic application resource adaptation and provisioning is provided. A method may include unpacking an app package into one or more directories and one or more files, and extracting one or more app resources from the app package. The method may continue by enhancing the one or more app resources based on one or more device parameters of a user device, and packaging one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The method further includes deploying the enhanced package to the user device.
[0020] In some examples, the method may further include determining whether a key is required to validate the app package, wherein, in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package further comprises repackaging the app package with the one or more enhanced resources into the enhanced package. The method may further include in response to determining that the key is required to validate the enhanced package, determining whether the key is available, wherein, in response to determining that the key is not available, the enhanced package is packaged as a separate package from the app package, and wherein the enhanced package is deployed in addition to the app package.
[0021] In further examples, the method may include determining the one or more app resources to extract for enhancement based on a resource type of the one or more app resources. [0022] In some examples, enhancing the one or more app resources may further include modifying the one or more app resources extracted from the app package. In further examples, enhancing the one or more app resources further comprises replacing the one or more app resources extracted from the app package with a different app resource.
[0023] In yet further examples, the method may include obtaining, via the app market system, the device information from the user device, determining, via an app market system, the app package for deployment to the user device based on device information of the user device, and obtaining, via the app market system, the one or more device parameters from the device information.
[0024] In some embodiments, an apparatus for automatic app resource adaptation and provisioning is provided. The apparatus may include a processor, and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package. The instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of a user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The instructions may further be executed by the processor to deploy the enhanced package to the user device.
[0025] In some examples, the apparatus may be the user device. In further examples, the one or more app resources may include one or more of icons, images, string literals, video, audio, and other media content. In some examples, the one or more device parameters may include one or more of a region, language, display size, display resolution, other hardware information, device identification, and user information
[0026] In some examples, the set of instructions may further be executable by the processor to determine whether a key is required to validate the app package, and in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package may include further repackaging the app package with the one or more enhanced resources into the enhanced package. In some examples, in response to determining that the key is required to validate the enhanced package, the set of instructions may be further executable by the processor to determine whether the key is available, and in response to determining that the key is not available, the enhanced package may be packaged as a separate package from the app package, and wherein the enhanced package may be deployed in addition to the app package.
[0027] In further examples, the set of instructions may further be executable by the processor to determine the one or more app resources to extract for enhancement based on a resource type of the one or more app resources. In some examples, enhancing the one or more app resources may include modifying the one or more app resources extracted from the app package. In further examples, enhancing the one or more app resources may further include replacing the one or more app resources extracted from the app package with a different app resource
[0028] In in further embodiments, a non-transitory computer readable medium with instructions encoded thereon for automatic app resource adaptation and provisioning is provided. The non-transitory computer readable medium may have encoded thereon a set of instructions executable by the processor to unpack an app package into one or more directories and one or more files, and extract one or more app resources from the app package. The set of instructions may be executed by the processor to enhance the one or more app resources based on one or more device parameters of the user device, and package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources. The set of instructions may further be executed by the processor to deploy, via one of the app market or the user device, the enhanced package to the user device. [0029] In some examples, the set of instructions may further be executable by the processor to determine whether a key is required to validate the app package, and wherein in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package may further include repackaging the app package with the one or more enhanced resources into the enhanced package. In further examples, in response to determining that the key is required to validate the enhanced package, the set of instructions is further executable by the processor to determine whether the key is available, wherein, in response to determining that the key is not available, the enhanced package may be packaged as a separate package from the app package, and wherein the enhanced package may be deployed in addition to the app package. In some examples, enhancing the one or more app resources further comprises modifying the one or more app resources extracted from the app package.
[0030] In the following description, for the purposes of explanation, numerous details are set forth to provide a thorough understanding of the described embodiments. It will be apparent to one skilled in the art, however, that other embodiments may be practiced without some of these details. In other instances, structures and devices are shown in block diagram form. Several embodiments are described herein, and while various features are ascribed to different embodiments, it should be appreciated that the features described with respect to one embodiment may be incorporated with other embodiments as well. By the same token, however, no single feature or features of any described embodiment should be considered essential to every embodiment of the invention, as other embodiments of the invention may omit such features.
[0031] Unless otherwise indicated, all numbers used herein to express quantities, dimensions, and so forth used should be understood as being modified in all instances by the term "about." In this application, the use of the singular includes the plural unless specifically stated otherwise, and use of the terms "and" and "or" means "and/or" unless otherwise indicated. Moreover, the use of the term "including," as well as other forms, such as "includes" and "included," should be considered non-exclusive. Also, terms such as "element" or "component" encompass both elements and components comprising one unit and elements and components that comprise more than one unit, unless specifically stated otherwise.
[0032] The various embodiments include, without limitation, methods, systems, apparatuses, and/or software products. Merely by way of example, a method might comprise one or more procedures, any or all of which may be executed by a computer system.
Correspondingly, an embodiment might provide a computer system configured with instructions to perform one or more procedures in accordance with methods provided by various other embodiments. Similarly, a computer program might comprise a set of instructions that are executable by a computer system (and/or a processor therein) to perform such operations. In many cases, such software programs are encoded on physical, tangible, and/or non-transitory computer readable media (such as, to name but a few examples, optical media, magnetic media, and/or the like).
[0033] Various embodiments described herein, embodying software products and computer-performed methods, represent tangible, concrete improvements to existing technological areas, including, without limitation, the provisioning of app packages (such as, without limitation, Android® .apk or iOS® .ipa packages). Specifically, implementations of various embodiments provide a way to dynamically adapt app resources of an app package, and to provision an enhanced app package to a user device. Conventionally, apps are obtained by end users through an app marketplace, where a provider of an app (e.g., a publisher, developer, or other vendor) provides the app marketplace with one or more versions of their app as one or more respective app packages. Thus, the app marketplace typically provides an appropriate app package for the user device. In some cases, different versions of app marketplaces may exist for difference device ecosystems, and an app package may be provided according to the type of app marketplace. Variations may exist, for example, by operating system, device type, region, and language. However, the resources for the various app packages are typically provisioned to the app marketplace by the provider of the app and/or packaged into the app package by the provider for eventual distribution to end users. Thus, the ability to adapt app resources to the increasing diversity of devices and users of those devices are limited.
[0034] To the extent any abstract concepts are present in the various embodiments, those concepts can be implemented as described herein by devices, software, systems, and methods that involve novel functionality (e.g., steps or operations), such as the dynamic adaptation of app resources and provisioning of app packages.
[0035] Fig. 1 is a schematic block diagram of a system 100 for automatic app resource adaptation and provisioning. The system 100 includes app provider 105, app market 110, vendor portal 115, resource packaging logic 120, resource enhancement logic 125, user portal 130, one or more app servers 135, app repository 140, and one or more user devices 145a-145n (collectively the user devices 145). It should be noted that the various components of the system 100 are schematically illustrated in Fig. 1, and that modifications to the various components and other arrangements of system 100 may be possible and in accordance with the various embodiments.
[0036] In various embodiments, an app provider 105 system may be coupled to the app market 110. The app market 110 may be an app marketplace platform including a vendor portal 115, resource packaging logic 120, resource enhancement logic 125, a user portal 130, and one or more app servers 135. The app market 110 may further be coupled to an app repository 140, and the one or more user devices 145a- 145n.
[0037] In various examples, the app provider 105 may be a system of a provider of an app, such as a developer, publisher, or other vendor of the app. The app provider 105 system may include one or more computer systems, which may include content servers for providing one or more of app resources, an app package, or other app content to the app market 110. In some examples, the app provider 105 may provide the one or more of app resources, app package, or other app content to the app market 110 via the vendor portal 115.
[0038] In various examples, the app market 110 may be an app market platform which includes various systems and components for the distribution of applications. The app market 110 may include various cloud-based compute, storage, and networking resources for the deployment of applications to user devices. In some examples, the app market 110 may include one or more servers, storage devices (e.g., databases, repositories, etc.), and logic for providing vendor-facing and user-facing portals. For example, the app market 110 may include a vendor portal 115, a user portal 130, one or more app servers 135, and app repository 140. The app market 110 may further include logic running on one or more computer systems and/or servers, configured to allow the app market 110 to handle requests for apps and/or app packages from user devices 145, and/or process apps for distribution from the app provider 105. Accordingly, the app market 110 may include resource assembly logic 120 and resource enhancement logic 125, running, for example, on a resource enhancement system 150. Accordingly, in some examples, the app market 110 may include a resource enhancement system, which may itself comprise one or more computer systems (physical and/or virtual) configured to deploy he resource assembly logic 120 and/or resource enhancement logic 125. In further examples, the app market 110 may include one or more servers configured to host the vendor portal 115 and user portal 130. In some examples, the one or more servers hosting the vendor portal 115 and/or user portal 130 may include one or more physical machines, or one or more virtual machine (VM) instances configured to run on one or more physical machines. Similarly, the app servers 135 may include one or more physical machines and/or virtual machine instances configured to deploy appropriate app packages to the one or more user devices 145a- 145n.
[0039] Thus, in various embodiments, the app provider 105 may provide an app to the app market 110 via the vendor portal 115. In some examples, the app provider 105 may provide one or more different app packages to the app market 110 via the vendor portal 115. In some examples, the app provider 105 may separately provide one or more app resources for later packaging via the resource assembly logic 120. Once received by the app market 110, for example, via one or more servers hosting the vendor portal 115, the vendor portal 115 may be configured to store the one or more app packages and/or one or more app resources in the app repository 140.
[0040] When an application is developed, the included one or more app resources are used for the application’s execution. App resources may include various types of app resources, for example, icons, images, string literals, etc. Typically, a finite number of app resources are designed for certain (e.g., common / popular) target devices and/or users. For example, a picture or video for certain display sizes and resolutions, string literals for certain languages, and audio of different bitrates or of different languages. When the app is executed on a different device or by different users from the original targeted device and/or user, the user experience of an app may become undesirable (e.g., imaging artifacts and aliasing, wrong language for a region, etc.). [0041] In some examples, the vendor portal 115 may be configured to accept additional content from content providers, including app provider 105. For example, the app market 110 may include additional repositories, including repositories for content in general. Accepted content may include, without limitation, apps, media content (such as video, audio, images, etc.), websites / feeds (e.g., news, sports scores, etc.), user and/or content data, and user and/or content metadata (e.g., user metadata, content metadata, etc.). Thus, content provided to the app market 110 may be stored in the appropriate repositories.
[0042] In various embodiments, the resource assembly logic 120 may be executed, for example, on one or more server computers to disassemble an app package into one or more app resources and/or to assemble an app package from one or more app resources. In some examples, the resource assembly logic 120 may be executed on one or more computer systems, such as one or more dedicated resource assembly computer systems. The one or more resource assembly computer systems may include on one or more physical machines and/or deployed as one or more VM instances. In some examples, the resource assembly logic 120 may be executed by one or more servers hosting the vendor portal 115.
[0043] In some embodiments, an app package obtained via the vendor portal 115 may first be disassembled by the resource assembly logic 120 before storage in the app repository 140. In some embodiments, once the app package is disassembled, the app resources may be processed by resource enhancement logic 125 before storage in the app repository. In some embodiments, an app package may be obtained from the app repository 140 and disassembled by resource assembly logic 120, and extract one or more app resources from the app package. The one or more extracted resources may then further be processed via the resource enhancement logic 125. In further embodiments, the resource assembly logic 120 may be configured to package (or cause to be packaged) one or more app resources enhanced by the resource enhancement logic 125, referred to as "enhanced resources," into an enhanced package.
[0044] In various embodiments, the resource enhancement logic 125 may be configured to enhance (or cause to be enhanced) the one or more extracted resources based on device information obtained from one or more user devices 145a- 145n. Accordingly, in some embodiments, when a user device 145a- 145n requests an app package from the app market 110, via user portal 130, one or more computer systems of the app market 110, such as one or more computer systems hosting the user portal 130, and/or one or more app servers 135, may be configured to obtain device information from the user devices 145. Accordingly, in some embodiments, the one or more app servers 135 may be configured to identify an appropriate app package from the app repository 140 for deployment to each user device 145a- 145n based on respective device information associated with the user device 145a- 145n, and further to deploy the appropriate app package. In some embodiments, as previously described, the one or more app servers 135 may obtain the device information directly from the user devices 145 and/or via the user portal 130.
[0045] In further embodiments, the resource enhancement logic 125 may be configured to determine (or cause to be determined) whether to enhance one or more resource of an app package based on the device information and/or determine one or more app resources of an app package (app resources) to enhance based on the device information. The enhancement logic 125 may further be configured to enhance the one or more app resources based on the device information (and further based on one or more device parameters of the device information). Accordingly, in some embodiments, resource enhancement logic 125 may be configured to obtain device information from the user portal 130 and/or one or more app servers 135. In one example, once an app package has been identified by the app server 135, the resource enhancement logic 125 may be configured to provide resource enhancement logic 125 with the device information and/or app package identified by the app server 135. In further examples, the resource enhancement logic 125 may obtain the one or more app resources of an app package corresponding to an app requested by the user device 145a- 145n from resource assembly logic 120, and enhance the one or more app resources. The one or more enhanced resources may then be packaged into an enhanced package by the resource assembly logic 120, and associated with one or more device parameters of the device information. Accordingly, in some examples, the enhanced packages may be generated and stored in the app repository 140 beforehand, to create enhanced packages for user devices capable of supporting and/or having the associated device parameters. In some examples, the enhanced packages may be generated dynamically, based on device information obtained from the user devices 145 when a request for an app is received via the user portal 130, and provided to a user device. In yet further embodiments, the one or more app resources may be enhanced during installation on a respective user device 145a- 145n, or in real-time when an app is executed by a respective user device 145a- 145n.
[0046] In some embodiments, the one or more app resources of the app package may be enhanced, via the resource enhancement logic 125, based on the one or more device parameters. The one or more device parameters of the device information may include, without limitation, region, language, display size, display resolution, hardware information (e.g., central processing unit (CPU) information, graphics processing unit (GPU) information, memory information (capacity and speed), storage capacity, etc.), device identification (e.g., model number, serial number), network information (e.g., network speed, bandwidth, etc.), or other relevant information. Device information may be transmitted, for example, in any acceptable format, including, without limitation, as an extensible markup language (XML) or JavaScript Object Notation (JSON) data object. In some embodiments, the one or more app resources may be enhanced by the resource enhancement logic 125 by modifying one or more app resources extracted from an existing app package. The one or more app resources extracted from the app package may, for example, include English language text (e.g., string literal). The resource enhancement logic 125 may automatically translate (e.g., via a machine translation / natural language translation service) the English language text into another language based on a region and/or location of a user device 145a- 145n. In some examples, video resolution of a video file may be adjusted based on a display size and/or resolution of a user device 145a- 145n. In some examples, an audio file in a specific language may be selected according to a region or location of a user device 145a- 145n. In a further example, an image or 3D model may automatically be upscaled or downscaled in resolution based on a display size and/or display resolution of a user device 145a- 145n. In yet further embodiments, the one or more app resources may be enhanced based on resources already provided by the app provider 105. For example, an app provider may provide a full resolution image to the app market 110, which may be automatically scaled by the resource enhancement logic 125 based on a display size and/or display resolution of a respective user device 145a- 145n.
[0047] As previously described, the one or more app resources may include different types of app resources, without limitation, icons, images, string literals, menus, user interface (UI) layouts and other UI elements, colors, animations, etc. Thus, various types of app resources may be enhanced automatically by the resource enhancement logic 125. Thus, in the examples above, the resource enhancement logic 125 may be configured to generate additional graphic resources for a large display (whether by obtaining a larger image, or upscaling an existing image) if the original app resource is designed for small display. In further examples, the resource enhancement logic may automatically generate string literals in additional languages if they are not included as an original app resource. In yet further embodiments, resource enhancement logic 125 may be configured to allow manual enhancement of an app resource, for example, by a user, app provider, or the proprietor of the app market 110.
[0048] Thus, in various embodiments, resource assembly logic 120 may be configured to unpack the app package and extract the one or more app resources for enhancement. Unpacking an app package may include, for example, unpacking the app package according to a standard format (e.g., directories with respective files). For example, compiled source code files, compiled and uncompiled resources, manifest files, assets, etc. may be unpacked from the app package in their respective directories. Thus, by unpacking the app, the one or more app resources may be extracted from the app package, for example, from a standard directory (e.g., a resources folder) of the app package. Once the resource enhancement logic 125 enhances the one or more app resource, thereby producing one or more enhanced resources, the resource assembly logic 120 may then package the one or more enhanced resources with the one or more original app resources to produce a new app package (e.g., an enhanced package). In some embodiments, the one or more enhanced resources may be added to the original app package to produce the enhanced package. In other embodiments, the one or more enhanced resources may replace the respectively enhanced original app resource, and the one or more enhanced resources may be repackaged with the one or more original app resources that were not enhanced. In some examples, the one or more enhanced resources may be placed back into resource folders as specified according to an application format. In further embodiments, resource qualifiers may further be used for the one or more enhanced resources according to the application format to modify a standard resource folder, etc.
[0049] In yet further embodiments, the resource enhancement logic 125 may be configured to enhance the one or more app resources during installation or run-time at the user devices 145. Accordingly, in some embodiments, the resource enhancement logic 125 may be configured to further be implemented as part of a respective user device 145a- 145n instead of and/or in addition to the app market 110. Thus, in some examples, one or more app resources may be enhanced after an app is unpacked by a respective user device 145a- 145n (e.g., by a package manager 150a of the user device 150a), or in further examples, when an app is executed and uses a respective app resource. Thus, the resource enhancement logic 155a may further be integrated into a user device 145a- 145n instead of and/or in addition to the app market 110. Thus, in some examples, the user device 145a may itself be a resource enhancement system as described above.
[0050] Typically, app resources are put in standard folders specified by the application format, and according to resource type. For example, Android® applications place app resources in a "res/" folder, such as "res/drawable," "res/values," "res/anim," etc. In some examples, for pictures, there may be subfolders for each specific display size and resolution. For string literals, there may be respective resource files for different languages. Thus, in some embodiments, the resource assembly logic 120, and/or a package manager of the user device 145a- 145n, may be configured to extract the resource from the known locations, and resource enhancement logic 125, 155a, may be configured to enhance the extracted app resources based on the device information as previously described. In yet further embodiments, enhancement of an app resource may further include replacement of an original app resource with an altogether new resource. Thus, instead of processing an existing resource, the resource enhancement logic 125, 155a may obtain a different resource with which to replace the original app resource. For example, a first image may be replaced with a different second image, as opposed to an enhanced version of the first image.
[0051] In further embodiments, specific app resources (or types of resources) to be enhanced may be determined based on one or more rules. The one or more rules may be created by one or more of an app provider 205, a user of a respective user device 145a- 145n, a manufacturer of a respective user device 145a- 145n, a proprietor of the app market 210, a service provider (such as a cellular service provider, wireless service provider, or internet service provider), or a regulatory entity (e.g., government or other organization). The one or more rules may further specify, without limitation, who (users and/or user devices 145) may enhance an app resource, what app resources may be enhance, where and/or when an app resource may enhanced, and how an app resource is enhanced.
[0052] In some further examples, after enhancement of the one or more app resources, the app may be repackaged with the one or more enhanced resources according to the application format. In some examples, the app package may need to be signed with a key to be valid. Thus, if changing the app package renders the app invalid, the one or more enhanced resources may be packaged as an enhanced package, separate from the original package, and including only the one or more enhanced resources. Thus, the original package may be left untouched, and both the original package and the enhanced package may both be installed on the user device 145a- 145n. The user device 145a- 145n may then validate both packages and merge their resources when executed.
[0053] Figs. 2A & 2B are sequence diagrams depicting examples of automatic application resource adaptation and provisioning, in accordance with various embodiments. The system 200A, 200B includes an app provider 205, app market 210, app repository 215, and user device 220. It should be noted that the various components of the system 200 are schematically illustrated in Fig. 2, and that modifications to the various components and the sequence of operations may be possible, in accordance with the various embodiments.
[0054] According to various embodiments, the sequence diagrams begin with the app provider 205 providing an app package to the app market 210. As previously described, the app provider 205 may be a developer, publisher, or vendor of an application. In some examples, the app provider 205 may provide one or more versions of an app package to the app market 210 for distribution to various user devices, such as user device 220. In further examples, the app provider 205 may provide one or more app resources to the app market 210, which may then be packaged into app packages by the app market 210.
[0055] As previously described, the app market 210 may be a cloud-based platform for distributing apps to user devices, including the user device 220. Accordingly, the app market 210 may include various computer systems, servers, and storage devices in a distributed (or centralized) architecture. The various systems and components of the app market may further include one or more physical machines and/or one or more VM instances of the respective components of the app market 210. Accordingly, in various embodiments, the app market 210 may further include resource assembly logic and resource enhancement logic, as previously described with respect to Fig. 1. Once the app market 210 receives the app package, in some examples, the app market 210 may store the app package in the app repository 125.
[0056] In Fig. 2 A, the sequence diagram continues with the app market 210 obtaining device information from the user device 220. As previously described, in some examples, the user device 220 may provide device information along with a request for an app. In other examples, the app market 210 may obtain device information from previously stored user demographic and/or hardware survey data. The app market 210 may obtain an app package from the app repository 215 based on the device information. In some embodiments, one or more app resources of the app package may be extracted, for example, via resource assembly logic, in the app market 210. The extracted one or more app resources may then be enhanced, via resource enhancement logic, in the app market 210, as previously described with respect to Fig. 1.
[0057] In various embodiments, the one or more enhanced resources may then be packaged into a new enhanced package, and provided to the user device 220. In some examples, the enhanced resources may be packaged by themselves into an enhanced package, which may be provided to the user device 220 in addition to the original app package. In further examples, the enhanced resources may be packaged together with one or more of the original one or more app resource that were not enhanced, into an enhanced package. Thus, the enhanced package may be provided as a single app package to the user device 220. In some embodiments, the app market 210 may store the enhanced package in the app repository 215 for future deployment to other user devices having device information (or one or more device parameters) that matches the device information (or one or more device parameters) of the user device 220.
[0058] In Fig. 2B, resource enhancement may take place at the user device 220. Accordingly, as device information is obtained from the user device, the app market 210 may obtain an app package from the app repository 215, and provide the app package to the user device 220. The user device 220 may then unpack the app package, for example, via a package manager of the user device 220. The package manager of the user device 220 may thus extract resources from the unpacked package for enhancement. As previously described with respect to Fig. 1, resource enhancement logic may further be deployed at the user device 220 to enhance the one or more extracted app resources. The enhanced resources may then be packaged at the user device as an enhanced package, and deployed at the user device 220. As previously described, in some examples, app resources may be enhanced during installation, or while the application is running at the user device runs an application, in real-time. Thus, an enhanced package of the one or more enhanced resources may be deployed during installation or during run-time of the app.
[0059] Fig. 3 is a flow diagram of a method 300 for automatic application resource adaptation and provisioning, in accordance with various embodiments. The method 300 begins, at block 305, by unpacking an app package. As previously described, one or more versions of an app package may be provided to an app market by an app provider. In some embodiments, the app market may then determine an app package to provide a user device based on device information. In some embodiments, the app market may unpack the app package. In other embodiments, the app package may be provided to the user device for unpacking of the app package.
[0060] At block 310, the method 300 continues by extracting app one or more app resources for enhancement. As previously described, in some embodiments, the one or more app resources may be organized into one or more standard folders as specified by an app format. Accordingly, one or more app resources may be extracted from respective standard folders. [0061] At block 315, the method 300 further includes enhancing the extracted one or more app resources. As previously described, in some embodiments, the one or more app resources may be enhanced by the app market, or at the user device. In various embodiments, the one or more app resources may be enhanced based on device information, and more specifically one or more device parameters, received from a user device. As previously described with respect to Fig. 1, the one or more app resources may be enhanced automatically, according to the device information. In some embodiments, enhancement of an app resource may include modification of an existing app resource by the resource enhancement logic. In further embodiments, enhancement of an app resource may include replacement of the app resources altogether with a different resource. In some examples, a determination of which of the one or more app resources to enhance may take place according to one or more rules as set forth by a user, app provider, app market provider, or regulatory entity. Thus, one or more app resources may be enhanced to produce one or more enhanced resources.
[0062] At decision block 320, it is determined whether a key is required to validate the app package. As previously described, in some situations, a key may be required to validate an app. Thus, to package the one or more enhanced resources into an enhanced package, it may first be determined whether a key is required to validate the package. If no key is required, the method 300 continues, at block 330, by repackaging the app with the one or more enhanced resources. Specifically, in some examples, the one or more enhanced resources may be packaged with one or more app resources that have not been enhanced, into an enhanced package. At block 345, the method 300 further includes deploying the enhanced package on the user device.
[0063] If, at decision block 320, it is determined that a key is required to validate the app package, the method 300 may continue, at decision block 325, by determining whether a key is available. If a key is available, the app may be repackaged with the one or more enhanced resources to produce an enhanced package. If no key is available, the method 300 may continue, at block 335, by packaging the one or more enhanced resources separately into an enhanced package, where the enhanced package includes only the one or more enhanced resources. The enhanced package may then be provided, at block 340, with the original app package, and deployed, at block 345, to the user device.
[0064] The techniques and processes described above with respect to various embodiments may be performed by a computer system, such as the one or more computer systems of the app market and/or a user device. Fig. 4 is a schematic block diagram of a computer system for providing automatic application resource adaptation and provisioning, in accordance with various embodiments. Fig. 4 provides a schematic illustration of one embodiment of a computer system 400, such as the one or more computer systems (physical and/or virtual) of the app provider 105, 205, app market 110, 210 including servers for the vendor portal 115 and user portal 130, one or more app servers 135, or computer systems for running resource assembly logic 120 and/or resource enhancement logic 125, user devices 145a- 145n, 220, or subsystems thereof, which may perform the methods provided by various other embodiments, as described herein. It should be noted that Fig. 4 only provides a generalized illustration of various components, of which one or more of each may be utilized as appropriate. Fig. 4, therefore, broadly illustrates how individual system elements may be implemented in a relatively separated or relatively more integrated manner.
[0065] The computer system 400 includes multiple hardware elements that may be electrically coupled via a bus 405 (or may otherwise be in communication, as appropriate). The hardware elements may include one or more processors 410, including, without limitation, one or more general-purpose processors and/or one or more special-purpose processors (such as microprocessors, digital signal processing chips, graphics acceleration processors, and microcontrollers); one or more input devices 415, which include, without limitation, a mouse, a keyboard, one or more sensors, and/or the like; and one or more output devices 420, which can include, without limitation, a display device, and/or the like.
[0066] The computer system 400 may further include (and/or be in communication with) one or more storage devices 425, which can comprise, without limitation, local and/or network accessible storage, and/or can include, without limitation, a disk drive, a drive array, an optical storage device, solid-state storage device such as a random-access memory ("RAM") and/or a read-only memory ("ROM"), which can be programmable, flash-updateable, and/or the like. Such storage devices may be configured to implement any appropriate data stores, including, without limitation, various file systems, database structures, and/or the like.
[0067] The computer system 400 might also include a communications subsystem 430, which may include, without limitation, a modem, a network card (wireless or wired), an IR communication device, a wireless communication device and/or chipset (such as a Bluetooth™ device, an 802.11 device, a WiFi device, a WiMax device, a WWAN device, a Z-Wave device, a ZigBee device, cellular communication facilities, etc.), and/or a low-power wireless device. The communications subsystem 430 may permit data to be exchanged with a network (such as the network described below, to name one example), with other computer or hardware systems, between data centers or different cloud platforms, and/or with any other devices described herein. In many embodiments, the computer system 400 further comprises a working memory 435, which can include a RAM or ROM device, as described above.
[0068] The computer system 400 also may comprise software elements, shown as being currently located within the working memory 435, including an operating system 440, device drivers, executable libraries, and/or other code, such as one or more application programs 445, which may comprise computer programs provided by various embodiments, and/or may be designed to implement methods, and/or configure systems, provided by other embodiments, as described herein. Merely by way of example, one or more procedures described with respect to the method(s) discussed above might be implemented as code and/or instructions executable by a computer (and/or a processor within a computer); in an aspect, then, such code and/or instructions can be used to configure and/or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.
[0069] A set of these instructions and/or code might be encoded and/or stored on a non- transitory computer readable storage medium, such as the storage device(s) 425 described above. In some cases, the storage medium might be incorporated within a computer system, such as the system 400. In other embodiments, the storage medium might be separate from a computer system (i.e., a removable medium, such as a compact disc, etc.), and/or provided in an installation package, such that the storage medium can be used to program, configure, and/or adapt a general purpose computer with the instructions/code stored thereon. These instructions might take the form of executable code, which is executable by the computer system 400 and/or might take the form of source and/or installable code, which, upon compilation and/or installation on the computer system 400 (e.g., using any of a variety of generally available compilers, installation programs, compression/decompression utilities, etc.) then takes the form of executable code.
[0070] It will be apparent to those skilled in the art that substantial variations may be made in accordance with specific requirements. For example, customized hardware (such as programmable logic controllers, single board computers, FPGAs, ASICs, and SoCs) might also be used, and/or particular elements might be implemented in hardware, software (including portable software, such as applets, etc.), or both. Further, connection to other computing devices such as network input/output devices may be employed.
[0071] As mentioned above, in one aspect, some embodiments may employ a computer or hardware system (such as the computer system 400) to perform methods in accordance with various embodiments of the invention. According to a set of embodiments, some or all of the procedures of such methods are performed by the computer system 400 in response to processor 410 executing one or more sequences of one or more instructions (which might be incorporated into the operating system 440 and/or other code, such as an application program 445) contained in the working memory 435. Such instructions may be read into the working memory 435 from another computer readable medium, such as one or more of the storage device(s) 425. Merely by way of example, execution of the sequences of instructions contained in the working memory 435 might cause the processor(s) 410 to perform one or more procedures of the methods described herein.
[0072] The terms "machine readable medium" and "computer readable medium," as used herein, refer to any medium that participates in providing data that causes a machine to operate in a specific fashion. In an embodiment implemented using the computer system 400, various computer readable media might be involved in providing instructions/code to processor(s) 410 for execution and/or might be used to store and/or carry such instructions/code (e.g., as signals). In many implementations, a computer readable medium is a non-transitory, physical, and/or tangible storage medium. In some embodiments, a computer readable medium may take many forms, including, but not limited to, non-volatile media, volatile media, or the like. Non-volatile media includes, for example, optical and/or magnetic disks, such as the storage device(s) 425. Volatile media includes, without limitation, dynamic memory, such as the working memory 435. In some alternative embodiments, a computer readable medium may take the form of transmission media, which includes, without limitation, coaxial cables, copper wire and fiber optics, including the wires that comprise the bus 405, as well as the various components of the communication subsystem 430 (and/or the media by which the communications subsystem 430 provides communication with other devices). In an alternative set of embodiments, transmission media can also take the form of waves (including, without limitation, radio, acoustic, and/or light waves, such as those generated during radio-wave and infra-red data communications).
[0073] Common forms of physical and/or tangible computer readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and/or code.
[0074] Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 410 for execution. Merely by way of example, the instructions may initially be carried on a magnetic disk and/or optical disc of a remote computer. A remote computer might load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and/or executed by the computer system 400. These signals, which might be in the form of electromagnetic signals, acoustic signals, optical signals, and/or the like, are all examples of carrier waves on which instructions can be encoded, in accordance with various embodiments of the invention.
[0075] The communications subsystem 430 (and/or components thereof) generally receives the signals, and the bus 405 then might carry the signals (and/or the data, instructions, etc. carried by the signals) to the working memory 435, from which the processor(s) 410 retrieves and executes the instructions. The instructions received by the working memory 435 may optionally be stored on a storage device 425 either before or after execution by the processor(s) 410. [0076] Fig. 5 is a block diagram illustrating a networked system of computing systems, which may be used in accordance with various embodiments. The system 500 may include one or more user devices 505. A user device 505 may include, merely by way of example, mobile devices such as smartphones and tablets, desktop computers, single-board computers, tablet computers, laptop computers, handheld computers, and the like, running an appropriate operating system, which in various embodiments may include resource assembly logic and/or resource enhancement logic as previously described. User devices 505 may further include external devices, remote devices, servers, and/or workstation computers running any of a variety of operating systems. In some embodiments, the operating systems may include commercially- available operating systems, such as UNIX™ or UNIX-like operating systems, Android®, iOS®, or other mobile operating systems, and other suitable operating systems, as known to those skilled in the art. A user device 505 may also have any of a variety of applications, including one or more applications configured to perform methods provided by various embodiments, as well as one or more office applications, database client and/or server applications, and/or web browser applications. Alternatively, a user device 505 may include any other electronic device, such as a thin-client computer, Internet-enabled mobile telephone, and/or personal digital assistant, capable of communicating via a network (e.g., the network(s) 510 described below) and/or of displaying and navigating web pages or other types of electronic documents. Although the exemplary system 500 is shown with two user devices 505, any number of user devices 505 may be supported.
[0077] Certain embodiments operate in a networked environment, which can include a network(s) 510. The network(s) 510 can be any type of network familiar to those skilled in the art that can support data communications using any of a variety of commercially-available (and/or free or proprietary) protocols, including, without limitation, MQTT, CoAP, AMQP, STOMP, DDS, SCADA, XMPP, custom middleware agents, Modbus, BACnet, NCTIP 1213, Bluetooth, Zigbee / Z-wave, TCP/IP, SNA™, IPX™, AppleTalk™, and the like. Merely by way of example, the network(s) 510 can each include a local area network ("LAN"), including, without limitation, a fiber network, an Ethernet network, a Token-Ring™ network and/or the like; a wide-area network ("WAN"); a wireless wide area network ("WWAN"); a virtual network, such as a virtual private network ("VPN"); the Internet; an intranet; an extranet; a public switched telephone network ("PSTN"); an infra-red network; a wireless network, including, without limitation, a network operating under any of the IEEE 802.11 suite of protocols, the Bluetooth™ protocol known in the art, and/or any other wireless protocol; and/or any combination of these and/or other networks. In a particular embodiment, the network might include an access network of the service provider (e.g., an Internet service provider ("ISP")). In another embodiment, the network might include a core network of the service provider, management network, and/or the Internet.
[0078] Embodiments can also include one or more server computers 515. Each of the server computers 515 may be configured with an operating system, including, without limitation, any of those discussed above, as well as any commercially (or freely) available server operating systems. Each of the servers 515 may also be running one or more applications, which can be configured to provide services to one or more clients 505 and/or other servers 515.
[0079] Merely by way of example, one of the servers 515 might be a data server, a web server, a cloud computing device(s), or the like, as described above. The data server might include (or be in communication with) a web server, which can be used, merely by way of example, to process requests for web pages or other electronic documents from user computers 505. The web server can also run a variety of server applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, and the like. In some embodiments of the invention, the web server may be configured to serve web pages that can be operated within a web browser on one or more of the user computers 505 to perform methods of the invention. [0080] The server computers 515, in some embodiments, might include one or more application servers, which can be configured with one or more applications, programs, webbased services, or other network resources accessible by a client. Merely by way of example, the server(s) 515 can be one or more general purpose computers capable of executing programs or scripts in response to the user computers 505 and/or other servers 515, including, without limitation, web applications (which might, in some cases, be configured to perform methods provided by various embodiments). Merely by way of example, a web application can be implemented as one or more scripts or programs written in any suitable programming language, such as Java™, C, C#™ or C++, and/or any scripting language, such as Perl, Python, or TCL, as well as combinations of any programming and/or scripting languages. The application server(s) can also include database servers, including, without limitation, those commercially available from Oracle™, Microsoft™, Sybase™, IBM™, and the like, which can process requests from clients (including, depending on the configuration, dedicated database clients, API clients, web browsers, etc.) running on a user computer, user device, or customer device 505 and/or another server 515. In some embodiments, an application server can perform one or more of the processes for implementing media content streaming or playback, and, more particularly, to methods, systems, and apparatuses for implementing video tuning and wireless video communication using a single device in which these functionalities are integrated, as described in detail above. Data provided by an application server may be formatted as one or more web pages (comprising HTML, JavaScript, etc., for example) and/or may be forwarded to a user computer 505 via a web server (as described above, for example). Similarly, a web server might receive web page requests and/or input data from a user computer 505 and/or forward the web page requests and/or input data to an application server. In some cases, a web server may be integrated with an application server.
[0081] In accordance with further embodiments, one or more servers 515 can function as a file server and/or can include one or more of the files (e.g., application code, data files, etc.) necessary to implement various disclosed methods, incorporated by an application running on a user computer 505 and/or another server 515. Alternatively, as those skilled in the art will appreciate, a file server can include all necessary files, allowing such an application to be invoked remotely by a user computer, user device, or customer device 505 and/or server 515. [0082] It should be noted that the functions described with respect to various servers herein (e.g., application server, database server, web server, file server, etc.) can be performed by a single server and/or a plurality of specialized servers, depending on implementation- specific needs and parameters.
[0083] In certain embodiments, the system can include one or more databases 520a-520n (collectively, "databases 520"). The location of each of the databases 520 is discretionary: merely by way of example, a database 520a might reside on a storage medium local to (and/or resident in) a server 515a (or alternatively, user device 505). Alternatively, a database 520n can be remote from any or all of the computers so long as it can be in communication (e.g., via the network 510) with one or more of these. In a particular set of embodiments, a database 520 can reside in a storage-area network ("SAN") familiar to those skilled in the art. (Likewise, any necessary files for performing the functions attributed to the computers can be stored locally on the respective computer and/or remotely, as appropriate.) In one set of embodiments, the database 520 may be a relational database configured to host one or more data lakes collected from various data sources, user devices 505, or other sources. Relational databases may include, for example, an Oracle database, that is adapted to store, update, and retrieve data in response to SQL- formatted, NoSQL, or hybrid database commands. The database might be controlled and/or maintained by a database server.
[0084] The system 500 may further include an app market 525, which may further include resource enhancement logic 530 and resource assembly logic 535, and app provider system 540. The app market 525 may be coupled, via the network 510, to the one or more user devices 505a-505b, and further to the app provider system 540.
[0085] As previously described, in various embodiments, the app market 525 may receive, from the app provider 540, one or more app packages (or alternatively, one or more app resources). The app market 525 may then store the app package, or assemble an app package, via resource assembly logic 535, from the one or more app resources and store the assembled app package. A user device, such as user device 505a, may request the app from the app market 525. The app market 525 may, in turn, determine an appropriate app package from the user device 505a, based on device information associated with the user device 505a.
[0086] In some embodiments, the app market 525 may unpack the app package, via resource assembly logic 535, and extract one or more app resources for enhancement. The one or more extracted app resources may then be enhanced, at the app market 525, via the resource assembly logic 535. In further embodiments, the app market may instead provide the user device 505a with the appropriate app package. The user device 505a may then unpack the app package, extract the one or more app resources for enhancement, and enhance the one or more app resources at the user device 505a.
[0087] In some embodiments, the app may then be repackaged with the one or more enhanced resources, as an enhanced package. In further embodiments, if a repackaged app package cannot be validated (e.g., via a key), the one or more enhanced resources may instead be packaged as an enhanced package and provided separately and/or in addition to the original app package for deployment at the user device 505a.
[0088] While some features and aspects have been described with respect to the embodiments, one skilled in the art will recognize that numerous modifications are possible. For example, the methods and processes described herein may be implemented using hardware components, software components, and/or any combination thereof. Further, while various methods and processes described herein may be described with respect to particular structural and/or functional components for ease of description, methods provided by various embodiments are not limited to any particular structural and/or functional architecture but instead can be implemented on any suitable hardware, firmware and/or software configuration. Similarly, while some functionality is ascribed to one or more system components, unless the context dictates otherwise, this functionality can be distributed among various other system components in accordance with the several embodiments.
[0089] Moreover, while the procedures of the methods and processes described herein are described in a particular order for ease of description, unless the context dictates otherwise, various procedures may be reordered, added, and/or omitted in accordance with various embodiments. Moreover, the procedures described with respect to one method or process may be incorporated within other described methods or processes; likewise, system components described according to a particular structural architecture and/or with respect to one system may be organized in alternative structural architectures and/or incorporated within other described systems. Hence, while various embodiments are described with or without some features for ease of description and to illustrate aspects of those embodiments, the various components and/or features described herein with respect to a particular embodiment can be substituted, added and/or subtracted from among other described embodiments, unless the context dictates otherwise. Consequently, although several embodiments are described above, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims.

Claims

WHAT IS CLAIMED IS:
1. A computer-implemented method comprising: unpacking an app package into one or more directories and one or more files; extracting one or more app resources from the app package; enhancing the one or more app resources based on one or more device parameters of a user device; packaging one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources; and deploying the enhanced package to the user device.
2. The computer- implemented method of claim 1, further comprising: determining whether a key is required to validate the app package; wherein, in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package further comprises repackaging the app package with the one or more enhanced resources into the enhanced package.
3. The computer- implemented method of claim 2, further comprising: in response to determining that the key is required to validate the enhanced package, determining whether the key is available; wherein, in response to determining that the key is not available, the enhanced package is packaged as a separate package from the app package, and wherein the enhanced package is deployed in addition to the app package.
4. The computer- implemented method of claim 1, further comprising: determining the one or more app resources to extract for enhancement based on a resource type of the one or more app resources.
5. The computer- implemented method of claim 1, wherein enhancing the one or more app resources further comprises modifying the one or more app resources extracted from the app package.
6. The computer- implemented method of claim 1, wherein enhancing the one or more app resources further comprises replacing the one or more app resources extracted from the app package with a different app resource.
26
7. The computer- implemented method of claim 1 further comprising: obtaining, via the app market system, the device information from the user device; determining, via an app market system, the app package for deployment to the user device based on device information of the user device; and obtaining, via the app market system, the one or more device parameters from the device information.
8. An apparatus, comprising: a processor; and a non-transitory computer readable medium in communication with the processor, the non-transitory computer readable medium having encoded thereon a set of instructions executable by the processor to: unpack an app package into one or more directories and one or more files; extract one or more app resources from the app package; enhance the one or more app resources based on one or more device parameters of a user device; package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources; and deploy the enhanced package to the user device.
9. The apparatus of claim 8, wherein the apparatus is the user device.
10. The apparatus of claim 8, wherein the one or more app resources includes one or more of icons, images, string literals, video, audio, and other media content.
11. The apparatus of claim 8, wherein the one or more device parameters includes one or more of a region, language, display size, display resolution, other hardware information, device identification, and user information.
12. The apparatus of claim 8, wherein the set of instructions is further executable by the processor to: determine whether a key is required to validate the app package; and wherein, in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package further comprises repackaging the app package with the one or more enhanced resources into the enhanced package.
13. The apparatus of claim 12, wherein in response to determining that the key is required to validate the enhanced package, the set of instructions is further executable by the processor to: determine whether the key is available; wherein, in response to determining that the key is not available, the enhanced package is packaged as a separate package from the app package, and wherein the enhanced package is deployed in addition to the app package.
14. The apparatus of claim 8, wherein the set of instructions is further executable by the processor to: determine the one or more app resources to extract for enhancement based on a resource type of the one or more app resources.
15. The apparatus of claim 8, wherein enhancing the one or more app resources further comprises modifying the one or more app resources extracted from the app package.
16. The apparatus of claim 8, wherein enhancing the one or more app resources further comprises replacing the one or more app resources extracted from the app package with a different app resource.
17. A non-transitory computer readable medium having encoded thereon a set of instructions executable by a processor to: unpack an app package into one or more directories and one or more files; extract one or more app resources from the app package; enhance the one or more app resources based on one or more device parameters of the user device; package one or more enhanced resources into an enhanced package, wherein the one or more enhanced resources comprises the one or more enhanced app resources; and deploy, via one of the app market or the user device, the enhanced package to the user device.
18. The non-transitory computer readable medium of claim 17, wherein the set of instructions is further executable by the processor to: determine whether a key is required to validate the app package; and wherein, in response to determining that the key is not required to validate the app package, packaging the one or more enhanced resources into the enhanced package further comprises repackaging the app package with the one or more enhanced resources into the enhanced package.
19. The non-transitory computer readable medium of claim 18, wherein in response to determining that the key is required to validate the enhanced package, the set of instructions is further executable by the processor to: determine whether the key is available; wherein, in response to determining that the key is not available, the enhanced package is packaged as a separate package from the app package, and wherein the enhanced package is deployed in addition to the app package.
20. The non-transitory computer readable medium of claim 17, wherein enhancing the one or more app resources further comprises modifying the one or more app resources extracted from the app package.
29
PCT/US2021/059754 2021-11-17 2021-11-17 Automatic app resource adaptation WO2022072953A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2021/059754 WO2022072953A1 (en) 2021-11-17 2021-11-17 Automatic app resource adaptation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2021/059754 WO2022072953A1 (en) 2021-11-17 2021-11-17 Automatic app resource adaptation

Publications (1)

Publication Number Publication Date
WO2022072953A1 true WO2022072953A1 (en) 2022-04-07

Family

ID=80951851

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2021/059754 WO2022072953A1 (en) 2021-11-17 2021-11-17 Automatic app resource adaptation

Country Status (1)

Country Link
WO (1) WO2022072953A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108690A1 (en) * 2003-11-17 2005-05-19 Tira Wireless Inc. System and method of generating applications for mobile devices
US20170102929A1 (en) * 2015-10-12 2017-04-13 Samsung Electronics Co., Ltd. System and Method to Reduce Storage Area Usage of Android Application
US20190102157A1 (en) * 2017-09-30 2019-04-04 Oracle International Corporation Optimizing redeployment of functions and services across multiple container platforms and installations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108690A1 (en) * 2003-11-17 2005-05-19 Tira Wireless Inc. System and method of generating applications for mobile devices
US20170102929A1 (en) * 2015-10-12 2017-04-13 Samsung Electronics Co., Ltd. System and Method to Reduce Storage Area Usage of Android Application
US20190102157A1 (en) * 2017-09-30 2019-04-04 Oracle International Corporation Optimizing redeployment of functions and services across multiple container platforms and installations

Similar Documents

Publication Publication Date Title
US10740078B2 (en) Dynamic plugin(s) for cloud application(s)
EP3465467B1 (en) Web page accelerations for web application hosted in native mobile application
US10880227B2 (en) Apparatus, hybrid apparatus, and method for network resource access
US8806019B1 (en) Installer-free applications using native code modules and persistent local storage
US20170054792A1 (en) Systems and methods for deploying applications
US20130151937A1 (en) Selective image loading in mobile browsers
US20160179767A1 (en) Architecture for an application with integrated dynamic content
US20180081702A1 (en) Pre/post deployment customization
US11561966B2 (en) Method and system for implementing data associations
WO2017081558A1 (en) Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
US9426202B2 (en) Transforming application cached template using personalized content
US11023558B1 (en) Executing functions on-demand on a server utilizing web browsers
US10594764B2 (en) Request cache to improve web applications performance
US20170017380A1 (en) Mobile enabling a web application developed without mobile rendering capabilities
US10089283B2 (en) Mobile enablement of webpages
CN110825990A (en) Page access method, client, server and system
CN111723314B (en) Webpage display method and device, electronic equipment and computer readable storage medium
US20190073198A1 (en) Multi-flavored software execution from a singular code base
JP5604016B1 (en) Script caching method and information processing apparatus using the same
US20230251889A1 (en) Method and system for implementing virtual machine (vm) management using hardware compression
WO2022072953A1 (en) Automatic app resource adaptation
EP3001311A1 (en) Method for automatically converting web applications into application that can be installed automatically on a plurality of platforms
KR101673937B1 (en) Apparatus, system and method for creating and using short cut object
WO2022099226A1 (en) Programmable icons (p-icons)
US9967316B2 (en) Accessing media item referenced in application

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21876678

Country of ref document: EP

Kind code of ref document: A1