I've got a Flex application that loads without issue when offline, but once I embed it in a webpage it hangs on “Loading…”:
I've tried fiddling with the -use-network compile flag to no avail.
I've also watched the network traffic with Charles, and I see two requests for the SWF (ie, GET /foo.swf), both of which complete successfully, then nothing else.
What am I missing?
Edit: I've determined that it's not a problem with the SWF — when I run a server using python -m SimpleHTTPServer, everything loads and runs properly. It only appears to break when I'm using Django's static media server.
Do you use debug version of Flash Player? If no, install it and hopefully you will see the problem.
After some trial and error, I've determined that the problem "was caused" by Django's gzip middleware. When I turned that off, the swf loaded properly and everything was happy. I have no idea why this might have been, though…
Related
I'm a C++ programmer, but I'm a newbie in Flex. I'm developing a Flex 3 application for a social network using the FlashDevelop. For debugging I'm using the stand-alone FlashPlayer (10.3 debug) downloaded from Adobe. The application is a simple audio player which shows artist/album images.
The application worked properly on both local computer and remote server until I made some layout changes in Main.mxml. I added some HBoxes and changed Image placement. After that the application still works on my local computer, but it doesn't work properly after I upload it to a server.
Application buttons are not highlighted on over/out/click events, images loaded from the Internet are not displayed, text changed dynamically is not displayed, but when I click buttons a sound file is loaded from the internet and starts playing. It looks like some events which are responsible for components displaying are not dispatched, because some part of functionality not related to displaying still works.
To make sure that this is not a server problem, I rolled back to the previous revision. All works fine.
I suppose that this is a known issue, but I have no idea what is the reason.
Could anyone please help me to resolve the issue?
Thanks.
UDP: I observed the issue in IE and FF, I didn't test Opera and Chrome.
Are you tying to access the pixel data of the images in the new version? If so, that might be the problem, as pixel data for loaded images is not (always) accessible so that might throw a security error, which in turns breaks the rest of the interface.
Also, did you try running the remote version in the debugger? If so, is there any exception being thrown?
And no, it's not a known issue, it's the kind of annoying and hard to debug error that you sometime get when using the Flex SDK.
SHORT VERSION: I have a Flex app that uses Salesforce.com's API. I am trying to deploy it to a remote server but keep getting "Error during login process." when I try to have it log in to salesforce's servers. What gives?
LONG VERSION (maybe someone finds this useful later): I have a flex application that's an add-on for salesforce.com
If I upload it as a static file to salesforce and then embed it in a visualforce page, it works fine. This method uses "loginBySessionId" rather than loginByCredentials.
I would like to be able to run it outside of salesforce's servers. IE, I would like to host the app on my own server and have people enter their credentials in the app and have it login to salesforce's servers. This way, if someone wants to try my application, they do not have to be salesforce administrators and do not have to install the app into a visualforce page.
Here's where the trouble is. If I enter my login information and run it from the compiler, it connects and loads the right data. If I export it as a production release, it still runs fine. However, if I either upload the release files to my own server, or if I transfer them to another computer and run them locally, i get an "Error during login process" Seems some others have had similar issues, but no solutions and nothing new.
Weirder still, if I transfer the project files to another computer and recompile them, it suddenly works. So basically, seems like I have to recompile the app for each computer I plan on running it on, but that's not practical. Even still, I don't see how that could possibly be making a difference, compiling on one vs the other. And yes, same versions of flash, same versions of Flex.
Does anyone have any suggestions on how to resolve this? Am I just misunderstanding something with how to deploy flex applications or is this some screwy thing with the salesforce API and there's a workaround?
As one added thing that makes this problem particularly frustrating is that I can't use the debugger because if I compile it on another computer, it works, so in order for me to get the error I have to build, then transfer to another computer. I feel like this could be a key to the problem, but I'm not sure how.
Here is some applicable code, pretty basic:
<flexforforce:F3WebApplication
id="app" statusChanged="statusChangedHandler(event)"
loginComplete="loginCompleteHandler(event)"
loginFailed="loginFailedHandler(event)"
sessionExpired="sessionExpiredHandler(event)"
serverUrl="http://na9.salesforce.com/services/Soap/u/19.0"
requiredTypes="Account,Contact,Opportunity,Lead,Task,User" />
protected function loginClickHandler( event : MouseEvent ) : void {
_username = 'LOGIN#LOGIN.COM';
_password = 'PASSWORD+SECURITY_TOKEN';
CursorManager.setBusyCursor();
app.loginByCredentials( _username, _password );
}
To clarify, you probably need something like this on initialization :
flash.system.Security.loadPolicyFile("http://na9.salesforce.com/services/Soap/crossdomain.xml");
The reason it works when you compile it is that a lot of the default security is not applicable when on same machine as compiled. Heck, you can even access the hard drive in paths (like a relative URL path to an image on the hard drive) - try running the swf on another computer and bam- no go.
This is an excellent indicator you're hitting a player / VM security issue :)
I'm really confused about this problem, and I'm pretty new to Flex. Basically, anything I try to build with mxmlc fails to run now, giving me the above three errors depending on what I do. It was working 30 minutes ago, I've been spending that time trying to figure out what has changed. I redownloaded the Flex SDK, cleared my assetcache, have cleared Firefox's cache. (I'm using Linux.) Even if I compile with -static-link-runtime-shared-libraries=false, since it seems like #2048 is a RSL problem, it still refuses to run.
Another strange thing, if I keep
<policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
<rsl-url>textLayout_1.0.0.595.swz</rsl-url>
in my flex-config file, then firebug tells me that my swf file is trying to access a copy of that in the app's folder, giving error 2032. And if I stick the one I have in frameworks/rsls/ then it gives me error 2046. I don't know how it could not be properly signed, unless Adobe magically changed a signature and didn't update their flex SDK.
Any help will be appreciated.
On Linux I sometimes get these errors. It seems that the Flash Player cache sometimes get corrupt. When I delete the asset cache I then have to reboot in order for things to work again. Not fun. I filed a bug a while back but without having a consistent way to recreate the corruption I can't help them reproduce the issue. Please file a bug if you have a consistent way to reproduce the issue.
Okay, more weirdness. Simply restarting Firefox seems to have allowed the applications to work again. Facepalm
Today I experienced that problem in one browser but not in other. I have Ubuntu 10.04 and in google chrome 6 I received error #2046. In FireFox and Opera everything worked well. The problem has been solved when I reloaded my chrome browser.
This is an off the cuff answer, maybe not correct, but I encountered a similar issue recently and discovered that the issue was that our app was not compiling the Flex libraries into the SWF. Because of this, in some cases the Flash player would for whatever reason decide that the cached Flex libraries (.swz files, aka Runtime Shared Libraries or RSLs) were incorrect versions and so would refuse to load them, giving similar errors without explanation. These cached libraries are separate from the browser cache, they are cached for the whole OS. You could try explicitly linking the Flex libraries into your SWF to troubleshoot the problem. If it goes away, that's a useful clue.
Using Flex Builder 3 :
I have been getting this problem in every single debug launch for past few hours.
I used to get this earlier too, but once in a while, not with every debug launch.
I found out that flex debugger uses a certain 7935 port but I can't figure out
how to change it?
I remember getting this problem a few times. It might have to do with the Flex Profiler (I used to accidentally click that every now and then trying to launch the debugger).
If you start the Profiler and stop it too fast, it will add something to a file in your home directory that it shouldn't.
Check out /path/to/home/mm.cfg on your operating system (on mac, you can open it in textmate with mate ~/mm.cfg). The mm.cfg file stores some information about debugging in Flex
Then in that file, make sure this is the only content:
ErrorReportingEnable=1
TraceOutputFileEnable=1
If there's an extra line (can't remember/find it, something like PreloadSwf=/Users/[username]/Documents/workspace/.metadata/.plugins/com.adobe.flash.profiler/ProfilerAgent.swf?host=localhost&port=9999), delete it.
Let me know if that fixes it.
Lance
Also just make sure you're not using Chrome. Flash Player debugger (at the time of writing this) does not work in Chrome.
This worked for me: right click on a SWF, select "Open with...", choose "Other...", select the Debug player and check the "Always Open With" checkbox.
Mac OSX / FlashBuilder4
Right click your launched flash application, either in the browser or standalone flash player and click on debugger if enabled and change the radio button from localhost to other machine and enter the ip 127.0.0.1 and you are free to debug. I guess the problem maybe from your host file.
Changing the browser from default (chrome) to IE worked for me
Similar to danjp - This started happening to me after a Flash Player automatic update. I simply reinstalled the debug flash players from the Adobe Flash Player download page and everything works as expected.
Make sure there is a swf file with the proper name in your bin-debug directory and that name matches the swf name specified in index.template.html file for the project.
I had replaced index.template.html file by mistake with a similar one from another project. When I tried to debug, I got this "Waiting for flash player to connect to debugger…" status till it timed out.
To me the problem was that internet explorer opened and showed a certification problem, if i didn´t continue this the debugger would show this error. If i continued on ie, no problem happens.
I seem to be having difficulties getting the trace function to output anything to the console in either Eclipse with the Flex Plug-in, Flex Builder, or even FlexBeans (the Netbeans plug-in for Flex). I have removed and then reinstalled the Flash player 10 debugger version for both Firefox and IE, rebooting after uninstalling them and then after re-installing them. I have removed all old versions of Java and updated to the most recent version.
mm.cfg is configured correctly to allow the trace actions to appear in flashlog.txt
I tried removing the Flex Plug-in for eclipse to re-install, and now that I re-installed, I cannot create new Flex projects. I would rather not uninstall Flex Builder for fear that it will also behave strangely.
ANY ideas would be useful. Ideally, I need the plug-in to work, but any way I could get tracing to output to the console (in ANY IDE) would be better than what I have now.
I'm not sure what you mean by "Flash debugger for both Firefox and IE"; are you referring the debugger versions of the Flash Player available here?
http://www.adobe.com/support/flashplayer/downloads.html
If not, you definitely need those installed in order to be able to write trace() output to the IDE console.
I'm almost positive that this is not the issue, but it has confused me on a couple of occasions.
The Debug Application (as opposed to Run Application) keyboard command is different on Mac and PC. I use both and have gotten them mixed up, which results in my Running when I think I am Debugging, which of course leads to know trace outputs in the console.
Most likely not it, but doesn't hurt to mention it (I hope) :)
-- Evan
How are you testing the debugger? Have you tried going somewhere like with lots of ads that generally still have their traces in? Or are you just testing it with your own swfs? Have you installed the projector debug version? How is eclipse / flex configured to launch test swfs? Is it in the browser, or in the stand alone player? Do you have any weird mxmlc settings?
I assume you've followed all these instructions?
http://kb2.adobe.com/cps/193/tn_19323.html
This is actually a combination of issues. The minor issue was that one application was interfering with Flex Builder Plug-in. The major issue had to do with a setting which had gotten changed on the Flash debugger.
If you right-click the running SWF and then click Debugger, you can (essencially) tell the VM where to listen for trace actions. This had been set to another machine on the network, and not my local machine. As soon as that was switched, everything restored itself.