flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Harui <aha...@adobe.com>
Subject Re: Application issues building through Ant
Date Thu, 18 Apr 2013 05:40:40 GMT
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" <mbaird@kairyt.com> 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 <aharui@adobe.com> 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" <mbaird@kairyt.com> 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 <aharui@adobe.com> 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" <mbaird@kairyt.com> 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 <mbaird@kairyt.com>
>> 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 <aharui@adobe.com>
wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 4/9/13 10:41 AM, "Michael Baird" <mbaird@kairyt.com>
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 <aharui@adobe.com>
>> 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" <mbaird@kairyt.com>
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


Mime
View raw message