Skip to main content

Documentation Index

Fetch the complete documentation index at: https://globaliptv.misidev.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Makefile at the project root drives the entire build, sideload, and packaging workflow. All targets write output to the out/ directory, which is created automatically and excluded from version control.

make zip

Packages the channel into out/GlobalTV.zip — no device required.

make install

Sideloads the zip to a Roku in developer mode over the local network.

make pkg

Produces a signed .pkg file ready for Channel Store submission.

make screenshot

Captures a full-HD screenshot of the running channel on the device.

make check

Runs all Roku 2026 certification pre-flight checks locally.

make clean

Deletes the out/ directory and all build artifacts.

make help

Prints a usage summary with all targets and required variables.

make zip

Packages the channel source into a zip archive that the Roku developer portal accepts.
DetailValue
Outputout/GlobalTV.zip
Required variablesNone
Also runsCreates out/ if it does not exist
The zip includes the directories listed in ZIP_SOURCES:
ZIP_SOURCES = manifest source components images
The following patterns are always excluded via ZIP_EXCLUDE:
*.git*  .env  .env.*  out/*  *.pkg  roku-deploy.json
Makefile  docs/*  *.md  *.zip  *.DS_Store  *Thumbs.db
*.xcf  *.psd
The Roku platform requires manifest to be at the root of the zip, not inside a subdirectory. The zip target handles this correctly.
Example
make zip
Output
>>> [zip] Empaquetando GlobalTV v1.0.6...
>>> [zip] OK → out/GlobalTV.zip

make install

Sideloads the channel to a Roku device in developer mode. Internally runs make zip first, then POSTs the zip to http://<ROKU_IP>/plugin_install.
DetailValue
OutputChannel installed on device; out/_install_response.html saved
Required variablesROKU_IP, ROKU_PASS
Also runsmake zip
VariableDescription
ROKU_IPLocal IP address of the Roku device (e.g. 192.168.1.42)
ROKU_PASSDeveloper password set when enabling developer mode
Example
make install ROKU_IP=192.168.1.42 ROKU_PASS=yourpassword
Output
>>> [install] Sideload en http://192.168.1.42...
>>> [install] HTTP 200
>>> [install] Resultado: Install Success
>>> [install] Listo. Revisar el Roku.
Possible result strings extracted from _install_response.html:
ResultMeaning
Install SuccessChannel installed successfully
IdenticalThe same zip was already installed; no change made
Install FailureInstallation failed; check the HTML response for details
FailedGeneric failure; usually a bad password or network issue

make pkg

Generates a signed .pkg file for submission to the Roku Channel Store. Internally sideloads the app first, then requests a signed package from the device via http://<ROKU_IP>/plugin_package.
DetailValue
Outputout/GlobalTV-1.0.6.pkg
Required variablesROKU_IP, ROKU_PASS, SIGN_PASSWORD
Also runsmake zip, make install
VariableDescription
ROKU_IPLocal IP address of the Roku device
ROKU_PASSDeveloper password
SIGN_PASSWORDSigning password generated by genkey (see Packaging)
Example
make pkg ROKU_IP=192.168.1.42 ROKU_PASS=yourpassword SIGN_PASSWORD=abc123
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.

make screenshot

Captures a full-HD screenshot of the currently running sideloaded channel. The channel must be active on the device at the time of capture.
DetailValue
Outputout/screenshot-YYYYMMDD-HHMMSS.jpg
Required variablesROKU_IP, ROKU_PASS
Example
make screenshot ROKU_IP=192.168.1.42 ROKU_PASS=yourpassword
Output
>>> [screenshot] Capturando pantalla del Roku...
>>> [screenshot] Guardado → out/screenshot-20260324-153045.jpg

make check

Runs a series of local pre-flight checks against the source tree to verify Roku 2026 certification requirements. Does not require a device. Fails with a non-zero exit code if any check fails.
DetailValue
OutputPass/fail lines printed to stdout
Required variablesNone
Example
make check
Checks performed Manifest fields
FieldPurpose
title=Channel display name
major_version=Semver major
minor_version=Semver minor
build_version=Build number (must increment on each submission)
mm_icon_focus_hd=HD home-screen icon
mm_icon_focus_fhd=FHD home-screen icon
splash_screen_fhd=FHD splash image
splash_screen_hd=HD splash image
splash_screen_sd=SD splash image
ui_resolutions=fhdDeclares FHD support
rsg_version=1.2Minimum SceneGraph version (note: manifest currently sets 1.3)
supports_input_launch=1Enables deep link launch
splash_rsg_optimization=1Required for fast launch certification
splash_color=Background fill during splash
splash_min_time=Minimum splash display time
Image files
FilePurpose
images/logo-hd.pngHD channel icon
images/logo-fhd.pngFHD channel icon
images/splash-fhd.pngFHD splash screen
images/splash-hd.pngHD splash screen
images/splash-sd.pngSD splash screen
images/globaltv-logo.pngIn-app branding asset
Code checks
CheckRule
No eval()Prohibited by Roku certification
No file://All asset references must use pkg:/
No bs_libs_required=v30Removed in Roku OS 11.5+
Deep link checks (in source/main.brs)
CheckRule
roInput presentRequired when supports_input_launch=1
roInputEvent handledRequired for input deep links
launchDeepLink or inputDeepLinkDeep link handling (checklist 8.1)
Beacon check
CheckRule
signalBeacon(AppLaunchComplete) in components/MainScreen/Required for launch time certification
OPTIONS key check
CheckRule
options not intercepted in PlayerScreenPlayer must not capture the OPTIONS key (checklist 9.1)

make clean

Deletes the entire out/ directory and all build artifacts inside it.
DetailValue
Outputout/ removed
Required variablesNone
Example
make clean
Output
>>> [clean] out/ eliminado.

make help

Prints a formatted usage summary to stdout. No side effects. Example
make help
Output
GlobalTV Roku — Makefile
════════════════════════════════════════════════════════

  make zip                               Crea out/GlobalTV.zip

  make install                           Sideload al Roku
       ROKU_IP=192.168.1.XX
       ROKU_PASS=xxxxxxxx

  make pkg                               Genera .pkg firmado para el Store
       ROKU_IP=192.168.1.XX
       ROKU_PASS=xxxxxxxx
       SIGN_PASSWORD=xxxx                (de: telnet <ip> 8080 → genkey)

  make screenshot                        Captura screenshot HD del Roku
       ROKU_IP=192.168.1.XX
       ROKU_PASS=xxxxxxxx

  make check                             Verifica certificación Roku 2026

  make clean                             Elimina out/