One annoying thing here..
My project contains lots of assets (a couple GB). They never change. At least not when I'm working on the main MXML code. Is there a way to prevent FlashBuilder to rebuild (delete, then copy) all my assets almost everytime I save or hit debug?
All I need to build is the main MXML file which is edited..
Thanks guys! =)
Move the unchanging assets to a separate library file. Link back to them from the 'project' 'properties'.
EDIT:
Library files can either be compile-time linked or run-time.
For details:
- Flex 4.7
- Flex 3
Related
in AEM 5.6.1 I've created a live copy from a source page template which has 5 components, out of which I found that 2 components don't have lock all.
I am absolute sure that two these components were not created in the live copy but derived from in the source page itself.
Could you please suggest what can be the reason and how to fix it?
We are developing an app using flex 4.5. The app runs just fine (no performance issues at all) but it takes us forever to compile and build it. A minor change, like just add a comment or press enter in an mxml file and rebuild takes about 3 minutes. You just cant work that way.
It is a large project with about 1300 files. We also use Parsley as IOC container and a beat of cairngorm navigation. We also use Maven (Flex mojos) but I am talking about a normal eclipse build (Ctrl + B).
We separated some of the code to a different SWC and all of our graphics are stored in a different resource SWF.
Please, Do you have any suggestions?
Regards, Ido
Summary
Turn off auto-build
Close unrelated projects
Remap Ctrl+B
Encapsulate application domains
Turn off auto-build
First thing to do when you install FlashBuilder is turning off the automatic building "feature". The Flex compiler is waaay to slow to constantly build in the background unless you work on very small projects. It's in menu > Project > Build Automatically.
Close unrelated projects
Any open project eats away memory. Close as many as you can.
Remap Ctrl+B
Since you use the Ctrl+B keybinding to launch the build process, you should know that this will actually build your entire workspace. Every single project that is open will be built. When you have a lot of dependencies that's gonna take a whole lot of time.
That's why I remap the Ctrl+B combo to just build the project that I'm currently working on. A small donwside is that sometimes you have to go 'manually' build a few projects, but that's largely outweighed by the time gain.
Go to menu > Window > Preferences. Type "key" in the search box. Click the topic "keys" under "general". Now type "build" in the searchbox on the right. Select "Build Automatically" and click the "Unbind Command" button. The ctrl+B binding should disappear. Now select "Build Project", then select the "Binding" input field (lower left) and hit Ctrl+B. Save and you're done.
Encapsulate application domains
I don't have a single project that is bigger than 200 files (usually even less than 100). Since your project consists of 1300 files I assume that it is does not have one monolithic function. So you should be able to slice it up into separate libraries; preferably one for each application domain. This will allow you to compile sizeable bits of the application and has the added benefit of clearly separating some concerns within your application.
How to fix slow build time when trying to use the debugger on Flash Builder 4.6 Mobile Apps
I ran into the same problem. Here is how you fix it.
It seem when you build a mobile app with a Server Connection like PHP it writes all of the
files on the server Directory..
When it come time to compile the app to debug it packages all of the sitting in the server directory. To fix this issue do the following.
Properties of the project.
Flex Build Packaging
for this example Pick Google Android.
Package Contents.
UnSelect anything that does not belong in your project..
After doing this build time when from 30 minutes to under 10 seconds..
Ok, This is how we fixed it:
We deleted all the dependencies. Then, we added only the necessary ones. You won't believe how many SWC files were just there and never used.
We went through almost every action-script and mxml file, and deleted unnecessary imports (using CTRL+ O on eclipse). This is a lot of work.
We changed the buiders on the project configurations so that only Flex builder remains. There were more builders including Maven. Every builder makes everything slower.
That is it.
I just started using the ZXing SDK in my iPhone project. This requires that include it be renamed to .mm files (objective-c++).
The problem is that because of one file in my project xcode refactoring has been disabled for the entire thing.
Is there a work around to this issue? A way to refactor for everything except that file or a better way to include things? Possibly by making a static lib of third party code?
I can recreate the problem you're having by adding a C++ file to a Cocoa project. I was able to enable the refactoring menu items by selecting a different file in the project navigator and selecting some text. If that doesn't work, you could remove the one file from the project, do the refactoring, and add the file back to the project.
When i make a release build the folder is populated with a number of swfs. Are all these swfs necessary? Is there a option to generate one swf?
Thanks in advance
EDIT
The files I see are:
framework_4.5.0.18623.swf
osmf_1.0.0.16316.swf
rpc_4.5.0.18623.swf
spark_4.5.0.18623.swf
sparkskins_4.5.0.18623.swf
textLayout_2.0.0.200.swf
playerProductInstall.swf
I assume you're using Flash Builder 4 and/or Flex 4 SDK and see a bunch of SWZ files is that correct? These are framework files which can be cached by the player across multiple domains. Through this caching, the download size of your app is smaller because all these dependencies are left out.
If you want to combine everything to one SWF, in Flash Builder 4 open up the project properties and choose Flex build Path. You'll see a framework linkage option. Change it from "Runtime shared library" to "Merged into code. This default value was changed when moving from Flex 3 to Flex 4.
I'm not sure how to do it via command line, but I'm sure similar options exist.
Be warned, though, this will make your SWF bigger and you won't take advantage of the framework caching options.
Update:
The files you're seeing are definitely Flex Framework files. The reason they are SWFs instead of SWZs is because you are using a prerelease SDK (4.5 ) and the SWZs are not available for caching yet.
Here's what I found:
With Flex closed navigate to:
{Your Flex installation}\sdks\4.1.0\frameworks\flex-config.xml (where 4.1.0 is your latest version)
open flex-config.xml and scroll down until you see 6 items for "runtime-shared-library-path" it will look similar to:
<runtime-shared-library-path>
<path-element>libs/textLayout.swc</path-element>
<rsl-url>http://fpdownload.adobe.com/pub/swz/tlf/1.1.0.604/textLayout_1.1.0.604.swz</rsl-url>
<policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
<rsl-url>textLayout_1.1.0.604.swz</rsl-url>
<policy-file-url></policy-file-url>
</runtime-shared-library-path>
Edit the "rsl-url" tag to place the swz file where you'd like:
<rsl-url>myrsl/textLayout_1.1.0.604.swz</rsl-url>
Do this for the remaining "runtime-shared-library-path" tags. Save it and launch Flex, your release build should now dump those .swz files into a folder called myrsl (or whatever you named it)
I have modifyed XMLEncoder class from Flex SDK (XMLEncoder.as)
After it I run my project but I don't see any changes...
What should I do to realy modify project's behaviour?
Thanks!!!
It's not usually recommended but what you are trying to do is Monkey Patching. You can just copy your modified source file into your project and then you application's XMLEncoder will overwrite the one used in Flex (because of how the Flex linker works). This doesn't work with the framework RSLs though.
If you don't see changes, this means sources aren't used - swc is used instead. To use modified sources, recreate folder structure for the class you modified and put source there. You may see a lot of errors (most of the time because include directive), this means you need to copy files needed to satisfy dependencies.
Maybe this is not the right way, but sometimes it's the only option to fix broken Flex class, so professional Flex developer masters it sooner or later :)