I don't think you want to change flex-config.xml. That will change the way every SWF gets linked.
Instead, you can create a separate foo-config.xml and use it for SWFs and SWCs that aren't the main app. If you look at how the SDK gets built, there is a compile-config.xml for each SWC. On 4/17/13 3:17 PM, "Michael Baird" <[email protected]> wrote: > Understood. It's a pretty simple skin, anyway - just extends > mx.skins.halo.LinkButtonSkin and overrides *updateDisplayList* to make some > graphics calls (at one point it checks parent.tabIndex, which is where the > NPE occurs). > > I created a copy of the default flex-config and moved the contents of the > library-path to external-library-path (except for the player reference in > library path) [1]. I think there must be another step I am missing, because > now the application fails to load: > > Loading library > VerifyError: Error #1014: Class mx.core::Application could not be found. > > at flash.display::MovieClip/nextFrame() > at > mx.managers::SystemManager/deferredNextFrame()[/Users/justinmclean/Documents/A > pacheFlexSDK/frameworks/projects/framework/src/mx/managers/SystemManager.as:28 > 6] > at > mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[/Users/ju > stinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/manage > rs/SystemManager.as:2635] > at flash.events::EventDispatcher/dispatchEventFunction() > at flash.events::EventDispatcher/dispatchEvent() > at > mx.preloaders::Preloader/timerHandler()[/Users/justinmclean/Documents/ApacheFl > exSDK/frameworks/projects/framework/src/mx/preloaders/Preloader.as:523] > at flash.utils::Timer/_timerDispatch() > at flash.utils::Timer/tick() > > Sorry for the back and forth. Hoping there's an easy solution just over the > horizon =) > > > [1] http://pastebin.com/EAkZDUkW > > > On Wed, Apr 17, 2013 at 12:56 PM, Alex Harui <[email protected]> wrote: > >> 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 >> >> -- Alex Harui Flex SDK Team Adobe Systems, Inc. http://blogs.adobe.com/aharui
