The Makefile at the project root handles every build and deploy operation. All output goes to the out/ directory.
Variables
| Variable | Default | Description |
|---|
APPNAME | GlobalTV | App name used in filenames |
APP_VERSION | 1.0.6 | Version string, must match manifest |
OUT_DIR | out | Output directory for all artifacts |
ZIP_FILE | out/GlobalTV.zip | Path 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.
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:
| Result | Meaning |
|---|
Install Success | App installed successfully |
Identical | Zip matches what’s already on the device |
Install Failure | Installation 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
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.
Output:
>>> [clean] out/ eliminado.
make help
Prints a usage summary to the terminal.
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
- Chocolatey —
choco install make zip curl