The manifest file is a plain-text key-value file at the root of the project. Roku reads it at install and launch time to determine the channel identity, icons, splash screen, supported resolutions, and build flags. Every field shown here is required for Channel Store submission.
Complete manifest
title=GlobalTV
major_version=1
minor_version=0
build_version=7
mm_icon_focus_hd=pkg:/images/logo-hd.png
mm_icon_focus_fhd=pkg:/images/logo-fhd.png
splash_screen_fhd=pkg:/images/splash_fhd.png
splash_screen_hd=pkg:/images/splash_hd.png
splash_screen_sd=pkg:/images/splash_sd.png
splash_color=#1a1a2e
splash_min_time=1500
ui_resolutions=fhd,hd
rsg_version=1.3
supports_input_launch=1
splash_rsg_optimization=1
bs_const=IS_DEV_BUILD=false
Identity & versioning
| Field | Value | Description |
|---|
title | GlobalTV | Display name shown in the Roku Channel Store and home screen. |
major_version | 1 | Major version number. Part of the full version string 1.0.7. |
minor_version | 0 | Minor version number. |
build_version | 7 | Build number. Incremented on every Channel Store submission. |
The full channel version is composed as major_version.minor_version.build_version, which gives 1.0.7 for the current manifest.
build_version must be incremented before each Channel Store submission. Roku rejects packages with a build version that is less than or equal to the previously submitted version.
Keeping APP_VERSION in sync
AppConstants.brs defines APP_VERSION independently from the manifest:
This string is used at runtime (for example, sent in HTTP headers and ad handshake payloads) and must always match the major_version.minor_version.build_version in the manifest. Update both files together on every release.
There is no automatic enforcement that APP_VERSION and the manifest version stay in sync — they are separate files. The Makefile also carries its own APP_VERSION = 1.0.6 variable used only for naming build artifacts. Keeping all three aligned is a manual step.
Icons
| Field | Value | Description |
|---|
mm_icon_focus_hd | pkg:/images/logo-hd.png | Channel icon at HD resolution (336×210 px). Shown in the home screen grid. |
mm_icon_focus_fhd | pkg:/images/logo-fhd.png | Channel icon at FHD resolution (540×405 px). Shown on 1080p displays. |
Both icons are required for Channel Store submission. Roku scales down the FHD icon for HD displays when both are provided. Images must be PNG files referenced using the pkg:/ URI scheme, which maps to the root of the installed channel package.
Splash screen
| Field | Value | Description |
|---|
splash_screen_fhd | pkg:/images/splash_fhd.png | Splash image for FHD (1920×1080 px). |
splash_screen_hd | pkg:/images/splash_hd.png | Splash image for HD (1280×720 px). |
splash_screen_sd | pkg:/images/splash_sd.png | Splash image for SD (720×480 px). |
splash_color | #1a1a2e | Background fill color displayed before the image loads. |
splash_min_time | 1500 | Minimum time in milliseconds the splash screen is shown. |
splash_rsg_optimization | 1 | Enables RSG optimized splash loading, reducing time to first frame. |
The splash_color value #1a1a2e matches COLOR_BG_CARD (0x1A1A2EFF) defined in AppConstants.brs, giving a seamless transition between the splash and the first rendered UI frame.
splash_min_time=1500 matches SPLASH_MS : 1500 in AppConstants.brs, so the in-app splash delay (if any) is consistent with the OS-level minimum.
Resolution & RSG
| Field | Value | Description |
|---|
ui_resolutions | fhd,hd | Comma-separated list of UI resolutions the channel supports. |
rsg_version | 1.3 | SceneGraph API version. 1.3 is the minimum required by Roku OS 11+. |
ui_resolutions=fhd,hd tells Roku the channel handles both 1920×1080 and 1280×720 layouts. Roku selects the appropriate resolution based on the connected display. The design coordinate system used throughout the codebase is 1920×1080 and is scaled down at runtime for 720p devices via GTV_GetDesignSize().
Deep link support
| Field | Value | Description |
|---|
supports_input_launch=1 | 1 | Declares that the channel handles roInput events for deep linking. |
Setting supports_input_launch=1 is required for the channel to receive roInput events while running. The main entry point in source/main.brs listens for roInputEvent messages and routes them through inputDeepLink. This field is validated by make check and is a hard requirement for Roku certification checklist item 8.1.
Build flags
| Field | Value | Description |
|---|
bs_const | IS_DEV_BUILD=false | Compile-time boolean constant. Set to true during local development to enable verbose logging. |
bs_const defines compile-time constants evaluated by the BrightScript preprocessor. When IS_DEV_BUILD=false, any code guarded by #if IS_DEV_BUILD is stripped from the compiled output and never executes on the device.
GTV_Log() in source/utils/Logger.brs is only active when IS_DEV_BUILD=true. GTV_Warn() and GTV_Error() print unconditionally regardless of this flag. To enable verbose debug output during development, change the manifest to bs_const=IS_DEV_BUILD=true before sideloading — and revert it before submitting to the Channel Store.