Roku SDK Documentation : Packaging Roku Channels

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

Table of Contents


Packaging with Eclipse

Packaging can be done in Eclipse using the Roku Plugin for Eclipse.

  1. In an existing BrightScript project, select File > Export > BrightScript Deployment



  2. In the following dialog: click the check-box next to Install on Roku Box, and Create Package (.pkg) file. Click Finish and the package will be available in the out folder of the current BrightScript project in the Eclipse workspace.

    If the genkey utility has not been run previously, click New Keys to generate a signing key.




Packaging using the Package Utilities

Step 1. Install (or “side-load”) channel on a Roku device

In addition to the Eclipse plugin, developers can use the package utilities located within the Development Application Installer.

Note: Before a channel can be packaged, it must first be side-loaded onto a Roku device. Refer to the Hello World Guide on how to side-load channels.

 

Step 2. 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.

  1. Windows: In PuTTY, enter the IP address of your Roku player, 8080 for the port, and Telnet as the connection type.

Windows Instructions:

  1. Download the telnet client PuTTY.
  2. Enter the IP address of your Roku player.
  3. Use "8080" for the Port 
  4. Click the Telnet radio button for the Connection Type.


 

OSX/Linux Instructions

  1. : Open terminal and type: telnet <Roku-IP-address> 8080

Step 3. Run the genkey utility to create a signing key

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






    Upon completion, a key has been successfully generated to sign packages.

Make note of the developer ID and password as it will be required in the next step (and anytime the code is updated and needs to be repackaged).

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.

Step 4. Packaging the side-loaded channel

  1. 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.

    Cramfs is a file system format that loads faster than zip. Use cramfs for firmware versions 7.7 and lower. Squashfs is a file format that saves flash storage space and it decompresses faster. Note that squashfs works only for firmware 8.0 and above. Make sure you set a minFirmware dependency of v8.0 or higher when uploading a squashfs pkg to the Roku Channel Store.




  2. Click on Packager to bring up the Application Packager window. The Dev ID should match the same developer ID that was generated with genkey.

  3. Enter an App Name/Version, and enter the Password created from the genkey utility.

  4. Click Package.



  5. The following window will appear displaying the Currently Packaged Application. that the package is now available. the signed package can be downloaded using the .pkg link.

Rekeying

When developing multiple applications, it is 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.

  1. In the Development Application Installer, click Utilities. This will open the following Package Utilities window.
  2. Click Upload to select the signed package you would like to use to rekey the player. 

  3. Enter the password from genkey that matches the key used for the signed package

  4. Click Rekey.




    A success message will be displayed when the process is complete as seen in the following window.







Attachments:

ch-packaging-eclipse-1.png (image/png)
ch-packaging-eclipse-2.png (image/png)
dev-settings-application-installer.png (image/png)
putty-telnet.png (image/png)
terminal-telnet.png (image/png)
putty-genkey.png (image/png)
terminal-genkey.png (image/png)
ch-packaging-genkey-password.png (image/png)
package-download.png (image/png)
rekey-utility.png (image/png)
rekey-success.png (image/png)
roku-billing4.png (image/png)
roku-billing1.png (image/png)
genkey1.png (image/png)
genkey1.png (image/png)
genkey1.png (image/png)
genkey2.png (image/png)
Step1.PNG (image/png)
Step2.png (image/png)
Step1.PNG (image/png)
Step2.png (image/png)