View as Markdown

Development and testing

Point a sideload at a different SDK

Keep the pinned production URL in your committed config, and override it only in the manifest you sideload. The reference channel's Makefile does this with SDK_URL, which appends an ov_sdk_library_url line to the staged manifest:

# against the latest release
make install ROKU_IP=<tv> ROKU_PASS=<pw> SDK_URL=https://sdk.open.video/roku/latest/OpenVideoRokuSDK.zip

Sideloaded channels may load the library over plain HTTP, which is handy for testing an SDK build from your own machine.

Before you submit

  • sdkLibraryUrl pins a version (/roku/vX.Y.Z/), not latest.
  • The manifest has bs_libs_required=roku_ads_lib.
  • A cold launch with no network shows your retry path, not a crash.
  • Preroll, a midroll (let content run past the first break) and resume after the break all work on a real device.
  • back during an ad break and during content returns to your UI.
  • The channel is registered in the Ezoic dashboard and app-ads.txt is live.

Roku static analysis

The Channel Store's static analysis only scans your channel package, not the component library loaded at runtime. Because the SDK owns the RAF calls, the report can say RAF beacons, the RAF constructor or the RAF library import are missing even though ads render. If certification asks, explain that RAF runs inside the Open Video component library your channel loads at startup.