Skip to main content

Packaging

Hosanna projects include package scripts for bundling and releasing your app. Shared scripts generate build metadata and platform scripts create release artifacts for Roku, Apple TV, Android TV, Samsung TV, iOS, Android, and Web.

Platform Outputs

PlatformOutput path
RokuTranspiled BrightScript and SceneGraph channel package
Apple TVNative Apple TV build artifact
Android TVAndroid TV build artifact
Samsung TVSamsung TV web package
iOSNative iOS build artifact
AndroidNative Android build artifact
WebStatic browser assets

Example Scripts

"generate:build-info": "node deployment/scripts/generate-build-info.js",
"package:dev": "node deployment/scripts/package-roku.js --env dev",
"package:prod": "node deployment/scripts/package-roku.js --env prod",
"release:ci": "node deployment/release-tool/index.js --ci-build",
"release:preview": "node deployment/release-tool/index.js --dry-run",
"release:final": "node deployment/release-tool/index.js --final"
  • Use the package script for the target you are releasing. Roku projects commonly expose package:dev and package:prod; native and web targets use their platform build tooling.
  • The generate:build-info script generates dynamic build metadata and writes it to assets/meta/build-info.json, which is imported into Hosanna at runtime.

Environment Configuration

Before running these scripts, configure your environment in src/config/env.js. Do not commit secrets or sensitive keys to source control. Example (sanitize your values):

export const ENV_DEV = {
CLIENT_ID: 'your-client-id',
API_KEY: 'your-api-key',
NPAW_ACCOUNT_CODE: 'your-account-code',
ROKU_DEV_ID: "your-roku-dev-id",
ROKU_DEV_PASSWORD: 'your-roku-dev-password',
ROKU_PKG_NAME: 'your-key.pkg'
}

export const ENV_PROD = {
// ...similar structure...
}

export const ENV = ENV_PROD;
  • The scripts will use the correct configuration for each build flavor (dev/prod).
  • You must have your .pkg files (Roku signing keys) available—recommended location is the project root (these should be git-ignored).
  • Ensure the environment variables ROKU_IP and ROKU_DEVPASSWORD are set for device deployment (the password is usually aaaa).

Notes

  • Bundling and release scripts can run locally or in CI when the target platform's signing credentials, store metadata, and device requirements are available.
  • For more details on each script, see the comments in your package.json and the deployment scripts themselves.