Hi Michael,

Attachments aren't supported on the mailing list.  The warning could be
related.  It is probably best to specify dependent swcs via
external-library-path and make sure all of those swcs or rsls are otherwise
in the application.


On 4/17/13 12:20 PM, "Michael Baird" <[email protected]> wrote:

> Thanks for helping with this, Alex. I think I'm getting a little closer. I've
> switched to using mxmlc/compc AntTasks and I can load the main application and
> the submodules now.
> 
> I have, however, some Flex 3 skin(s) that seem to be failing at runtime.
> Unlike before, this happens with the ant-built application as well as the
> FlashBuilder-built application. I've attached my skin, which is throwing a NPE
> at line 41, implying parent is null. I've tried checking for parent == null
> and returning, and I also wrapped the whole thing in a try/catch, but the same
> error keeps getting thrown.
> 
> In dealing with this skin issue, I've tried adding isolate-styles=false as
> well 
> as runtime-shared-library-settings.application-domain application-domain-targe
> t="top-level" for all my custom libraries, to no apparent effect.
> 
> I generated a link-report for my style resource SWF and it does include a link
> to the LinkButtonSkin, so I think that's okay.
> 
> When compiling the libraries, I do get this interesting warning (it is
> repeated for SDK mx.swc and charts.swc), that may or may not be related. It's
> coming from the flex-config xml.
>     [compc] Warning: The swc
> 'C:\Apache\Flex\4.9.1\frameworks\libs\framework.swc' has style defaults and is
> in the library-path, which means dependencies will be linked in without the
> styles.  This can cause applications, which use the output swc, to have
> missing skins.  The swc should be put in the external-library-path.
> 
> Any thoughts here are much appreciated.
> 
> 
> On Tue, Apr 16, 2013 at 8:22 PM, Alex Harui <[email protected]> wrote:
>> From that output, if I'm interpreting it correctly, core.swc loads, then
>> common.swc.  Common.swc seems to have a dependency on Button, which hasn't
>> been loaded yet since only core has been loaded.
>> 
>> Should common.swc have a dependency on Button?  If so, you will need to load
>> mx.swc beforehand.  I think the compiler/linker is smart enough not to
>> request loading of RSLs that aren't used by the application.  But then if
>> your custom RSL needs Button the compiler/linker doesn't know that.
>> 
>> 
>> On 4/16/13 5:06 PM, "Michael Baird" <[email protected]> wrote:
>> 
>>> I've analyzed the link-report and also checked out the catalog XML.
>>> 
>>> The main library, which gets compiled as core.swc and then treated as an
>>> external-library (+ rsl) by all the other targets, has a catalog.xml that
>>> contains references to mx.controls:Button. I had the main application
>>> target generate a link-report and that also contains references to the
>>> mx.controls:Button class.
>>> 
>>> So the linkage "appears" to be correct according to these reports.
>>> 
>>> I tried to change the main application target to use
>>> -library-path+=core.swc instead of -external-library-path, but that
>>> resulted in no change.
>>> 
>>> Fun fact: I added a custom debug config to FlashBuilder and launched the
>>> application. Here's the console result:
>>> 
>>> [SWF] C:\<path>\oneplace_client.swf - 1,869,468 bytes after decompression
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> Loading library
>>> [SWF] /core.swf - 1,612,732 bytes after decompression
>>> Loading library
>>> Loaded library 0 of 5
>>> Loading library
>>> [SWF] /common.swf - 1,203,976 bytes after decompression
>>> VerifyError: Error #1014: Class mx.controls::Button could not be found.
>>> 
>>> Could I be missing a step to generate a valid RSL for the libraries (e.g.
>>> addressing the *VerifyError*)? Here is my *core* library target:
>>>         <java jar="${compc.jar.path}"
>>>               failonerror="true"
>>>               fork="true">
>>>             <jvmarg value="-Xmx512m"/>
>>>             <arg value='-debug=${debug}'/>
>>>             <arg
>>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/>
>>>             <arg value='-load-config=${flex.config}'/>
>>>             <arg
>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/>
>>>             <arg value='-source-path+=${lib.core}'/>
>>>             <arg value='-include-sources=${lib.core}'/>
>>>             <arg value='-output=${build.dir}/core.swc'/>
>>>         </java>
>>> 
>>> Then the main application target:
>>>         <java jar="${mxmlc.jar.path}"
>>>               failonerror="true"
>>>               fork="true">
>>>             <jvmarg value="-Xmx512m"/>
>>>             <arg value='-debug=${debug}'/>
>>>             <arg
>>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/>
>>>             <arg value='-load-config=${flex.config}'/>
>>>             <arg
>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/>
>>>             <arg value='-runtime-shared-libraries=${core.swf}'/>
>>>             <arg value='-external-library-path=${build.dir}/core.swc'/>
>>>             <arg value='-runtime-shared-libraries=${common.swf}'/>
>>>             <arg value='-external-library-path=${build.dir}/common.swc'/>
>>>             <arg
>>> value='-runtime-shared-libraries=${swiz-framework-v1.4.0.swf}'/>
>>> 
>>>             <!-- CampaignWrapper Libs BEGIN -->
>>>             <arg value='-runtime-shared-libraries=${campaign_common.swf}'/>
>>>             <arg
>>> value='-external-library-path+=${build.dir}/campaign_common.swc'/>
>>>             <arg value='-runtime-shared-libraries=${synchronization.swf}'/>
>>>             <arg
>>> value='-external-library-path=${build.dir}/synchronization.swc'/>
>>>             <arg value='-source-path+=${lib.campaign}'/>
>>>             <!-- CampaignWrapper Libs END -->
>>> 
>>>             <arg value='-file-specs=${app.main}/${client.name
>>> <http://client.name> }.mxml'/>
>>>             <arg value='-output=${build.dir}/${client.name
>>> <http://client.name> }.swf'/>
>>>             <arg value='-link-report=${build.dir}/report.xml'/>
>>>         </java>
>>> 
>>> (Note: those are all custom SWCs I'm treating as RSLs/external-libraries.
>>> The Flex ones are loaded - or supposed to be loaded - through the
>>> -load-config argument.)
>>> 
>>> Any further ideas are greatly appreciated!
>>> 
>>> 
>>> 
>>> On Tue, Apr 9, 2013 at 12:22 PM, Michael Baird <[email protected]> wrote:
>>> 
>>>> I'll check out the link-report and see what's going on. The main
>>>> application MXML target is generating one, which is used for the modules
>>>> through load-externs.
>>>> 
>>>> The externals indicated by the module target I provided are some of our
>>>> common libraries that are built as SWCs earlier in the script. The Flex
>>>> ones are only included through flex-config.
>>>> e.g.
>>>>         <java jar="${compc.jar.path}"
>>>>               failonerror="true"
>>>>                fork="true">
>>>>             <jvmarg value="-Xmx512m"/>
>>>>             <arg value='-debug=${debug}'/>
>>>>             <arg
>>>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/>
>>>>             <arg
>>>> value='-load-config=${FLEX_HOME}/frameworks/flex-config.xml'/>
>>>>             <arg
>>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/>
>>>>             <arg value='-external-library-path+=${build.dir}/core.swc'/>
>>>>             <arg value='-runtime-shared-libraries=${core.swf}'/>
>>>>             <arg value='-source-path+=${lib.common}'/>
>>>>             <arg value='-include-sources=${lib.common}'/>
>>>>             <arg value='-output=${build.dir}/common.swc'/>
>>>>         </java>
>>>> 
>>>>  (core being another of our libraries)
>>>> 
>>>> 
>>>> On Tue, Apr 9, 2013 at 12:12 PM, Alex Harui <[email protected]> wrote:
>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On 4/9/13 10:41 AM, "Michael Baird" <[email protected]> wrote:
>>>>> 
>>>>>> Okay, I understand the Sprite issue might be something wrong with our
>>>>>> resource builder (yes, embedded assets and css compiled into a resource
>>>>> SWF
>>>>>> so I'll look for misconfigurations there).
>>>>>> 
>>>>>> Shouldnt mx.controls.Button be included through the standard
>>>>> flex-config or
>>>>>> is that getting messed up because of the module externals?
>>>>> Flex-config directs compile-time.  It must be "ok" since you are getting
>>>>> SWFs and then run-time errors.  It is options like -external-library-path
>>>>> that cause the linker to exclude classes, which is what you want, but then
>>>>> you have to make sure they get loaded and loaded correctly.
>>>>>> 
>>>>>> Do you happen to know what/how this changed from 4.1 to now? This same
>>>>>> build script is working with SDK 4.1.0.
>>>>> I don't know off-hand.  It is possible that we got better at not requiring
>>>>> mx components in spark apps.  A link-report will tell you what classes are
>>>>> ending up where.
>>>>> 
>>>>> BTW, did you obfuscate the SWC names?  I don't recognize common and
>>>>> charting
>>>>> as Flex SWCs.  If you custom built these SWCs then there might be an issue
>>>>> with what classes are in it.  A SWC is a zip file and in it is a
>>>>> catalog.xml
>>>>> which is like a link-report: it tells you which classes are in the SWC.
>>>>>> 
>>>>>> 
>>>>>> On Mon, Apr 8, 2013 at 9:16 PM, Alex Harui <[email protected]> wrote:
>>>>>> 
>>>>>>> The -external-library-path options are forcing certain classes to not
>>>>> be
>>>>>>> linked into the SWF, but those classes are not being loaded into the
>>>>>>> ApplicationDomain tree in a way that SWF can access it or aren't being
>>>>>>> loaded at all.
>>>>>>> 
>>>>>>> The XXXX_flash.display_Sprite class is probably an embedded asset and
>>>>> not
>>>>>>> an
>>>>>>> actual Flash Player class.
>>>>>>> 
>>>>>>> 
>>>>>>> On 4/8/13 5:41 PM, "Michael Baird" <[email protected]> wrote:
>>>>>>> 
>>>>>>>> I have a large application with multiple shared libraries and
>>>>> sub-modules
>>>>>>>> that I'm trying to build through Ant and I'm running into issues...
>>>>>>> hoping
>>>>>>>> someone here can help.
>>>>>>>> 
>>>>>>>> I'm currently targeting the latest AF release - 4.9.1 - and running
>>>>> into
>>>>>>> an
>>>>>>>> issue where when I launch the Ant-built application, I receive one
>>>>> Flash
>>>>>>>> exception:
>>>>>>>> VerifyError: Error #1014: Class mx.controls::Button could not be
>>>>> found.
>>>>>>>> then another:
>>>>>>>> ReferenceError: Error #1065: Variable
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> _88d866d22da27af4b5978eeb7ebb39d5d661776417e03b75890d49335a9fed4d_flash_di
>>>>> sp
>>>>> l>>
>>>>> a
>>>>>>>> y_Sprite
>>>>>>>> is not defined.
>>>>>>>> 
>>>>>>>> This seems to indicate that the Flash player is not being included
>>>>>>> somehow
>>>>>>>> but I can't figure out why!
>>>>>>>> 
>>>>>>>> Here is an example of one of my module targets:
>>>>>>>>     <target name="dashboard"
>>>>>>>>             depends="client">
>>>>>>>>         <java jar="${mxmlc.jar.path}"
>>>>>>>>               failonerror="true"
>>>>>>>>               fork="true">
>>>>>>>>             <jvmarg value="-Xmx512m"/>
>>>>>>>>             <arg value='-debug=${debug}'/>
>>>>>>>>             <arg
>>>>>>>> value='-local-fonts-snapshot=${FLEX_HOME}/frameworks/localFonts.ser'/>
>>>>>>>>             <arg
>>>>>>>> value='-load-config=${FLEX_HOME}/frameworks/flex-config.xml'/>
>>>>>>>>             <arg
>>>>>>>> value='-theme=${FLEX_HOME}/frameworks/themes/Halo/halo.swc'/>
>>>>>>>>             <arg value='-source-path+=${lib.dashboard}'/>
>>>>>>>>             <arg value='-runtime-shared-libraries=${core.swf}'/>
>>>>>>>>             <arg
>>>>> value='-external-library-path=${build.dir}/core.swc'/>
>>>>>>>>             <arg value='-runtime-shared-libraries=${common.swf}'/>
>>>>>>>>             <arg
>>>>> value='-external-library-path=${build.dir}/common.swc'/>
>>>>>>>>             <arg value='-runtime-shared-libraries=${charting.swf}'/>
>>>>>>>>             <arg
>>>>>>> value='-external-library-path=${build.dir}/charting.swc'/>
>>>>>>>>             <arg
>>>>>>>> value='-file-specs=${lib.dashboard}/${view.dir}/DashboardView.mxml'/>
>>>>>>>>             <arg
>>>>>>>> value='-output=${build.dir}/${view.dir}/DashboardView.swf'/>
>>>>>>>>             <arg value='-load-externs=${build.dir}/report.xml'/>
>>>>>>>>         </java>
>>>>>>>>     </target>
>>>>>>>> 
>>>>>>>> FLEX_HOME is defined earlier in the build script as the path to the
>>>>> 4.9.1
>>>>>>>> base directory.
>>>>>>>> 
>>>>>>>> I have also tried using anttasks, and that is working a little better
>>>>>>>> except when I load a module with charts - then I get another missing
>>>>>>> class:
>>>>>>>> VerifyError: Error #1014: Class mx.charts::CategoryAxis could not be
>>>>>>> found.
>>>>>>>> 
>>>>>>>> So overall it seems like I'm having linking issues, but I'm using
>>>>> stock
>>>>>>>> flex-configs that look like they are including the right libraries in
>>>>> the
>>>>>>>> right places.
>>>>>>>> 
>>>>>>>> Any help is appreciate... thanks =)
>>>>>>> 
>>>>>>> --
>>>>>>> Alex Harui
>>>>>>> Flex SDK Team
>>>>>>> Adobe Systems, Inc.
>>>>>>> http://blogs.adobe.com/aharui
>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> --
>>>>> Alex Harui
>>>>> Flex SDK Team
>>>>> Adobe Systems, Inc.
>>>>> http://blogs.adobe.com/aharui
>>>>> 
>>>>> 
>>>> 
>> 
>> --
>> Alex Harui
>> Flex SDK Team
>> Adobe Systems, Inc.
>> http://blogs.adobe.com/aharui
>> 
> 
> 

-- 
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui

Reply via email to