Custom config.xml files have been around for quite a while.

They don't have to be called compile-config.  In fact, I think if you give
them the same name as the main class it will get used automatically.

It sounds like mx.swc is not being found.  If core.swc doesn't use controls
in mx.swc then it would compile fine, but then common.swc wouldn't.

On 4/18/13 11:24 AM, "Michael Baird" <[email protected]> wrote:

> I hadn't seen these compile-configs before. Were these introduced with the
> Apache move or were they part of the Adobe SDK too?
>
> I created a compile-config [1] and it works for my first SWC, but my second
> SWC, which depends on the first one as well as the SDK, is failing to
> resolve a number of MX components:
>
> core:
>      [echo]
>      [echo] Compiling core library
>      [echo]
>     [compc] Loading configuration file
> C:\dev\oneplace-app\trunk\flex4\compile-config.xml
>     [compc] C:\<path>\build\core.swc (326846 bytes)
>
> common:
>      [echo]
>      [echo] Compiling common library
>      [echo]
>     [compc] Loading configuration file
> C:\dev\oneplace-app\trunk\flex4\compile-config.xml
>     [compc] C:\<path>\DropDownItemRenderer.mxml(5): Error: Could not
> resolve <mx:Label> to a component implementation.
>     [compc]
>     [compc]     htmlText="{ _list.labelFunction( data ) }">
>     [compc]
>     [compc] C:\<path>\ShorterTextInput.mxml(2): Error: Could not resolve
> <mx:TextInput> to a component implementation.
>     [compc]
>     [compc] <mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml";>
>     [compc] //and so on...
>
> The targets are setup like so [2] (where *core* is successful but
> *common* fails
> to build with the above errors). The macrodef and target configuration
> works when I use the standard flex-config, so I think there is something
> wrong with my compile-config, but it looks very similar to the examples I
> see in the framework...
>
> [1] http://pastebin.com/c2G8D3B0
> [2] http://pastebin.com/QYhpCZU5
>
>
> On Wed, Apr 17, 2013 at 10:40 PM, Alex Harui <[email protected]> wrote:
>
>> 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:2>>
8
>>> 6]
>>>  at
>>>
>>
mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[/Users/j>>
u
>>>
>>
stinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/manag>>
e
>>> rs/SystemManager.as:2635]
>>>  at flash.events::EventDispatcher/dispatchEventFunction()
>>> at flash.events::EventDispatcher/dispatchEvent()
>>>  at
>>>
>>
mx.preloaders::Preloader/timerHandler()[/Users/justinmclean/Documents/ApacheF>>
l
>>> 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
>>
>>

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

Reply via email to