Skip to main content

EncryptedLocalStore and AIR 1.5

I had my older AIR 1.1 application which uses encrypted local store data for saving specific settings per user, today when the AIR runtime gets updated to version 1.5 my application turned to a total mess!
I’m using various classes in my simple application that might cause this issue as far as I thought, like loading CSS on runtime or loading conditional states and components depending on certain parameters retrieved at login ..
I spent a few hours hunting down what actually happened and at last I think I figured it out ..
The new AIR has 3 new features, encrypted local databases, Flash Player 10 capabilities and the new WebKit update, it seems that Adobe somehow has made a change regarding to how the AIR runtime read and write the encrypted local data, and a simple try and catch block of code just revealed the problem ..

The following example assumes that there is encrypted data stored using an older version of the application complied using AIR 1.1, and the application checks for a certain key for loading the perspective CSS file, since the new runtime may not able to read the older version of the encrypted data then it should throw an error, at this point I reset any previous saved data and load a default CSS file in order to bypass this issue when any client update to AIR 1.5

var skinBytes:ByteArray;
var styleEvent:IEventDispatcher;
try {
	skinBytes =  EncryptedLocalStore.getItem("skin");
	if (skinBytes != null) {
		styleEvent= StyleManager.loadStyleDeclarations("css/"+skinBytes.readUTFBytes(skinBytes.length)+".swf");
	} else {
		styleEvent = StyleManager.loadStyleDeclarations("css/black.swf");
} catch(e:Error) {
	styleEvent = StyleManager.loadStyleDeclarations("css/black.swf");

Well, this is not an intelligent solution at all, cause these saved data my be much more complicated and I should not force my user to have it all wiped out just for upgrading the runtime!
Anyway, I’m not sure if my conclusion about the encryption handling change between AIR 1.1 and 1.5, especially that Adobe didn’t mention anything regarding to this particular issue as fas as I know, but I thought that may be this help someone else experiencing the same problem when migrating his application to the new AIR runtime.

Leave a Reply

Your email address will not be published. Required fields are marked *