Developer Tutorial: Packaging a channel for distribution

Channel packaging, generating keys, rekeying, and screenshots

image10

Overview

Publishing on the Roku Channel Store requires several core items — such as source code, images, and fonts — to be “packaged.” This enables developers to securely publish channels while keeping all intellectual property safely encrypted. The process of “packaging a channel” uses cryptographic hardware built into Roku devices and creates an encrypted package that can be easily and securely distributed on Roku devices.

Requirements to follow along:

Sections:

  1. Packaging with Eclipse
  2. Packaging using the Package Utilities
  3. Rekeying
  4. Channel screenshots

1: Packaging with Eclipse 

Packaging can be done in Eclipse using the Roku BrightScript plugin. In an existing BrightScript project, select File > Export > BrightScript Deployment.

image04

In the following dialog, check Install on Roku Box and Create Package (.pkg) file. If the genkey utility has not been run previously, click on New Keys to generate a signing key.

image01

Select Finish and the package will be available in the out folder of the current BrightScript project in the Eclipse workspace.

2: Packaging using the Package Utilities

A. Install (or “sideload”) channel on a Roku device

In addition to the Eclipse plugin, developers can use the package utilities located inside the Development Application Installer. Note that before a channel can be packaged, it must first be sideloaded onto a Roku device. Refer to our Hello World Guide on how to sideload channels.

B. Open a telnet session

Once you have the channel side-loaded onto a Roku device, you’ll need to generate a key to sign your package. Windows developers can use a telnet client such as PuTTY, while OSX/Linux developers can use the built-in client through terminal.
Windows: In PuTTY, enter the IP address of your Roku player, 8080 for the port, and Telnet as the connection type.

image08

OSX/Linux: Open terminal and type: telnet <Roku-IP-address> 8080

image12

C. Run the genkey utility to create a signing key

Type genkey into the command prompt/terminal and wait for the process to complete. If the prompt says “Command not recognized,” type it again.

image00

image03

Upon completion, a key has been successfully generated to sign packages. Make note of the developer ID and password as it’ll be required in the next step (and anytime code is updated and needs to be repackaged).
Note: It is a good practice to generate a new signing key for each channel created unless you explicitly want to share registry information between channels.

D. Packaging the side-loaded channel

Return to the Developer Application Installer. There should now be a Packager option available. If this option is not available, go through the previous step and run genkey again.

image09

Click on Packager to bring up the Application Packager page. The Dev ID should match the same developer ID that was generated with genkey.
Enter an App Name and Version and enter the password created from the genkey utility.

image07

Click on Package and a few short moments later the signed package can be downloaded using the .pkg link.

image05

3. Rekeying

When developing multiple applications, it’s good practice to sign each package with a different key. This ensures registry entries are not shared between channels. To sign different packages on the same device, it will have to be rekeyed.
On the Development Application Installer, select Utilities.

image02

Click on Upload and select the signed package you’d like to use to rekey the player. Enter the password from genkey that matches the key and select Rekey.

image10

A success dialog will be displayed when the process is complete.

4. Channel screenshots

Channel screenshots can also be taken using the Package Utilities tool located in the top nav bar. Select Utilities and click the Screenshot button.
Note: Screenshots will only work for sideloaded channels and static content (i.e. screenshots of video will not work). FHD (1920×1080) screenshots also require a 4K capable Roku set to 1080p or 4K UHD display type.

image02

Related Resources:

This entry was posted in Tutorials and tagged , , . Bookmark the permalink.
  • Charlie Greene

    For anyone is interested in an alternative method. I have created an unofficial Ruby gem that can do (almost) all of these tasks and more. You can find it here (https://github.com/ViacomInc/roku_builder) if you want to try it out.

  • John

    These are my tools that I use: XML is edited with Notepad ++ Putty is my connection to Roku3 / Roku HDMI stick, Yandex Browser for screen capture and Roku Packager, Paintdotnet is image retouches, size editing and Office365 for Powerpoint to mp4 conversion. my.roku.com/add/biztale Powered by Biztale.xyz My channel is using the new Scene Graph.

    In my kids channel partnered with Uptoten.com I took on the original Scene Graph to bring to life “Boowa & Kwala 4.0 by Uptoten” this included a feature that haunted me forever for various testing to make videos autoplay. my.roku.com/add/uptoten

  • This was just the bit I needed to get my FIRST Private Channel up and running! Thank You so much for developing the fledgling Roku developers! The tutorials are a great addition! All the Fire Hydrant Drinking I’ve been doing to produce my first channel has made me realize that starting a channel with the old methods FIRST so that I understand the concepts BEFORE reading, and not understanding much, in the new Developer support products. So perhaps both the old pro and fledglings could both be served by focusing process understanding and all the like with the older…before Eclipse PlugIn, And then take those processes for granted in the newer, after Eclipse PlugIn. But in any event….it’s working for me and look forward to digging back into the coding with the Eclipse Plug-In.