Your Digital Media Has Never Looked So Good

 
retrotom
Topic Author
Posts: 158
Joined: Mon Jul 05, 2010 7:21 pm

Roku Ad Framework doesn't load when using dynamic scripts

Mon Jul 11, 2016 10:56 am

We've been using the "Run" global function to dynamically insert/modify behavior with our app. When using this core feature with the RAF client library, it fails to compile and run the script because of a failed Library inclusion. After lots of digging around -- it appears that the RAF client library is not really a "file". It doesn't live in the usual places (common://, tmp://) and when you get a backtrace you see that it's in roku_ads_lib:// -- but that doesn't appear to be "real". I can't copy the library file, move my script, or compose a directory structure that has successfully included the RAF client library. Can I get some help on this? Is this still possible or should we look for other solutions?
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 12:06 pm

Preface: for legal purposes this is a speculation, there has been no official statement by the Co. But you know, "sapienti sat" :wink:

RokuCo is hiding the RAF library intentionally. They don't want you to be able to see the source, what and how it does (ostensibly spying on your 3rd party ads). They have gone to lengths doing that, like hiding from us the "roku_ads_lib:" mount and wiping source line information (now shown as "???").

In their defense, it's not illegal or unusual to consider library a "trade secret".
In their offense, RAF has history of crapping out.
And to add injury to the insult, the use of RAF is now mandatory.

Great job cyber-sleuthing, btw @retrotom!
 
User avatar
RokuJoel
Posts: 1758
Joined: Mon Nov 14, 2011 5:22 pm

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 2:22 pm

Hi, we consider Run() and Eval() to be deprecated methods and we do not encourage nor support nor recommend the use of those methods in your channels.

- Joel
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 2:37 pm

RokuJoel wrote:
Hi, we consider Run() and Eval() to be deprecated methods and we do not encourage nor support nor recommend the use of those methods in your channels.

What would you recommend we do instead, to protect from RAF soiling itself like in
viewtopic.php?f=34&t=95525#p534724 ?!

Crash in RAF causes crash of the app, if not sandboxed. If i understood well, RAF's "interactive ads" now bomb on fw 7.0 or earlier - and there got to be how many of these in the wild, like 1 million? (glancing in the general direction of RokuTV brand galore and OTT licensees)
 
User avatar
RokuKC
Posts: 315
Joined: Wed Sep 10, 2014 10:44 am
Location: Roku HQ

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 3:30 pm

EnTerr wrote:
Crash in RAF causes crash of the app, if not sandboxed. If i understood well, RAF's "interactive ads" now bomb on fw 7.0 or earlier - and there got to be how many of these in the wild, like 1 million? (glancing in the general direction of RokuTV brand galore and OTT licensees)


A fix for the RAF issue on FW 7.0 or earlier has been deployed already (recently).
 
retrotom
Topic Author
Posts: 158
Joined: Mon Jul 05, 2010 7:21 pm

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 3:59 pm

RokuJoel wrote:
Hi, we consider Run() and Eval() to be deprecated methods and we do not encourage nor support nor recommend the use of those methods in your channels.

- Joel


I'm not sure this is an appropriate response. The code used to work perfectly fine before a mandatory client library "upgrade". There are/used to be several mentions of using these methods for dynamic logic in apps. We use it as a mechanism for improved exception handling; the only way to restart/re-initialize your application in the cause of an unforeseen error. While I recognize and understand the want/need to standardize the ad client library implementation for your device -- saying that it doesn't work with a particular long-standing use case is not "deprecation". It's a gap in implementation. Whatever flow spawns the context for "Run()" doesn't account for library inclusion appropriately -- it's as simple as that. Please fix that.
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Roku Ad Framework doesn't load when using dynamic script

Mon Jul 11, 2016 5:29 pm

@retroTom -
can you give a more detailed example of what you are doing and what is happening/error-ing?

Maybe there would been less of a generic brush-off if you had shown specifics.
If you can stub and post a minimal example, plus the errors - maybe others can come with ideas, if not Roku*.

PS. is "scenography" involved in some way? Because script inclusion there seems to be a mess-o-potamia
 
retrotom
Topic Author
Posts: 158
Joined: Mon Jul 05, 2010 7:21 pm

Re: Roku Ad Framework doesn't load when using dynamic script

Tue Jul 12, 2016 10:15 am

Placing these code snippets into a file and using Run() exhibits the following behavior:

Library "Roku_Ads.brs"
Library "v30/bslDefender.brs"

Function Main(args)
    print "Hello World!"
End Function


Fails to compile/run anything. The error code indicates that a file is not found at first line. Meaning the BrightScript compiler can't find Roku_Ads.brs.

Library "v30/bslDefender.brs"

Function Main(args)
    print "Hello World!"
End Function


Runs just fine. Meaning the BrightScript compiler can find v30/bslDefender.brs and execute the script without any issues.
 
retrotom
Topic Author
Posts: 158
Joined: Mon Jul 05, 2010 7:21 pm

Re: Roku Ad Framework doesn't load when using dynamic script

Tue Jul 12, 2016 10:22 am

The above indicate the issue and how to replicate it. I've tried to work around it in various ways. For instance, the Run() method can be passed arguments in the form of associative arrays. Unfortunately, whatever you pass via this method appears to be serialized and deserialized for the script you launch. The script runs in a completely different context. So you can't pass functions -- which was the first thing I tried to try and fix it. I figured that if I could shim or pass the client library that would meet my needs. No Dice.

I tried to create a fake application structure. That is, include a manifest with the proper "includes" and place my script in a "source" folder. My thinking here was that when creating a new context for the script, it was looking for a manifest potentially, not finding it, and therefore not including the RAF client library. Tried that -- didn't work.

I tried to see I could read/move/copy the client library from the roku_ad_lib:// mount. That didn't work. Appears to be a virtual mount because no roFileSystem methods work with it.
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Roku Ad Framework doesn't load when using dynamic script

Tue Jul 12, 2016 11:04 am

I see. You have checked already some of what i was thinking.
Please don't shoot me for the crazy question - but did you check if Roku_Ads() is available in the Run() w/o using the Library statement? (probably not but worth trying)

retrotom wrote:
I tried to see I could read/move/copy the client library from the roku_ad_lib:// mount. That didn't work. Appears to be a virtual mount because no roFileSystem methods work with it.

Right, It does not show in getVolumeList() nor works with getDirectoryListing(), i know. Methinks 'tis not coincidence :)
 
retrotom
Topic Author
Posts: 158
Joined: Mon Jul 05, 2010 7:21 pm

Re: Roku Ad Framework doesn't load when using dynamic script

Tue Jul 12, 2016 12:52 pm

EnTerr wrote:
I see. You have checked already some of what i was thinking.
Please don't shoot me for the crazy question - but did you check if Roku_Ads() is available in the Run() w/o using the Library statement? (probably not but worth trying)


Yeah -- tried that as well -- but didn't expect it to work. For example -- if you have the Library statement, but you forget to update your manifest, then RAF isn't dynamic linked either. Which results in an error because of a missing function. So I was already pessimistic about it being available -- and it wasn't.
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Roku Ad Framework doesn't load when using dynamic script

Tue Jul 12, 2016 2:48 pm

retrotom wrote:
... For example -- if you have the Library statement, but you forget to update your manifest, then RAF isn't dynamic linked either. Which results in an error because of a missing function. ...

So perhaps we can surmise that Run() executes code sans the manifest? As consequence, that would mean:
  • Other libraries might also be unavailable, like the ones summoned by mani-fess-ing requires_audiometadata, requires_mkv, requires_flite_tts, requires_aaxs_drm
  • roAppInfo.getValue(mftKey), .getVersion(), .getTitle() may not work

Who is online

Users browsing this forum: amyacker and 2 guests