Roku SDK Documentation : Roku Channel Manifest

Table of Contents


Root Level

The root level of all Roku Channels must contain a manifest file (pkg:/manifest) containing important attributes for the application. The manifest file must be UTF-8 encoded. 

The attributes in the manifest file include, but are not limited to, the following:

  • name and version number of the application
  • channel icon
  • splash screen image

Manifest Guidelines

  • Each attribute is on a separate line, and has the form name=value
  • Each name=value pair must end with a newline character, or it may not be parsed by the firmware
  • The last line must end with a newline character
  • Empty lines are ignored
  • Lines beginning with a '#' (number sign) are comment lines and are ignored
  • All graphics files specified in the manifest file should be included in the images directory.
  • The URI to set the path to the files should use the pkg: resource prefix, such as pkg:/images/splash-screen.png.

Example Manifest

# Channel Details
title=HeroGridChannel
subtitle=Roku Sample Channel App
major_version=1
minor_version=1
build_version=1

# Channel Assets
mm_icon_focus_hd=pkg:/images/channel-poster_hd.png
mm_icon_focus_sd=pkg:/images/channel-poster_sd.png

# Splash Screen + Loading Screen Artwork
splash_screen_sd=pkg:/images/splash-screen_sd.jpg
splash_screen_hd=pkg:/images/splash-screen_hd.jpg
splash_screen_fhd=pkg:/images/splash-screen_fhd.jpg
splash_color=#808080
splash_min_time=0
# Resolution
ui_resolutions=fhd

confirm_partner_button=1

 

Required Attributes

These are the minimum attributes required for every Roku channel:

AttributeTypeDescriptionSample manifest entrySpecification
titlestringname of the channeltitle=Roku Media Player 
major_versionintegermajor portion of the channel versionmajor_version=1 
minor_versionintegerminor portion of the channel versionminor_version=2 
build_versionintegerbuild numberbuild_version=00150 
mm_icon_focus_hdstring

local URI for the HD channel icon.

NOTE: The channel will not appear on devices or be accessible after publication without this attribute pointing to a valid image. The image's file name and file type must also match.

mm_icon_focus_hd=pkg:/images/channel-icon_HD.png336x210
mm_icon_focus_sd
string

local URI for the SD channel icon.

NOTE: The channel will not appear on devices or be accessible after publication without this attribute pointing to a valid image. The image's file name and file type must also match.

mm_icon_focus_sd=pkg:/images/channel-icon_SD.png
246x140
splash_screen_hdstringlocal URI for the HD splash screen displayed when the channel is launchedsplash_screen_hd=pkg:/images/splash-screen_HD.png1280x720
splash_screen_sdstringlocal URI for the SD splash screen displayed when the channel is launchedsplash_screen_hd=pkg:/images/splash-screen_SD.png720x480

Optional Attributes

The following categories of attributes are optional:

Splash Screen Attributes

AttributeTypeDescriptionSample manifest entrySpecification
splash_colorhex valuebackground color to use if the splash screen image is not full screensplash_color=#121212 
splash_min_time 1integerminimum amount of time (in milliseconds) to display the splash screensplash_min_time=1500 
splash_screen_fhd 2stringlocal URI for the FHD splash screensplash_screen_fhd=pkg:/images/splash-screen_FHD.png1920x1080
splash_rsg_optimizationinteger

NOTE: Roku recommends that you do not use this attribute at this time as it may deplete your channel's available memory resources.

Set this attribute to remove the black screen flash in SceneGraph channels. This is only applicable for SceneGraph channels and only if the first screen is a SceneGraph component. 
Available since firmware version 7.6

splash_rsg_optimization=1 

 

1 If no value is specified, then 1600 (1.6 seconds) is used. If 0 is specified, then there is no default time, so the splash screen disappears as soon as the application displays its first screen. (This may result in the appearance of flashing, if your application shows its first screen quickly).
2 The FHD splash screen image is scaled down for HD display mode but this attribute can be used to specify a resolution-specific splash screen image.

Graphics Scaling Attributes

AttributeTypeDescriptionSample manifest entry
ui_resolutions 1comma separated valuesA comma-separated list of up to three strings that identify the UI resolutions the application has been designed to support.ui_resolutions=sd,hd,fhd
uri_resolution_autosub 2comma separated valuesProvides a flexible way to specify graphical image URIs that are automatically modified to replace a specified string with a string that gets a resolution-specific graphical image.uri_resolution_autosub=$$RES$$,SD,720p,1080p

 

1 The default setting is ui_resolutions=sd,hd 
sd Applications designed for standard definition 720x480 
hd Applications designed for high definition 1280x720 
fhd Applications designed for full high definition 1920x1080
2 The attribute value is a comma-separated list of four strings that specify the string to be replaced along with the replacement strings for SD, HD and FHD resolutions. 
For example, suppose the manifest includes this line: uriresolutionautosub=$$RES$$,SD,720p,1080p And the Roku player supports full high-definition resolution. 
Then if the application specifies a URI of: http://www.roku.com/testChannel/assets/$$RES$$/rokuTV.jpg. At runtime that URI will be modified to: http://www.roku.com/testChannel/assets/1080p/rokuTV.jpg and the application will get the full-high definition version of the graphical image in the specified directory.

Launch Requirement Attributes

AttributeTypeDescriptionSample manifest entry
supports_input_launch
integer

The roInputEvent is used to check whether a deep link has been passed into the application while your channel is running. This enables your application to deep link into content without re-launching your channel. This attribute must be added to the channel manifest for this functionality to work.

supports_input_launch=1
requires_audiometadataintegerThe roAudioMetadata component requires the use of a dynamically loaded library that is not part of the initially booted image. Therefore, an entry must be added to the manifest of any applications that use the roAudioMetadata component so that it can be loaded when the channel is launched.requires_audiometadata=1
requires_gaming_remoteintegerSpecifies that a gaming remote must be linked to the Roku Player to launch the application. If not, a dialog box is presented to the user.requires_gaming_remote=1
requires_mkvintegerPlaying MKV files requires the use of a dynamically loaded library that is not part of the initially booted image. Therefore, an entry must be added to the manifest of any applications that require MKV support so that support is enabled when the channel is launched.requires_mkv=1
network_not_requiredintegerSet to 1 to specify the application does not require the network (such as the USB Media Player). This lets the user launch an application even if there is no network connection.network_not_required=1
bs_libs_requiredstringSpecifies the BrightScript libraries required for the application.bs_libs_required=roku_ads_lib
usb_media_handlerintegerSet to 1 to specify if the channel can be auto-launched when a USB device is inserted.usb_media_handler=1

DRM Attributes

AttributeTypeDescriptionSample manifest entry
requires_aaxs_drmintegerDownloads the required library to use Adobe Access DRM.requires_aaxs_drm=1
requires_aaxs_versionvalueSpecifies the version of Adobe Access to use. Roku currently supports version 1.0.requires_aaxs_version=1.0
requires_verimatrix_drmintegerDownloads the required library to use Verimatrix DRM.requires_verimatrix_drm=1
requires_verimatrix_versionvalueSpecifies the version of Verimatrix DRM to use. Roku currently supports version 1.0.requires_verimatrix_version=1.0

 

See Content Protection for implementation details.

Special Purpose Attributes

AttributeTypeDescriptionSample manifest entry
hiddenintegerThe hidden property tells the firmware to not display the app on the home screen. Hidden apps can still be launched over the network via the External Control API.hidden=1
playonly_awareintegerAttribute to specify the application responds to the Play Only remote control button event. If not set, the application will receive the Play event instead when the user selects the button.playonly_aware=1
rsg_versionvalue

Sets the SceneGraph observer callback model.

If using firmware v9 or above, please use rsg_version=1.2. This enables a new internal mechanism for processing component <script> tags that optimizes the resulting compiled script code resulting in a reduced initial startup time and lesser memory usage while preserving compatibility.

Note that Eval() is deprecated. Eval() cannot be used with rsg_version.

The manifest entry defaults to 1.1 as of firmware v7.5 if it's not specified in the manifest. 

Please note that support for the “rsg_version=1.0” manifest flag is deprecated as of Roku OS 8. This deprecation means that the 1.0 features continue to work in Roku OS 8, but will no longer be supported (and thus should not be expected to work) starting with the next major firmware release. All channels will have to adopt the current observer callback model in successive firmware updates.

rsg_version=1.0
automatic_audio_guide_disabledintegerSet to 1 to disable Audio Guide within a channel.automatic_audio_guide_disabled=1
bs_prof_enabledbooleanEnable BrightScript profilingbs_prof_enabled=true
confirm_partner_buttoninteger

Available since firmware version 7.7

This new feature has been added that launches a confirmation dialogue before launching a channel when the user presses one of the four channel-specific buttons on the Roku remote. This minimizes the number of unintended channel launches after accidentally hitting a button while fast forwarding or rewinding content in a different channel.

When this manifest flag is set to “1” (confirm_partner_button=1), the OS will display a confirmation HUD (Head Up Display) any time the user presses a partner channel button while in that app. By default, the OS will always display this confirmation HUD when a partner button is pressed during video playback, regardless of if the manifest flag has been set.

confirm_partner_button=1  
suppress_unconnected_hud
integer

Available since firmware version 7.7

Manifest entry for overriding network connectivity HUD.

This attribute is used to override the system level display that indicates when media playback is interrupted due to network connection failures.

 

For more information on the connectivity HUD, please read the related support article

suppress_unconnected_hud=[1|0]

1 suppresses, 0 enables.

gameinteger

Available since firmware version 9 

All game channels must add the game manifest entry to their manifest file. This flag prevents the channel from having audio/sound effects delays in the game.

game=1

Screensaver Attributes

For an overview and guide on screensavers, see Screensavers on Roku.

Required Screensaver Attributes

For stand-alone screensavers, only the following attributes are required:

AttributeTypeDescriptionSample manifest entry
screensaver_titlestringname of the screensaver displayed in Settingsscreensaver_title=Dog Screensaver
major_versionintegermajor portion of the screensaver versionmajor_version=1
minor_versionintegerminor portion of the screensaver versionminor_version=2
build_versionintegerbuild numberbuild_version=150

Optional Screensaver Attributes

AttributeTypeDescriptionSample manifest entry
screensaver_privateintegerAttribute to specify if the screensaver will only run within a channel.screensaver_private=1

Legacy Attributes (Deprecated)

The following attributes are no longer required or used by Roku devices:

AttributeTypeDescriptionSample manifest entry
subtitlestringShort promotional description of your application for display beneath the titlesubtitle=providing the latest in cool videos
mm_icon_side_hdstringLocal URI for side unfocused image for HDmm_icon_side_hd=pkg:/images/side-hd.png
mm_icon_side_sdstringLocal URI for side unfocused image for SDmm_icon_side_sd=pkg:/images/side-sd.png
requires_bluetoothintegerSpecifies that a Bluetooth remote must be linked to the box to launch the app. If not, a dialog box is presented to the user. This attribute has been superseded by requires_gaming_remote.requires_bluetooth=1

Attachments:

Archive.zip (application/zip)
confirm_partner_button.jpg (image/jpeg)
confirm_partner_button.jpg (image/jpeg)