flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Baird <mba...@kairyt.com>
Subject Re: Application issues building through Ant
Date Wed, 17 Apr 2013 22:17:36 GMT
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/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/SystemManager.as:286]
 at
mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/SystemManager.as:2635]
 at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
 at
mx.preloaders::Preloader/timerHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/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
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message