23 Replies Latest reply on Nov 5, 2015 3:46 PM by mikatalk

    Compiler not embedding current assets / cache cleaning

    nicknameQuest

      dear all,

       

      In FlashBuilder 4.7 (beta + release), it consistently happens that linked assets aren't (re)loaded when compiling. Cleaning the project doesn't seem to help. Restarting FB, then cleaning + building mostly reloads the assets.

      Is there a way to (manually?) clean all caches, the way a restart of FB does?

       

      This question could be related to: http://forums.adobe.com/message/4809438#4809438 and http://forums.adobe.com/message/2921124#2921124

       

       

      This seems reproducible:

      1. Make 'assets.fla' file in Flash Professional, create one symbol with some random graphics, ActionScript Linkage Class set to 'SomeGraphicAsset', publish to 'assets.swf'

      2. In Flash Builder 4.7, create new ActionScript Mobile project

      3. Make new Class "SomeGraphic", link with previously created graphics in Flash:

       

      package

      {

                import flash.display.MovieClip;

       

                [Embed(source="/../embedded-assets/assets.swf", symbol="SomeGraphicAsset")]

                public class SomeGraphic extends MovieClip

                {

                          public function SomeGraphic()

                          {

                                    super();

                          }

                }

      }

       

      4. In constructor of entry-point class for project add:

       

      var somegraphic:SomeGraphic = new SomeGraphic();

      this.addChild(somegraphic)

       

      5. compile / debug project

      6. open 'assets.fla' in Flash Pro. Change something to the 'SomeGraphicAsset' symbol. Publish to .swf file.

      7. In Flash Builder, debug -> shows old file without updated graphics

      8. In Flash Builder, clean project, debug -> shows old file without updated graphics

      9. Close Flash Builder, reopen Flash Builder, clean project, debug -> mostly the updated graphics show.

       

      Any feedback to make this more workable, or a way to fully flush all caches in FB are greatly appreciated.

      It's crazy having to close / open FB every time a graphical asset changes in your project.

       

      - this has been tested on 2 different Mac OSX 10.8.x computers, FlashBuilder 4.7 AIR SDK 3.5

      - sample project can be downloaded here: http://dl.dropbox.com/u/608333/AssetProblemSampleProject.zip

       

      hoping for some feedback,

      Bart

        • 1. Re: Compiler not embedding current assets / cache cleaning
          apman

          Still no solution for this?

          I have exactly the same problem. It also happens with .swc files added to the library path, and with external source folders - it's just a nightmare trying to get FB 4.7 to pick up any changes!

          • 2. Re: Compiler not embedding current assets / cache cleaning
            shawnb81 Level 1

            This is absolutely killing me too. I have to switch back to 4.6 tonight as 4.7 has really screwed my workflow up completely.

             

            New assets are not getting copied over, some folders are just randomly ignored, and to top it off, now my project won't even build:

            http://forums.adobe.com/thread/1127639?tstart=0

             

            Is anyone from Adobe even listening around here?

            • 3. Re: Compiler not embedding current assets / cache cleaning
              blastmasterflex

              Ya I'm getting the same. Anyone find a workaround yet? This is killing the workflow.

              • 4. Re: Compiler not embedding current assets / cache cleaning
                cannyshammy

                Bump, this is really annoying...

                • 5. Re: Compiler not embedding current assets / cache cleaning
                  cannyshammy Level 1

                  Anyone found a work-around to this? Its pretty fundemental..

                  • 6. Re: Compiler not embedding current assets / cache cleaning
                    katopz@sleepydesign.com

                    this issue also happen with ANE, workaround for this is hit clean up button (make sure you close Flash Player before doing cleanup or it will blocked over wirte swf by OS)

                    • 7. Re: Compiler not embedding current assets / cache cleaning
                      jshochet

                      Same problem.

                       

                      Just upgraded from FB4.6 on Win7 to FB4.7 (build 349722) on a new MacBookPro.

                       

                      We have 20-30 .swc files that contain art which are merged into code. When I change the contents of a swc it is really difficult to get FB to refresh and pick up the changes. Building clean, hitting refresh on the project or lib directory. Restarting FB then building clean seems to help. On FB4.6 Windows, we always had to build clean, but not restart all of FB...

                       

                      I followed a post about setting global swc cache off, but that did not seem to help either.

                      http://forums.adobe.com/message/5010103

                       

                      This is killing my workflow -  any help would be appreciated.

                       

                      Mac OSX 10.8.4

                      Google Chrome Version 27.0.1453.116

                      Flash Player 11,7,700,203 installed (debug version)

                      • 8. Re: Compiler not embedding current assets / cache cleaning
                        mikatalk Level 1

                        Any progress with that issue? It is getting really annoying now...

                        • 9. Re: Compiler not embedding current assets / cache cleaning
                          shawnb81 Level 1

                          Come on Adobe, at least PRETEND like you give a ****.

                           

                          This is screwing with our workflow too. Getting really sick of manually copying in my TexturePacker Spritesheets into bin-debug because FlashBuilder is too stupid to realize something has changed...

                          • 10. Re: Compiler not embedding current assets / cache cleaning
                            72Pantera Level 1

                            Adobe, 10 months since this original post with no reply and no fix.  I just restructured the files on a nearly done app in Fb 4.7 and now I'm out of business.  Can't compile because Fb can't find my files.  Nothing that I type in the Embed path works. 

                             

                            You guys need to get in the game or get out.  Tell all of your faithful developers that you just aren't going to commit to fixing major bugs; that we can't select movies from the Gallery Picker; that it's 2013 and your mobile development environment doesn't have a calendar control.  That you've punted GPU and GUI forms to outside developers.  I just subscribed to Creative Cloud and I'm pissed that the environment is such a half *** effort.  It's almost great but almost doesn't cut it.  Do the work!

                             

                            It's death by a thousand paper cuts.

                            • 11. Re: Compiler not embedding current assets / cache cleaning
                              Parantido Julius De Rica

                              I'm facing this problem too and I use following workaround (still looking for a real solution):

                               

                              1. Start "Release build" of your project (File -> Export -> Release build)
                              2. In "Export Release Build" window select options to fit your need and click "Next"
                              3. In the next window you can notice that in "Package Contents" you don't have all "Included files".
                              4. Stop Export Build wizard.
                              5. Browse your project file system.
                              6. You can notice a new folder called "bin-release-temp" containing files will be packaged.
                              7. Populate this folder with missing file (pay attention to real paths).
                              8. Start "Release build" again.
                              9. When you come to point 3 you can notice all needed file in "Package Contents".

                               

                              It's just a workaround ... but it works for me (and I hope for you all).

                               

                              Regards

                               

                              Parantido

                               

                              p.s.: sorry for my really bad english.

                              • 12. Re: Compiler not embedding current assets / cache cleaning
                                kevinandersson

                                I am having the exact same problem. Looking in the Project properties > Actionscript Build Packaging > Package contents - only a handfull of the external assets are listet (not referenced in the code as they are loaded by data files)

                                 

                                Here's an example.

                                 

                                Folder contents:

                                http://cl.ly/image/102W1F3E2H1b

                                 

                                What Flash Builder thinks is in the folder:

                                http://cl.ly/image/0A0N3y163P3x

                                • 13. Re: Compiler not embedding current assets / cache cleaning
                                  atarkinson

                                  I've stopped using Flash Builder and moved to IntelliJ IDEA just because of this issue.  I no longer need a Creative Cloud membership for myself.  It's too bad cause I generally liked Flash Builder, but very glad I made the switch.  However, I still have programmers using Flash Builder so this problem is still impacting me.  I wish Adobe would step up and address the issue, or they will lose more of my money.

                                  • 14. Re: Compiler not embedding current assets / cache cleaning
                                    JamieCrow Level 1

                                    This issue is a serious problem for me too. It's no good not knowing if your assets will be included in in the final release build.

                                    • 15. Re: Compiler not embedding current assets / cache cleaning
                                      Rafael G.

                                      I Have the same issue!!! I have been working with FlashDeveloper without problems and now it not possible work with Flash Builder, Please SOLVE IT!

                                      • 16. Re: Compiler not embedding current assets / cache cleaning
                                        JamieCrow Level 1

                                        In the end I managed to work around this issue by dropping Flash Builder and moving to Intelligj. It's a shame that Adobe can't maintain the software that they have charged people for.

                                        • 17. Re: Compiler not embedding current assets / cache cleaning
                                          irongamer Level 1

                                          Having the same problem.  This is very basic and completely sloppy for a professional IDE.  This needs to be fixed yesterday.

                                          • 18. Re: Compiler not embedding current assets / cache cleaning
                                            A Sad Sam Level 1

                                            Sorry for reviving such an old thread, but I've been having this same issue up until now, and it's starting to get under my skin, with a single image on my project that won't update for NOTHING I do. The pathname is right, but the image that shows up is one that USED to be there but was changed. I propose we do something about this, to get Adobe's attention, staying silent won't help it. Did someone get to submit a bug report?

                                            • 19. Re: Compiler not embedding current assets / cache cleaning
                                              dsjijvdsaijosvadijvda Level 1

                                              I'm having the same problem. I will try the workaround now, but yes, it's really sad to have NO FEEDBACK but paying for CREATIVE CLOUD Memberships (I have 4).

                                              • 20. Re: Compiler not embedding current assets / cache cleaning
                                                Lauw.is.me

                                                Parandito's solution worked for me for a couple of times, but that now seems to have stopped working.

                                                Opening/closing project, cleaning, etc.. No avail.

                                                 

                                                I am trying to create a release build for an Android project where I am including SWFs as assets.

                                                The SWF files are not under any circumstance being included. Any possible solutions?

                                                • 21. Re: Compiler not embedding current assets / cache cleaning
                                                  thx1138 Level 1

                                                  I have the same problem as well. I created a new workspace and imported my other projects in. That worked for a while. Then it stopped. Now I have to clean some of my projects before each build. Others continue to work. Recently I came across this problem. None of my changes were showing up in package content. I put them under an existing folder and it seemed to work. I think dragging files into and out of the project through Flash Builder Package Panel might trigger some process. Of course if you update the files outside of Flash Builder remember to Refresh the root project folder so it sees it. I was going to say it's unbelievable that the Adobe Flash managers whoever they are would leave this problem so long but it's not unbelievable.

                                                  • 22. Re: Compiler not embedding current assets / cache cleaning
                                                    kawikaheftel Level 3

                                                    sometimes I manually delete the bin-debug folder which seems to help.

                                                     

                                                    Also, I've had issues with getting flash builder to recognize a change in files (say SWFs, SWCs) that are outside the current project's folder (like a lib folder or a folder shared between multiple projects). My solution was to copy the resource files into the project's folder.

                                                    • 23. Re: Compiler not embedding current assets / cache cleaning
                                                      mikatalk Level 1

                                                      I gave up waiting on a FB fix... Thanks Adobe and your legendary support...

                                                       

                                                      I recommend you change your embedded asset strategy:

                                                       

                                                      (1) create your assets as linked MCs in your FLA, have no code in there, compile it to swf.

                                                       

                                                      (2) Add this singleton to your project:

                                                       

                                                      package com.tamere
                                                      {
                                                        import flash.display.Loader;
                                                        import flash.display.Sprite;
                                                        import flash.events.Event;
                                                        import flash.events.EventDispatcher;
                                                        import flash.events.IOErrorEvent;
                                                        import flash.events.ProgressEvent;
                                                        import flash.net.URLRequest;
                                                        import flash.system.ApplicationDomain;
                                                        import flash.system.LoaderContext;
                                                      
                                                      
                                                        public class Skin extends EventDispatcher
                                                        {
                                                        private static var instance:Skin;
                                                      
                                                        private var loader:Loader;
                                                        private var applicationDomain:ApplicationDomain;
                                                      
                                                        public function Skin(pvt:Enforcer)
                                                        {
                                                        loader = new Loader();
                                                        loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, function(event:ProgressEvent):void{
                                                        dispatchEvent(event);
                                                        });
                                                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void{
                                                        applicationDomain = loader.content.loaderInfo.applicationDomain;
                                                        dispatchEvent(event);
                                                        });
                                                        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function(event:IOErrorEvent):void{
                                                        dispatchEvent(event);
                                                        });
                                                        }
                                                      
                                                        public static function getInstance():Skin
                                                        {
                                                        if ( instance === null ) instance = new Skin(new Enforcer);
                                                        return instance;
                                                        }
                                                      
                                                        public static function load(theme:String, systemPath:String):void
                                                        {
                                                        if ( instance === null ) instance = new Skin(new Enforcer);
                                                        instance.loader.load(new URLRequest(systemPath+theme+".swf"));
                                                        }
                                                      
                                                        public static function getSprite(ref:String):Sprite
                                                        {
                                                        trace("[Skin] ~", ref);
                                                        return new (getInstance().applicationDomain.getDefinition(ref) as Class);
                                                        }
                                                        }
                                                      }
                                                      class Enforcer {}
                                                      

                                                       

                                                      (3) In your Main app constructor, load the external swf skin:

                                                       

                                                      // load skin
                                                        Skin.getInstance().addEventListener(ProgressEvent.PROGRESS, function(event:ProgressEvent):void{
                                                             progressBar.updateProgress(event.bytesLoaded/event.bytesTotal); 
                                                        });
                                                        Skin.getInstance().addEventListener(IOErrorEvent.IO_ERROR, function(event:IOErrorEvent):void{
                                                             TweenMax.to(progressBar, .5, {autoAlpha:0});
                                                             TweenMax.to(spinner, .5, {autoAlpha:0});
                                                             displayError(ErrorDisplay.ERROR_CONNECTION, "007");
                                                        });
                                                        Skin.getInstance().addEventListener(Event.COMPLETE, function(event:Event):void{
                                                             skinLoaded = true;
                                                             if ( assetsLoaded ) start(); // YOUR PROGRAM IS READY TO START 
                                                        });
                                                        Skin.load("skin-player-default", stage.loaderInfo.url.slice(0, stage.loaderInfo.url.lastIndexOf("/") + 1));
                                                      
                                                      

                                                       

                                                      (4) Now your assets are ready to use, see an example of constructor

                                                       

                                                      public function VideoPlayerNav()
                                                        {
                                                        skin = Skin.getSprite("com.adobeniquesamere.VideoPlayer");
                                                        addChild(skin);
                                                      
                                                        playPauseBtn = skin.getChildByName("playPauseBtn") as PlayPauseBtn;
                                                        stopBtn = skin.getChildByName("stopBtn") as RewindBtn;
                                                        fullScreenBtn = skin.getChildByName("fullScreenBtn") as FullScreenBtn;
                                                        volumeScroller = skin.getChildByName("volumeScroller") as VolumeScroller;
                                                        videoScrollBar = skin.getChildByName("videoScrollBar") as VideoScrollBar;
                                                        timeStamp = skin.getChildByName("timeStamp") as VideoTimeStamp;
                                                        bg = skin.getChildByName("bg") as Sprite;
                                                        hotSpot = skin.getChildByName("hotSpot") as Sprite;
                                                      
                                                      // ... continue with your constructor implementation ...
                                                      
                                                      

                                                       

                                                      I have used this method on very large scale websites, it works GREAT! Hope that helps!

                                                       

                                                      P.S. Anyways Flash is dead, they say, go learn something new!