Skip to main content
Known Participant
October 10, 2013
Question

TypeError: Error #2007: Parameter Possible symbol clash in multiple swfs, abcenv must be non-null

  • October 10, 2013
  • 2 replies
  • 1916 views

AIR for iOS 3.9 beta - Oct 9, 2013 update. Also AIR 3.8 throws the same errors.

The exception is thrown only when doing an AOT compile (quick compile works fine).

It is thrown as soon as an external SWF containing ABC is loaded into the current ApplicationDomain.

The "Main" SWF doesn't contain anything special (at all), so I have no idea what the "possible symbol clash" is.

Possible hint: why is everything in my stack trace doubled up?

Anyone know what the heck this error is talking about and whether it's something I have the faintest hope of fixing before I need to release thing thing in two days' time?

What is "abcenv"? And how do I set it to non-null?

Main Thread (Suspended: TypeError: Error #2007: Parameter Possible symbol clash in multiple swfs, abcenv must be non-null.)

view::EnvironmentButtonView/init [no source]

view::EnvironmentButtonView/init [no source]

flash.display::Sprite [no source]

flash.display::Sprite [no source]

flash.display::MovieClip [no source]

flash.display::MovieClip [no source]

flash.display::Sprite [no source]

flash.display::Sprite [no source]

flash.display::MovieClip [no source]

flash.display::MovieClip [no source]
This topic has been closed for replies.

2 replies

Participant
November 22, 2013
Adobe Employee
October 10, 2013

This error occurs when you try loading multiple swfs, which both have a same symbol, resulting in a conflict.

AOT currently cannot handle symbol conflicts, and throws this error when it finds one.

A reolution is to make sure that there aren't symbols with same names in different swf files that you are loading.

Here, could it be that EnvironmentButtonView is present in more than one swfs?

Known Participant
October 10, 2013

Thank you for the quick and helpful response!

This is an interesting question, because there are in fact 2 SWFs that are identical, except one is retina, the other is not.

However, ONLY ONE is ever loaded at runtime - we determine the resolution of the device and then load the appropriate SFW file.

Now, both SWFs ARE PACKAGED with the app, but like I said, I'm only ever loading 1 at a time. I do, however wonder whether it's the packaging of the SWF that is enough to cause the error.

I'm currently testing this by removing one of them from the package, and testing on a single device that would load the other. If I don't get the error, then I know this is the issue, but then I'm in big trouble because the design (probably wrong) of this app is such that it's loading in all assets, in their correct positions, in a fully laid out SWF file, based on resolution. I would completely need to alter my strategy if the problem is in the packaging, because if I DON'T package the SWFs, then they can't be found at runtime.

Unless there's another way to include the SWFs without packaging them?

Known Participant
October 10, 2013

So yes I can confirm that merely being present in the PACKAGE is enough to cause this error. Are there any other ways to load an external SWF file without it residing within the package? I suppose not, otherwise how does it get on the iOS device's storage... right?

Currently the assets containing ABC are all just linkages to classes within by FlashBuilder project, for example, EnvironmentButtonView extends MovieClip. This leads me to wonder whether I can circumvent this issue by making and EnvironmentButtonView and an EnvironmentButtonView2X, both extending MovieClip, both implementing IEnvironmentButtonView or something to that effect. Would this be enough to prevent the collision?

What exactly constitutes a "symbol" in this case - is it the linkage identifier? Or is it the library name of the item? It would be relatively easy to simply update the library item names in one of the SWFs (for example, updating them all to have a 2X suffix), if I don't have to change the actual linkage identifier...