Automatically build and configure applications from selected features

JP2025538142A5Pending Publication Date: 2026-08-03GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
GOOGLE LLC
Filing Date
2023-10-11
Publication Date
2026-08-03

AI Technical Summary

Technical Problem

Existing product assembly processes for computing devices require detailed knowledge of the operating system to select appropriate modules and functions, leading to resource-intensive updates and security challenges, especially when managing out-of-tree elements and maintaining secure platform components.

Method used

A product development kit provides tools with embedded knowledge, allowing developers to select components at a functional level without direct access to platform artifacts, ensuring secure assembly and separate updates to the platform and product without recompiling the operating system.

Benefits of technology

This approach enables efficient, secure, and fast assembly of computing device images, allowing updates to be made independently on the product without affecting the underlying platform, while preventing untrusted software from running and maintaining platform integrity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

The technique includes generating (122) a deliverable image of the product, which may include selecting (704) a set of feature options corresponding to the product and an operating system of the product, and generating a graphical interface including a set of input options for the product and a set of input options for the operating system along with links between the sets of input options, the interface restricting user selection of the links between the input options for the product and the operating system (706), and the technique further includes receiving (708) a selection of the input options for the product and the operating system, receiving (710) a selection of the links between the selected product and operating system options, obtaining (712) a set of artifacts corresponding to the received selection, and assembling (714) the set of artifacts into the deliverable image of the product, which may include automatically linking (714) components of the product with components of the operating system according to the selected links.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority and the filing date of U.S. Patent Application No. 17 / 980,659, filed November 4, 2022, the entire disclosure of which is expressly incorporated herein by reference. [Background technology]

[0002] Product assembly of a computing device often involves customizing a software package to include a set of modules and functions specifically configured to run on a particular operating system. Configuration tools may be used to assist the software assembly process for a given product. However, developers may need detailed knowledge of the operating system to select the appropriate modules and functions for a given product. The overall assembly process may include product assembly, in which pieces of the computing platform (e.g., operating system) are combined with pieces of the product's software to create a set of items. This set of items can then be used during a process to create executable software binaries, such as image assembly, to obtain all of the compiled software components that are bundled into a deliverable image for installation on the computing device. The deliverable image may include a flashable system image and optionally other installed software packages.

[0003] Updating an operating system / platform or product can require going through the entire assembly process each time there is a change. For example, updating an operating system's functionality can affect kernel configuration files because items may be renamed or moved. Redoing the assembly process can be resource-intensive, especially when product-related information that resides outside the operating system source code ("out-of-tree") must be incorporated into the "in-tree" operating system / platform information. An in-tree approach involves using all operating system source files and compiling the operating system co-located with the product components. In contrast, an out-of-tree approach may not have the operating system source files and may not be able to compile the operating system co-located with the product. A technical challenge in such cases is that configuration tools may only work with in-tree elements and not with out-of-tree elements. This can be particularly problematic in managed operating systems when deploying new versions to various devices. Another technical challenge is maintaining an appropriate level of security during product assembly. This can be done to prevent platform components from being arbitrarily replaced with untrusted software and to ensure that the platform only invokes product-provided components in specific locations where they are expected to occur. Summary of the Invention

[0004] Aspects of the present technology include product development kit resources that provide product developers with a layer of tools with embedded knowledge without requiring developers to understand the details of the platform. Developers may select components at a functional level without the granularity required to identify specific software-level elements inherently required for product and image assembly. This allows the embedding of platform functionality to evolve without adjusting the product (and vice versa). This solves the technical problem of supporting updates to the platform separately from updates to the product. These resources do not provide users with direct access to platform artifacts. They also automatically ensure that components are selected and configured in a secure manner. This approach can help prove that a fully assembled package containing both platform and product components will not run untrusted software and that the underlying operating system platform components remain unchanged.

[0005] According to one aspect, a computer-implemented method is provided, including one or more processors of a computing system receiving a request to generate a deliverable image of a product; the one or more processors, in response to the request, selecting a set of feature options corresponding to the product and an operating system associated with the product; and generating, in accordance with the selected set of feature options, a graphical interface configured to be presented to a user, the graphical interface including a set of input options related to the product and a set of input options related to the operating system along with links between the set of product input options and the set of input options related to the operating system, the graphical interface constraining user selection of the links between the product input options and the operating system input options. The method further includes receiving a selection of one or more product input options and one or more operating system input options and receiving a selection of links between the selected one or more product options and the selected one or more operating system options; the one or more processors retrieving, from one or more artifact stores, a set of artifacts corresponding to the received selection of the one or more product input options and the one or more operating system input options; and assembling the retrieved set of artifacts into a deliverable image of the product, the method including automatically linking components of the product with components of the operating system according to the selected links.

[0006] In one example, assembling the set of artifacts into a deliverable image for the product includes validating the assembly configuration to confirm that the correct set of artifacts is present to generate the deliverable image. Alternatively or additionally, the generated graphical interface including the set of input options related to the operating system does not include platform-internal components of the operating system. Alternatively or additionally, obtaining the set of artifacts includes retrieving the product-related artifacts from a given one of one or more artifact stores associated with the product. Here, obtaining the set of artifacts may further include retrieving the operating system-related artifacts directly from the operating system artifact store. And, the one or more artifact stores associated with the product may include at least one of a product artifact store, an external artifact store, or a driver artifact store.

[0007] Alternatively or additionally, assembling the set of artifacts into a deliverable image for the product may include constraining one or more configuration values ​​in the deliverable image, where the one or more configuration values ​​may include at least a pair of configuration values, and constraining the one or more configuration values ​​includes preventing the pair of configuration values ​​from being used together. Alternatively or additionally, constraining the one or more configuration values ​​includes limiting access to a given resource to a particular operating system component.

[0008] Alternatively or additionally, an artifact from the set of artifacts corresponding to the one or more operating system input options may be a hashed operating system component. Alternatively or additionally, the method may further include receiving a request to modify the deliverable image, and in response to receiving the request, updating a configuration file of the deliverable image, and compiling a modified version of the deliverable image without recompiling artifacts associated with the operating system.

[0009] Alternatively or additionally, the set of input options for the product may correspond to compiled components of one or more product features. Alternatively or additionally, the method may further include storing the deliverable image in a product release archive. Alternatively or additionally, the method may further include sending the deliverable image to one or more product devices for installation on the one or more product devices.

[0010] According to another aspect, a system is provided that includes a set of artifact stores, each configured to store a particular type of software component, and one or more processors operably coupled to the set of artifact stores. The one or more processors are configured to receive a request to generate a deliverable image of a product; in response to the request, select a set of feature options corresponding to the product and an operating system associated with the product; and generate a graphical interface configured to present to a user according to the selected set of feature options, the graphical interface including a set of input options related to the product and a set of input options related to the operating system along with links between the set of product input options and the set of input options related to the operating system, the graphical interface being configured to restrict user selection of the links between the product input options and the operating system input options; the one or more processors are further configured to receive a selection of one or more product input options and one or more operating system input options; receive a selection of links between the selected one or more product options and the selected one or more operating system options; retrieve a set of artifacts corresponding to the received selection of the one or more product input options and the one or more operating system input options from a set of artifact stores; and assembling the retrieved set of artifacts into a deliverable image of the product, including automatically linking components of the product with components of the operating system according to the selected links.

[0011] In one example, assembling the set of artifacts into a deliverable image for the product includes validating the assembly configuration to verify that the correct set of artifacts is present to generate the deliverable image. Alternatively or additionally, obtaining the set of artifacts may include retrieving product-related artifacts from one or more artifact stores of a set of artifact stores associated with the product. Alternatively or additionally, assembling the set of artifacts into a deliverable image for the product may include constraining one or more configuration values ​​in the deliverable image. Here, constraining the one or more configuration values ​​may include limiting access to a given resource to a particular operating system component.

[0012] Alternatively or additionally, the one or more processors may be further configured to receive a request to modify the deliverable image; and, in response to receiving the request, update a configuration file of the deliverable image; and compile a modified version of the deliverable image without recompiling artifacts associated with the operating system. [Brief explanation of the drawings]

[0013] [Figure 1] FIG. 1 is a process diagram in accordance with aspects of the present technique. [Figure 2] 10 illustrates the use of an assembly tool in accordance with aspects of the present technique; [Figure 3A] 1 illustrates a graphical interface in accordance with aspects of the present technology; [Figure 3B] 1 illustrates a graphical interface in accordance with aspects of the present technology; [Figure 4A] FIG. 1 illustrates an exemplary computing device usable in accordance with aspects of the present technology. [Figure 4B] FIG. 1 illustrates an exemplary computing device usable in accordance with aspects of the present technology. [Figure 4C] FIG. 1 illustrates an exemplary computing device usable in accordance with aspects of the present technology. [Figure 5] FIG. 1 is a block diagram of an exemplary computing device usable in accordance with aspects of the present technology. [Figure 6A] FIG. 1 illustrates a system for use in aspects of the present technology. [Figure 6B] FIG. 1 illustrates a system for use in aspects of the present technology. [Figure 7] FIG. 1 illustrates a method in accordance with aspects of the present technology. DETAILED DESCRIPTION OF THE INVENTION

[0014] overview Streamlined product development tools enable developers to select components at a functional level in a way that allows product-related components and platform components to be efficiently integrated into a deliverable image. The deliverable image can then be installed on many computing devices of a given product type. Product developers can assemble and deliver the deliverable image in a way that is decoupled from the platform release and leaves the underlying platform components unchanged. This can be done through a managed operating system approach.

[0015] For example, the wireless communication configuration utilized by the platform can be updated on a user's product, such as an in-home assistant, (e.g., via an over-the-air update) without affecting the product's specific functionality. Traditional approaches require developers to identify all wireless communication components, such as drivers, configuration files, and adjust the configuration if any component is renamed. This can be time-consuming, and developers may make choices that could enable untrusted software elements to run, or they may be unable to determine which choices to make to configure the system the way they want.

[0016] In contrast, the product developer kit approach described herein allows developers to identify a minimum set of required features from various categories. The identified feature set is then used by the product development kit to select the individual cluster(s) of components necessary to support wireless communication services (or other technology elements supported by the product). As an example, a developer specifies the high-level features needed, and the tool knows which components in the platform are needed to meet those feature requests, which may include corresponding drivers, configuration files, and / or other components. The tool enables the product assembly process to automatically build bootable, flashable, and updatable packages. Developers can use the tool to modify platform functionality without recompiling or using runtime flags, providing greater developer control. The product assembly process can also be used to set appropriate links and permissions to prevent untrusted software from running. Platform components are hashed to verify that no modifications have been made to the underlying operating system.

[0017] Exemplary Approach 1 illustrates an example high-level product assembly process 100 in accordance with aspects of the present technology, where the platform (e.g., according to a particular operating system) is "in-tree" and the product is "out-of-tree." At block 102, a platform build occurs. This may be done in advance by the operating system developer. The operating system SDK and artifacts associated with the operating system may be stored in a platform artifact store 104. This storage may include signed metadata for the operating system and / or individual artifacts.

[0018] Outside the tree in Figure 1, there may be several different build elements, including product component build 106, external software build(s) 108, and out-of-tree driver build 110. These builds produce compiled components (artifacts), and the output from build elements 106-110 may be persisted in product artifact store 112, external artifact store(s) 114, and out-of-tree driver artifact store 116, respectively. Because out-of-tree software is configured to target a platform, the platform provides the out-of-tree build system with instructions, tools, libraries, etc. to use. This is shown via the flow from platform artifact store 104 to building blocks 106, 108, and 110.

[0019] For example, the product artifact store 112 may contain compiled components of a particular product feature. By way of example only, this may be a pedometer, a blood pressure monitor, or other module for use in a wearable device. The external artifact store(s) 114 may contain compiled third-party drivers. In contrast, the platform artifact store 104 may hold compiled communication components of an operating system (e.g., a network stack and / or a Bluetooth, WiFi, or near-field communication (NFC) module). Developers can use product assembly tools to select the correct pre-built item from the store.

[0020] The artifacts are sent to the product assembly environment 118 where they can be assembled into a product image based on which features are selected.

[0021] By way of example, a user, such as a product developer, may use one or more product development tools to select which components related to an operating system to include in a product software package. The user may be presented with a curated set of features to select from. The features may relate to hardware options or other features related to the platform, such as whether to enable one or more communication options for the product (e.g., Bluetooth, WiFi, and / or NFC). Product-specific features may also exist. The selected features may be stored in a file, such as a configuration file. By way of example, the configuration file may be a JavaScript Object Notation (json) type file, although other file types may also be used. Based on the user selections in the configuration file, the product assembly environment 118 downloads the necessary artifacts and any other related information, such as a platform SDK, as shown in block 120.

[0022] A configuration assembly tool or other program may be executed in block 121, which generates an assembled product image in block 122. According to one aspect of the present technology, the assembly tool may be part of the platform SDK itself. The assembly process may include validating the assembly configuration to ensure the correct artifacts are present to create the desired image and linking the configuration, product-provided packages, drivers, and kernel (among other artifacts) together into an Operating System Volume Manager (FVM) image that is configured to be flashable to the device. This includes automatically ensuring that the components of the product image function in a tightly locked-down mode where untrusted software does not run and software components are only fetched from trusted locations.

[0023] This process can generate verified boot artifacts (e.g., hashed ones) to enable the image to be securely booted on a device, and can also generate an update package so that existing devices can receive an over-the-air (OTA) update to this new version. Once the production image is created in block 122, it can be stored in a release archive 124 for rollout to a set of devices "in the wild" and / or target development devices in block 126 for evaluation by developers. Additionally, as indicated by dash-dotted line 128, a direct link can exist between the platform artifact store 104 and block 120. By way of example, platform components can be built in-tree and then published to the platform component store, which can be used by the builds of blocks 106-110 and also directly by assembly step 121 itself (by downloading directly to block 120).

[0024] After a production image is created, a developer may decide to replace, change, or modify the product image. For example, a developer may select a newer version of a driver, or select WiFi communication capabilities instead of Bluetooth communication capabilities. As an example, a configuration file may be updated to add a package to the product package list. An assembly is performed to incorporate the modified components (building a new image of the product from the modified configuration), and then the product image is flashed and deployed to the device. Such modifications to the production image can be made without recompiling operating system artifacts (e.g., there is no need to recompile the entire kernel). The only required step here is to recombine the compiled artifacts into a new image.

[0025] This is a powerful technical solution that avoids a complete recompilation of the operating system (platform) functionality when changes are made to the product functionality (and vice versa). In particular, the hashes of any security-critical code do not change, which means that the security properties of the resulting image are easier to verify. The assembly process is much faster than recompiling the entire operating system image. If the product owner needs support, the team that maintains the operating system knows that the developers are running code originally written by the operating system team without deviation. Furthermore, updates can be made to the platform and the product separately.

[0026] One aspect of this technology limits developer options while having assembly tools automatically (without developer input) generate the appropriate linking to ensure the process functions correctly and prevents the use of untrusted software. This approach creates a "product / platform boundary." The boundary allows changes to be made on one side without the other side needing to be aware of the change. For example, it allows for constraining system operation to a more secure mode. It also allows for validation that values ​​used to configure the platform are within expected (e.g., tested) ranges, preventing platform components from receiving unchecked, potentially invalid input.

[0027] This can be achieved through several mechanisms. First, the system can control the content of certain configuration values ​​in the image; for example, a configuration value cannot contain arbitrary input from the developer, but can only contain values ​​constrained by the assembly tool. Second, where a set of components can be granted access to some resource, the assembly tool uses its knowledge of what is "from the platform" and what is "from the product" to ensure that only specific platform components are granted access to that resource. Furthermore, developer-provided components (called product components) can only be connected to the platform at very specific points where the platform is designed to allow product components to be connected.

[0028] With regard to value constraints, assembly tools can include logic within the distributed tools that prevents certain values ​​from being used together. For example, it may not be possible to have two update checkers on a system, so the tool's analysis of the configuration parameters prevents that from happening. However, it may be possible to have two Wi-Fi chipsets, so the assembly tool needs to allow for that. Configuration parameter schemas (such as mutual exclusion of values) can be designed on a case-by-case basis.

[0029] To distinguish between "from the platform" and "from the product," an assembly tool may only support how to configure the platform. In other words, the assembly tool does not know how the product functions because it is distributed by the platform. An assembly tool can be used to create products, but may not have a built-in schema for configuring a given product. A product can be constructed from a set of primitives provided by the platform, such as product packages, product components, and product configurations of platform capabilities. That set of primitives can be tightly constrained.

[0030] The approach described herein may limit the connection of product components to the platform at certain points; for example, a platform may intentionally limit the platform configuration surface. For example, a platform may explicitly prohibit two update-checking packages because they are incorrect or may cause errors. This is a key difference between "image assembly," which can take any valid set of packages and assemble them into an image, and "product assembly," which semantically understands how the platform should be configured. Product assembly (the tools provided to the product) is implemented using image assembly, but image assembly does not need to be exposed to the product unless there is a specific reason to avoid something the platform intentionally provides.

[0031] Thus, while the assembly tool itself has intimate knowledge of the platform, it can be seen that the assembly tool is configured to effectively present certain aspects to the user as a black box, thereby providing the user with only a very limited set of ways in which the product can be configured. Thus, rather than allowing the product's software to connect to any part of the platform, the assembly tool instead allows the product to connect only at predefined locations using prescribed interfaces, thereby ensuring that the product can communicate with the platform only in ways that are deemed and tested to be secure. Also, because the assembly tool contains its own logic for what is and is not allowed, the assembly tool can enforce the mutual exclusivity of options.

[0032] As described above, this approach may include validating the assembly configuration to ensure the correct artifacts are present and properly linked together. In one scenario, a user interface tool provides a developer with a curated set of features to choose from, including a set of input options for the product and a set of input options for the operating system. For example, to build a product image, there may be dozens or hundreds of packages, which include even more files that are typically included in the configuration data package. There may be dozens of kernel boot components and hundreds of files to include in the boot file system. Thus, with traditional approaches, a developer may have hundreds or even thousands of elements to evaluate and select. In contrast, a curated set of features may omit platform-internal components and very low-level options such as memory configuration or security mechanisms. Here, the tool may provide the developer with the ability to input a minimal amount of information about the product (e.g., a set of hardware specifications or other product requirements) and options to include or exclude high-level operating system features (e.g., Wi-Fi support, automatic update sources, and / or additional hardware drivers that may be required). This may include providing an SDK for the operating system to select required hardware options to include in the configuration file.

[0033] This may include, by way of example, providing communication options from which a developer may select one or more communication elements (e.g., Bluetooth, WiFi, or NFC). The developer need not know how these particular elements interoperate with components of the operating system. In fact, the tools may limit (or prevent) the developer's ability to select elements and links to avoid the possibility of running untrusted software. For example, the developer may not be provided with direct access to platform artifacts.

[0034] Rather, the tool evaluates the product, the selected software element(s), and then automatically makes the appropriate connections for the assembly. For example, this may include selecting the appropriate driver for use with the Bluetooth stack. The assembly connects the driver and stack in a secure manner, where an audit can verify that the integrity of the code has not been compromised and nothing has been changed, providing a relationship of trust.

[0035] In one scenario, the user interface tool may be presented in the form of a command line prompt where, by way of example, a developer may enter information about a particular feature, such as {feature_set_level:"minimal",build_type:"user" features:["Bluetooth","network stack",]}. In another scenario, the graphical interface may include icons for selecting particular features and other elements to be incorporated into the product image.

[0036] FIG. 2 shows a high-level diagram of using the assembly tool described herein. A developer 202 can interact with the assembly tool 204 to generate a product image 206 according to the assembly flow described with respect to FIG. 1. FIG. 3A shows an example of an assembly tool user interface 300. As shown, a set of drop-down menus may be provided, such as a board 302 (e.g., for selecting hardware or firmware elements), an update checker 304, and an update configuration 306. A text box 308 may also be included to allow the developer to enter information about the product. Alternatively or additionally, the UI 300 may use a command line input section 310.

[0037] In an example 320 shown in FIG. 3B, the board dropdown 302 of FIG. 3A is selected. Here, depending on the specific features supported by the board, the dropdown may display a set of options for a particular component, such as WiFi. In this example, the UI may display options for WiFi only 322, WiFi + Near Field Communication (NFC) 324, WiFi + Bluetooth 326, and / or WiFi + NFC + Bluetooth. In this scenario, the user can select which WiFi-related options to enable. Note that the assembly tool UI provides mutual exclusivity for certain elements. For example, selecting a board with WiFi (e.g., any of 322-328) may prompt the user to select whether or not to enable WiFi. Also, for boards without WiFi, such an enablement option should not be presented. Here, the board dropdown may not present a WiFi option or may display such an option as grayed out (to indicate that it is not selectable).

[0038] Exemplary Computing Device The present techniques can be applied to the production assembly of many different types of computing devices, some such examples being shown in the figures and described below.

[0039] FIG. 4A shows a diagram 400 of an exemplary desktop computing device 402. In this example, a single display 404 is shown, although multiple display devices may be supported. In one scenario, the display 404 may be configured for tactile input using a stylus or touch input using a user's finger(s) to interact with a graphical user interface (GUI) 406 presented on the display. As shown, the computing device 402 may employ a wireless keyboard 408 and / or one or more trackpads or mousepads 410, which may be part of a single unit, or the keyboard may be separate from the trackpad / mousepad or mouse-based input 410a. Alternatively, the keyboard and / or other user input may have a wired connection to the computing device 402. As shown in this example, the computing device has a stand 412. One or more microphones 414 may be disposed along the stand and / or along the housing of the integrated client device 402. The computing device may be fixedly attached to the stand 412, although in an alternative configuration the screen (with integrated components) may be separated from the stand, allowing the user to carry it around the house and use it remotely based on battery power. In other words, the client device may include an integrated housing that is (optionally detachably or releasably) coupled to the stand 412.

[0040] In this example, a webcam or other integrated camera 416, which may include a privacy shutter or other feature to disable image capture, is located along the housing of the computing device 402 and can be used for video conferencing, interactive games, and the like. An indicator 418, such as an LED, may be illuminated to alert the user whenever the webcam 416 is in use. The integrated client device may include a separate camera or other imaging device 420 that is part of a presence sensor. As shown, the webcam 416 and imaging device 420 may each be located along the top bezel of the integrated client device housing. In some examples, these devices may be located at various positions along the integrated housing. The integrated camera 416 may be used as part of the presence sensor instead of or in addition to the imaging device 420. In other words, the presence sensor includes an image sensor configured to capture one or more images. The presence sensor may be configured to detect the presence of one or more people within a threshold distance from the client computing device.

[0041] FIG. 4B shows a diagram 440 of an exemplary laptop computer 442, such as a netbook. In this example, a display 444 is shown. In one scenario, the display 444 may be configured for tactile input using a stylus or touch input using a user's finger(s) to interact with a graphical user interface (GUI) 446 presented on the display. As shown, the laptop 442 may use a keyboard 448 and / or one or more trackpads 450a and / or mousepads 450b. These input devices 448 and 450 may be virtual input devices presented on a second display 444′. In this case, the laptop computer 442 may also function as a dual-screen device. One or more microphones 452 may be located along the housing of the computer 442. The laptop computer 442 may include a webcam or other integrated camera 454, which may include a privacy shutter or other feature to disable image capture, located along the housing and may be used for video conferencing, interactive games, and the like. An indicator 456, such as an LED, may be illuminated to alert the user whenever the webcam 454 is in use. Like the computing device 402, the laptop computer 442 may include a separate camera or other imaging device other than the webcam 454 that is part of a presence sensor.

[0042] FIG. 4C shows a diagram 460 of an exemplary interactive household appliance 462, such as a home assistant device. In this example, a display 464 is shown. In this example, the appliance 462 does not include a keyboard. In one scenario, the display 464 may be configured for tactile input using a stylus or touch input using a user's finger(s) to interact with a graphical user interface (GUI) 446 presented on the display. Alternatively, or in addition, the interactive household appliance 462 may be configured to detect contactless gesture input, such as using a short-range radar sensor (not shown), an acoustic sensor (e.g., a microphone array) 468, or a camera such as a webcam 4. In this configuration, the camera(s) 470 may be part of a presence sensor. The devices shown in FIGS. 4A-4C are merely exemplary. For example, the interactive appliance may be a smart speaker or smart thermostat (or other smart appliance), which may not include a camera and may have an LED instead of a display device.

[0043] FIG. 5 illustrates a block diagram 500 of an exemplary computing device, such as the desktop, laptop, or interactive consumer electronics device described above. As illustrated, the computing device includes a processing module 502 having one or more computer processors, such as a central processing unit 504, and / or a graphics processor 506, and a memory module 508 configured to store instructions 510 and data 512. The processors may or may not operate in parallel and may include ASICs, controllers, and other types of hardware circuitry. The processor is configured to receive information from a user through a user interface module 514 and present information to the user via the user interface module on a display device in a display module 516. The display module 516 has a display interface and may be configured as a touchscreen that allows user input via a stylus or other tool or by the user physically touching the screen. Alternatively or additionally, contactless gesture input and / or audio input may be supported.

[0044] The user interface module 514 is configured to receive user input. The user interface module 514 may receive commands from a user via the user input and convert them for delivery to a given processor. The user interface module may be linked to a web browser (not shown). The user input may include the touchscreen described above in addition to or instead of a keyboard, keypad, mousepad and / or touchpad, microphone, gesture-based input, or other types of input devices. The keyboard, keypad, mousepad, and / or touchpad may be part of the computing device or may be connectable to the computing device via a cable or other wired connection, or may be physically separate from the integrated client device and configured to connect via one or more wireless connections, such as Bluetooth, WiFi, ultra-wideband (UWB), infrared, etc. The user interface module 514 may be operably connected to the display module 516.

[0045] The display module 516 may include circuitry for driving a display device to present graphical and other information to a user. In other words, the display device is configured to present visual content. By way of example, the graphical information may be generated by the graphics processor(s) 506, while the central processing unit (CPU) 504 manages the overall operation of the computing device. The graphical information may display answers to user queries on the display module 516. For example, the processing module may use instructions and data stored in the memory module 508 to execute a browser application, a game application, an enterprise app, or other service and present information to a user via the display module 516. The memory module 508 may include databases or other storage for browser information, game state information, location information, etc.

[0046] The memory module 508 may be implemented as one or more of a computer-readable medium(s), a volatile memory unit(s), or a non-volatile memory unit(s). The memory module 508 may include, for example, unmanaged flash memory and / or NVRAM (which may be NAND-based memory), and may be embodied as a hard drive or a memory card, such as an embedded multimedia card (eMMC) or a solid-state drive (SSD) card (e.g., "managed NAND" or "managed memory"). Alternatively, the memory module 508 may also include removable media (e.g., a DVD, CD-ROM, or USB thumb drive). According to one aspect, the memory module 508 may be configured to have multiple partitions.

[0047] One or more areas of memory module 508 may be writable, while other areas may contain read-only (or otherwise write-protected) memory. In one embodiment, the computer program product is tangibly embodied on an information carrier. While FIG. 5 functionally depicts the processor(s), memory module, and other elements of the integrated client device as being within the same overall block, such components may or may not be housed within the same physical enclosure. For example, some or all of the instructions and data may be stored on an information carrier that is a removable storage medium (e.g., an optical drive, high-density tape drive, or USB drive) connectable to the base or display housing, while others may be stored in a read-only computer chip integrated into the base or display housing.

[0048] Data 512 may be retrieved, stored, or modified by a processor according to instructions 510. For example, data may be stored in a computing device register, in a relational database as a table with multiple different fields and records, an XML document, or a flat file. Data may also be formatted in any computing device-readable format. Instructions 510 may be any set of instructions executed by a processor(s) directly (e.g., machine code) or indirectly (e.g., script). For example, instructions may be stored on a computing device-readable medium as computing device code. In that regard, the terms “instructions” and “program” may be used interchangeably herein. Instructions may also be stored in object code format for direct processing by a processor(s), or in any other computing device language, including a script or collection of independent source code modules that are interpreted on demand or pre-compiled.

[0049] 5 , the computing device includes a communications module 518 for communicating with other devices and systems, including other client devices (e.g., a user's mobile phone or wearable computing device), servers, and databases. The communications module 518 includes a wireless transceiver, or the module may alternatively or additionally include a wired transceiver. The computing device may communicate with other remote devices via the communications module 518 using a variety of configurations and protocols, including short-range communications protocols such as near-field communication (NFC), Bluetooth®, Bluetooth® Low Energy (BLE), UWB, or other ad-hoc networks, the Internet, an intranet, a virtual private network, a wide area network, a local network, a private network using one or more company-proprietary communications protocols, Ethernet, WiFi®, and HTTP, and combinations of the foregoing.

[0050] The illustrated example device also includes one or more position and orientation sensors 520. Position and orientation sensors 520 are configured to determine the position and orientation of one or more portions of the computing device, such as the display module, relative to the base. For example, these components may include a GPS receiver that estimates the latitude, longitude, and / or altitude of the integrated client device, as well as an accelerometer, gyroscope, or other direction / velocity sensing device such as an inertial measurement unit (IMU) that can determine the orientation of the display housing (as well as the rate of change of the position of the display housing) relative to the base.

[0051] The computing device may also include one or more camera(s) 522 for capturing still images and recording video streams, such as the integrated webcam and / or a dedicated imaging device for presence detection described above. The device may also include one or more microphones 523 (which may be used for command input and / or presence detection, for example, by detecting acoustic information within a threshold distance from the client device), a speaker 524, and a power module 526. Actuators for providing haptic feedback or other information to the user may be incorporated into the touchscreen of the display module (not shown).

[0052] Example Network The above product assembly process can be used to update various types of products. In different scenarios, updates may be performed on all devices in a product line, a subset (tranche) of devices in a product line, multiple different product lines, etc. One exemplary computing architecture that may be used in these approaches is shown in Figures 6A and 6B. 6A and 6B are pictorial and functional diagrams, respectively, of an exemplary system 600 including multiple computing devices and databases connected via a network. For example, computing device(s) 602 may be cloud-based server systems that provide or otherwise support updates for various products. Database(s) 604 may store updates and other information related to products and / or platforms. The server systems may access the databases via network 606.

[0053] The developer device 608 may be a workstation or other computing device capable of executing a product SDK, which may include assembly tools. The products may include one or more of a desktop computer 610 a, a laptop or tablet PC 610 b, an in-home device, which may be a mobile unit (e.g., a home assistant device 612 a or a smart speaker 612 b), or a fixed device (e.g., a temperature / thermostat unit 612 c). Other products may include a personal communication device, such as a mobile phone or PDA 614, or a wearable device 616, such as a smart watch.

[0054] In one example, computing device 602 may include one or more server computing devices having multiple computing devices, such as a load-balanced server farm or cloud computing system, that exchange information with different nodes of a network for the purpose of receiving, processing, and transmitting data from other computing devices. For example, computing device 602 may include one or more server computing devices that can communicate with development device 608 and any of products 610-616 over network 606. Here, the server computing devices may implement one or more product update services that may correspond to various types of products.

[0055] As shown in FIG. 6B, each of the computing device 602 and developer device 608 and products 610-616 may include one or more processors, memory, data, and instructions. Memory stores information accessible by one or more processors, including instructions and data that may be executed or otherwise used by the processor(s). Memory may be any type capable of storing information accessible by the processor(s), including computing device-readable media. Memory may be non-transitory media, such as a hard drive, memory card, optical disk, solid state, etc. Systems may include different combinations of the foregoing, whereby different portions of instructions and data are stored on different types of media. Instructions may be any set of instructions executed directly (such as machine code) or indirectly (such as script) by a processor(s). For example, instructions may be stored on a computing device-readable medium as computing device code. In that regard, the terms "instructions," "module," and "program" may be used interchangeably herein. Instructions may also be stored in object code format for direct processing by a processor, or in any other computing device language, including a script or collection of independent source code modules that are interpreted on demand or pre-compiled.

[0056] The processor may be any conventional processor, such as a commercially available CPU. Alternatively, each processor may be a dedicated device, such as an ASIC, graphics processing unit (GPU), tensor processing unit (TPU), or other hardware-based processor. While FIG. 6B functionally depicts the processor, memory, and other elements of a given computing device as being within the same block, such a device may actually include multiple processors, computing devices, or memories, which may or may not be housed in the same physical enclosure. Similarly, memory may be a hard drive or other storage medium located in a different enclosure from that of the processor(s), such as, for example, in a cloud computing system of server 602. Thus, reference to a processor or computing device is understood to include reference to a collection of processors, computing devices, or memories, which may or may not operate in parallel.

[0057] The developer device 608 and products 610-616 may include all components typically used in connection with a computing device, such as the processor and memory described above, as well as a user interface subsystem for receiving input from a user and presenting information (e.g., text, images, and / or other graphical elements) to the user. The user interface subsystem may include one or more user inputs (e.g., at least one forward-facing (user) camera, mouse, keyboard, touchscreen, and / or microphone) and one or more display devices operable to display information (e.g., text, images, and / or other graphical elements). Other output devices, such as speaker(s), may also provide information to the user.

[0058] The development device 608 and / or products 610-616 may communicate with a back-end computing system (e.g., server 602) over one or more networks, such as network 606. Network 606 and intervening nodes may include a variety of configurations and protocols, including short-range communication protocols such as Bluetooth, Bluetooth LE, the Internet, the World Wide Web, intranets, virtual private networks, wide area networks, local networks, private networks using one or more company-proprietary communication protocols, Ethernet, WiFi, and HTTP, as well as various combinations of the foregoing. Such communication may be facilitated by any device capable of transmitting data to and from other computing devices, such as modems and wireless interfaces.

[0059] Exemplary Methods of Operation FIG. 7 illustrates a computer-implemented method 700 embodying aspects of the present technology. The method includes, at block 702, one or more processors of a computing system receiving a request to generate a deliverable image of a product. At block 704, the method includes, in response to the request, the one or more processors selecting a set of feature options corresponding to the product and an operating system associated with the product. Then, at block 706, the method includes, at block 706, generating a graphical interface configured to present to a user according to the selected set of feature options. The graphical interface includes a set of input options related to the product and a set of input options related to the operating system, along with links between the set of product input options and the set of operating system input options. The graphical interface limits user selection of links between the product input options and the operating system input options. At block 708, the method includes receiving a selection of one or more product input options and one or more operating system input options, and at block 710, receiving a selection of links between the selected one or more product options and the selected one or more operating system options. At block 712, the method includes one or more processors retrieving, from one or more artifact stores, a set of artifacts corresponding to the received selection of one or more product input options and one or more operating system input options. Then, at block 714, the method includes one or more processors assembling the retrieved set of artifacts into a deliverable image of the product, where assembling includes automatically linking components of the product with components of the operating system according to the selected links.

[0060] Although the technology herein has been described with reference to particular embodiments, it is to be understood that these embodiments are merely illustrative of the principles and applications of the technology. It is therefore to be understood that many modifications can be made to the exemplary embodiments and that other arrangements can be devised without departing from the spirit and scope of the technology as defined by the appended claims.

Claims

1. A method that is performed on a computer, One or more processors in a computing system receive a request to generate an image of the product's output, The one or more processors select a set of functional options corresponding to the product and the operating system associated with the product in response to the request, The method includes one or more processors generating a graphical interface configured to be presented to a user according to the selected set of functional options, wherein the graphical interface includes a set of input options relating to the product and a set of input options relating to the operating system, along with links between the set of input options relating to the product and the set of input options relating to the operating system, the graphical interface restricts user selection of the links between the input options relating to the product and the input options relating to the operating system, and the method further includes The system receives the selection of one or more product input options and one or more operating system input options, Receiving the selection of a link between the selected one or more product options and the selected one or more operating system options, The one or more processors obtain from one or more artifact stores a set of artifacts corresponding to the received selection of one or more product input options and one or more operating system input options, A method comprising the one or more processors assembling the acquired set of artifacts into the artifact image of the product, wherein the assembly includes automatically linking the components of the product with the components of the operating system according to the selected links.

2. The method according to claim 1, wherein assembling the set of artifacts into the artifact image of the product includes verifying the assembly configuration to ensure that the correct set of artifacts exists to generate the artifact image.

3. The method according to claim 1 or 2, wherein the graphical interface generated to include the set of input options relating to the operating system does not include any components within the platform of the operating system.

4. The method according to claim 1 or 2, wherein obtaining the set of artifacts includes retrieving product-related artifacts from a given one of the one or more artifact stores associated with the product.

5. The method according to claim 4, wherein obtaining the set of artifacts further comprises retrieving operating system-related artifacts directly from the operating system artifact store.

6. The method according to claim 4, wherein the one or more artifact stores associated with the product include at least one of a product artifact store, an external artifact store, or a driver artifact store.

7. The method according to claim 1 or 2, wherein assembling the set of artifacts into the output image of the product includes restricting one or more configuration values ​​in the output image.

8. The one or more component values ​​include at least one pair of component values, The method according to claim 7, wherein restricting one or more of the configuration values ​​includes preventing the pair of configuration values ​​from being used together.

9. The method according to claim 7, wherein restricting one or more of the configuration values ​​includes restricting access to a given resource to a specific operating system component.

10. The method according to claim 1 or 2, wherein the artifact from the set of artifacts corresponding to the one or more operating system input options is a hashed operating system component.

11. Receiving a request to modify the aforementioned deliverable image, In response to receiving the aforementioned request, the configuration file of the deliverable image will be updated, The method according to claim 1 or 2, further comprising compiling a modified version of the artifact image without recompiling the artifacts related to the operating system.

12. The method according to claim 1 or 2, wherein the set of input options relating to the product corresponds to a compiled component of one or more product functions.

13. The method according to claim 1 or 2, further comprising storing the aforementioned deliverable image in a product release archive.

14. The method according to claim 1 or 2, further comprising sending the output image to one or more product devices for installation on one or more product devices.

15. A set of artifact stores, each configured to store a specific type of software component, The set of artifact stores comprises one or more processors operably coupled to the set of artifact stores, the one or more processors Receiving a request to generate an image of the product's deliverables, In response to the aforementioned request, select a set of functional options corresponding to the product and the operating system associated with the product, The system is configured to generate a graphical interface which is configured to be presented to the user according to the selected set of functional options, wherein the graphical interface includes a set of input options for the product and a set of input options for the operating system, along with links between the set of input options for the product and the set of input options for the operating system, and the graphical interface is configured to restrict user selection of the links between the input options for the product and the input options for the operating system, and the one or more processors are further configured The system receives the selection of one or more product input options and one or more operating system input options, Receiving the selection of a link between the selected one or more product options and the selected one or more operating system options, Obtaining a set of artifacts from the set of artifact stores corresponding to the received selection of one or more product input options and one or more operating system input options, A system configured to perform the following actions: assembling the acquired set of artifacts into the artifact image of the product, wherein the assembly includes automatically linking the components of the product with the components of the operating system according to the selected links.

16. The system according to claim 15, wherein assembling the set of artifacts into the artifact image of the product includes verifying the assembly configuration to ensure that the correct set of artifacts exists to generate the artifact image.

17. The system according to claim 15 or 16, wherein obtaining the set of artifacts includes retrieving product-related artifacts from one or more artifact stores among the set of artifact stores associated with the product.

18. The system according to claim 15 or 16, wherein assembling the set of artifacts into the output image of the product includes restricting one or more configuration values ​​in the output image.

19. The system according to claim 18, wherein restricting one or more of the configuration values ​​includes restricting access to a given resource to a specific operating system component.

20. The one or more processors described above are Receiving a request to modify the aforementioned deliverable image, In response to receiving the aforementioned request, the configuration file of the deliverable image will be updated, The system according to claim 15 or 16, further configured to compile a modified version of the artifact image without recompiling the artifacts related to the operating system.