Deploying Roku Apps

Apps for a Roku platform use You.i TV’s Cloud Solution. Because of this, Roku apps follow a special deployment process. Also, the deployment process depends on whether you have a development or production app:

  • Development apps are meant for internal consumption. They are usually created by software developers or testers to verify behavior or appearance. They are typically the result of a Debug build on macOS or Linux.
  • A production app is a result of a Release build on Linux, ready to be sent for certification or deployed to the general public.

WARNING For Roku certification, your production app must support:

Note Currently, deployed Roku production apps must be hosted by You.i TV cloud servers.

Development App Deployment

Development apps may need to be deployed to an AWS cloud server for testing, debugging, and validation. The steps and tools to do this depend on your particular development and testing infrastructure. Contact your You.i TV representative for guidance on how to set this up.

Process Overview: Production Apps

Apps for a Roku platform have two parts:

  • Roku client: This part is submitted to Roku for certification. After certification, customers can then access the client through the Roku store and install it on their Roku device.
  • Roku app logic: This part resides on a You.i TV AWS cloud server. After certification, deployed Roku clients interact with the app logic that is on the You.i TV cloud server.

If you change your Roku client software after certification, then you must resubmit it for certification. However, you can change the app logic hosted in the cloud without triggering the recertification process.

WARNING Before you deploy your app, ensure the following:

  • It meets Roku Certification Guidelines and Requirements.
  • The Release version of the app builds on Linux without errors. See Building Roku Apps.

New or Full App Deployment

This procedure applies to the following use cases:

  • You want to deploy a completely new production Roku app.
  • You want to deploy an updated production app where both the client software and the cloud server software were changed.
  • You want to deploy an updated production app where only the client software was changed.

To deploy an updated production app where only the server software was changed, see Partial App Deployment.

To deploy the app:

  1. Build the Release version of your app on Linux. See Building Roku Apps. Ensure it has no errors. The resulting executable files are in the build/linux/Release/bin subdirectory.
  2. Build your customized Roku client (zip file) with the youi-tv roku-client command. See Run the ‘youi-tv roku-client’ CLI command.

    The roku-client command creates a zip file of your customized Roku client in the client directory. WARNING Do not launch the app after the build. Launching the app produces artifacts (export files, logs, and so on) that need to be excluded when sending the app to You.i TV.

  3. Build the server tar file by running the following command in your build/linux/Release/bin folder:

    tar --exclude=<appname>.tar -cf <appname>.tar ./

    where <appname> is the name of the app.

  4. Test your updated app logic using the testing Roku client supplied by You.i TV on the test stack using the CAT CLI commands.
  5. Inform You.i TV that testing is complete along with information in Preparing for Roku Submission and authorize You.i TV to deploy the updated Roku app logic to the production stack by sharing the client zip and server tar file.

Partial App Deployment

This procedure applies when you want to deploy an updated production app where only the server software was changed. For other use cases, see New or Full App Deployment.

Note If you are still using old test stacks, refer to the pre-5.18 version of this section.

To deploy the app:

  1. Build the Release version of your app on Linux. See Building Roku Apps. Ensure it has no errors.

    The resulting executable files are in the build/linux/Release/bin subdirectory. WARNING Do not launch the app after the build. Launching the app produces artifacts (export files, logs, and so on) that need to be excluded when sending the app to You.i TV.

  2. Build your customized Roku client (zip file) with the youi-tv roku-client command. See Updates With the Script.

    The roku-client command creates a zip file of your customized Roku client in the client directory. Note This step is required even though a partial app deployment applies when only the server software was changed. The zip file of your customized Roku client is required for testing purposes.

  3. Build the server tar file by running the following command in your build/linux/Release/bin folder:

    tar --exclude=<appname>.tar -cf <appname>.tar ./

    where <appname> is the name of the app.

  4. Test your updated app logic using the testing Roku client supplied by You.i TV on the test stack using the CAT CLI commands.
  5. Inform You.i TV that testing is complete along with information in Preparing for Roku Submission and authorize You.i TV to deploy the updated Roku app logic to the production stack by sharing the client zip and server tar file.

Preparing for Roku Submission

Because You.i TV hosts the cloud server portion for all Roku production apps, you must contact You.i TV and supply the following information before submitting your app to Roku for certification:

  • your app’s name; for example, MyApp
  • your app’s version number; for example, v2.0.4
  • the unique build identifier you used for your YI_CLOUD_S3_TAG environment variable; for example, build-1282 or a SHA number
  • the number of concurrent user sessions:
    • regular usage
    • peak times
  • app usage:
    • live streams
    • content on demand
  • session timeouts:
    • How long are users typically connected to the app?
    • Will there be specific times where the app shows fluctuating traffic patterns?
    • Is the default session inactivity termination behavior suitable for your app?

      A session is inactive when no key presses on the Roku device are observed.

  • update schedule:
    • How frequently does the app and infrastructure need to be updated?
    • Is there a regular schedule for updates?
  • Service Level Agreement (SLA)