Skip to main content
The Makefile at the project root handles every build and deploy operation. All output goes to the out/ directory.

Variables

VariableDefaultDescription
APPNAMEGlobalTVApp name used in filenames
APP_VERSION1.0.6Version string, must match manifest
OUT_DIRoutOutput directory for all artifacts
ZIP_FILEout/GlobalTV.zipPath to the generated zip
ROKU_IP(empty)IP address of the Roku device in developer mode
ROKU_PASS(empty)Developer password set on the Roku device
SIGN_PASSWORD(empty)Signing password generated by genkey (required for pkg only)
ROKU_IP, ROKU_PASS, and SIGN_PASSWORD must be passed on the command line. Do not commit them to the repository.

Targets

make zip

Packages the channel into out/GlobalTV.zip. This is the file sideloaded to the Roku. The Roku firmware requires manifest to be at the root of the zip — the Makefile handles this automatically.
make zip
Included directories:
manifest
source/
components/
images/
Excluded from the zip:
*.git*
.env / .env.*
out/*
*.pkg
roku-deploy.json
Makefile
docs/*
*.md
*.zip
*.DS_Store
*Thumbs.db
*.xcf
*.psd
Example output:
>>> [zip] Empaquetando GlobalTV v1.0.6...
>>> [zip] OK → out/GlobalTV.zip

make install

Builds the zip (runs make zip first), then sideloads it to a Roku device via HTTP multipart POST to /plugin_install.
make install ROKU_IP=192.168.1.100 ROKU_PASS=yourpass
The install response HTML is saved to out/_install_response.html. The Makefile parses it and prints one of:
ResultMeaning
Install SuccessApp installed successfully
IdenticalZip matches what’s already on the device
Install FailureInstallation failed — check out/_install_response.html
Example output:
>>> [install] Sideload en http://192.168.1.100...
>>> [install] HTTP 200
>>> [install] Resultado: Install Success
>>> [install] Listo. Revisar el Roku.

make pkg

Generates a signed .pkg file for submission to the Roku Channel Store. Internally runs make install first to deploy the app, then calls /plugin_package to produce the signed package.
make pkg ROKU_IP=192.168.1.100 ROKU_PASS=yourpass SIGN_PASSWORD=yourgenkey
Output file: out/GlobalTV-1.0.6.pkg Example output:
>>> [pkg] Instalando app para firmar...
>>> [pkg] Solicitando paquete firmado...
>>> [pkg] Descargando .pkg desde el Roku...

>>> [pkg] OK → out/GlobalTV-1.0.6.pkg
>>> [pkg] Listo para subir al Roku Channel Store.
SIGN_PASSWORD comes from running genkey on the Roku device. The Roku must have a signing key loaded before this target will succeed. See Packaging.

make screenshot

Captures an HD screenshot of the currently running sideloaded app and saves it as a timestamped JPEG in out/.
make screenshot ROKU_IP=192.168.1.100 ROKU_PASS=yourpass
The app must already be running on the Roku when this command is executed. Example output:
>>> [screenshot] Capturando pantalla del Roku...
>>> [screenshot] Guardado → out/screenshot-20260320-143012.jpg

make check

Verifies the project against the Roku 2026 certification checklist without deploying anything. Checks:
  • Required manifest fields (title, versions, icons, splash screens, ui_resolutions, rsg_version, supports_input_launch, splash_rsg_optimization, splash_color, splash_min_time)
  • Required image files in images/
  • Prohibited patterns: eval() and file:// in source and components
  • Deep link handling in source/main.brs (roInput, roInputEvent, launchDeepLink/inputDeepLink)
  • signalBeacon(AppLaunchComplete) in components/MainScreen/
  • OPTIONS key handling in components/PlayerScreen/PlayerScreen.brs
make check
Example output:
>>> [check] Verificando manifest para certificación Roku 2026...

  ✓ OK:    title=
  ✓ OK:    major_version=
  ✓ OK:    minor_version=
  ✓ OK:    build_version=
  ✓ OK:    mm_icon_focus_hd=
  ✓ OK:    mm_icon_focus_fhd=
  ✓ OK:    splash_screen_fhd=
  ✓ OK:    splash_screen_hd=
  ✓ OK:    splash_screen_sd=
  ✓ OK:    ui_resolutions=fhd
  ✓ OK:    rsg_version=1.2
  ✓ OK:    supports_input_launch=1
  ✓ OK:    splash_rsg_optimization=1
  ✓ OK:    splash_color=
  ✓ OK:    splash_min_time=

  → manifest OK — todos los campos de certificación presentes.

>>> [check] COMPLETO.
make check is a development aid. It does not replace the official Roku certification review. Always test on real hardware before submitting.

make clean

Removes the out/ directory and all its contents.
make clean
Output:
>>> [clean] out/ eliminado.

make help

Prints a usage summary to the terminal.
make help

Windows requirements

The Makefile uses Unix commands (rm, grep, sed, curl, zip). On Windows, use one of:
  • Git Bash — includes make, zip, and curl out of the box
  • Chocolateychoco install make zip curl

Build docs developers (and LLMs) love