As part of the RDK-8 release, there is a requirement to bundle browser runtime and UI components as factory applications in the image. However, several challenges exist:
Requirements
Solution Overview
A BitBake class (factory_apps_installer.bbclass) that reads a JSON manifest and installs factory applications into the rootfs during image creation. The solution leverages Yocto's native bb.fetch2 fetcher for robust download handling.
Architecture

JSON File Format
[
{
"packagename": "string", // Required: Final filename in rootfs
"srcuri": "string", // Required: Source URL or file path
"sha256sum": "string" // Optional: SHA256 hash for verification
}
] |
Example
[
{
"packagename": "refui-5.0.20.bolt",
"srcuri": "https://github.com/rdkcentral/rdke-refui/releases/download/5.0.20/refui-5.0.20.bolt",
"sha256sum": "b0f3d00e1deb505a8f95e1ae9e4f88314a68665edccbb1a87ce0867a235e2a6b"
},
{
"packagename": "wpe-webkit-browser.bolt",
"srcuri": "https://artifactory.example.com/wpe-browser/latest.bolt",
"sha256sum": "5d6c176b0c95f637da79e125f704aa5d2d8903663761f277e6674a0121cdaec5"
},
{
"packagename": "lightning-ui.bolt",
"srcuri": "file:///home/jenkins/workspace/builds/lightning-ui.bolt",
"sha256sum": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890"
},
{
"packagename": "experimental-app.bolt",
"srcuri": "https://nightly.example.com/latest/app.bolt",
"sha256sum": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890"
}
] |
Field Description
| Field | Type | Required | Description |
|---|---|---|---|
| packagename | string | Yes | Final filename when installed in rootfs. Must not contain directory traversal characters (., /, \) |
| srcuri | string | Yes | Supports: http://, https://, ftp://, ftps://, file://, or absolute paths |
| sha256sum | string | No | SHA256 hash for integrity verification. If empty, verification is skipped (warning issued) |
BitBake Class Implementation
Required Configurations
Set these in image recipe or local.conf:
# Path to JSON manifest
FACTORY_APPS_JSON_FILE = "${TOPDIR}/../factoryapps.json"
# Installation path in rootfs (without leading /) set in https://github.com/rdkcentral/rdke-common-config/blob/develop/conf/rdke-rdkm-config.inc
FACTORY_APPS_PATH ??= "/usr/share/factory"
Usage in image recipe
# In image recipe (e.g., rdk-fullstack-image.bb)
inherit factory_apps_installer |
Benefits
Security Considerations