OpenFL has broken

I just updated my openfl using haxelib run openfl setup and now nothing compiles anymore. Even the basic openfl create program crashes with:

image

My app is the basic sample and I’m using FlashDevelop 5. On building it I get:

image

My versions are Haxe 3.4.4, FlashDevelop 5.3.1 and AIR SDK 19.

Check your lime version, and try update lime

To update libs you have to run

haxelib upgrade

This will check all your libraries and ask you if you want to update.

1 Like

Oh thank you, thank you! Stuff builds now, however I get a new error:

cmd: "C:\Tools\Haxe\haxe/haxelib" run lime build "project.xml" air -debug -Dfdb
Running Post-Build Command Line...
cmd: openfl test air -debug
invalid application descriptor: Unknown namespace: http://ns.adobe.com/air/application/25.0
Build halted with errors.
Done(1)

It says Unknown namespace: …/air/application /25.0

However my AIR application.xml starts with v28, not v25, so where does it get 25 from?

<?xml version="1.0" encoding="utf-8" ?> 
<application xmlns="http://ns.adobe.com/air/application/28.0">

This is the generated application.xml we use

Do we need to try and detect the version of Adobe AIR you are using, and write that into the file, or can you reference an older XMLNS with a newer AIR SDK?

1 Like

I think the main issue here is the AIR SDK does not recognize v25. This is because I’m using an older AIR SDK because my app is not compatible with the latest SDK. Can you add a variable for the application version, instead of hard coding 25.0??

Currently I’ve hand edited the template xml but its just a hack. But at least it works!

Just added support in the Lime tools for using <config:air sdk-version="25.0" /> in a project.xml for configuring the SDK value used in our generated application.xml. However, if we can use older SDK values just fine in the application.xml, then perhaps we should consider a lower version. I’m not sure if you know what our version minimum might be, based on the features we’re using?

Hi there,

Trying to fix the SDK value used in the generated application.xml by adding

<config:air sdk-version=“32.0” />

in project.xml…but when i deploy AIR app I always have “application xmlns=http://ns.adobe.com/air/application/28.0

Any idea?
Is there any way to override the generated application.xml with another one at build ?
And last question : where can I find all the <config:air … /> options ?

Thanks for your help!

You can override the template by using <template path="templates" /> then defining your own “templates/air/template/application.xml” but this should work with the latest Lime release:


Thanks for your help singmajesty :slight_smile:

I manage to overwrite the template and it’s working when I test the air app.
However, when I try to deploy I have this issue:

openfl deploy air

“could not load keystore file (password may be incorrect)”

Any idea?

I believe that AIR always requires a certificate but Lime includes a default debug certificate that it uses when you do not specify your own. However, when performing a deploy I believe it is generating a release package that needs to have your own signed certificate. Here’s some of the code:

if (project.keystore != null)
		{
			var keystore = Path.tryFullPath(project.keystore.path);
			var keystoreType = project.keystore.type != null ? project.keystore.type : "pkcs12";

			signingOptions.push("-storetype");
			signingOptions.push(keystoreType);
			signingOptions.push("-keystore");
			signingOptions.push(keystore);

			if (project.keystore.alias != null)
			{
				signingOptions.push("-alias");
				signingOptions.push(project.keystore.alias);
			}

			if (project.keystore.password != null)
			{
				signingOptions.push("-storepass");
				signingOptions.push(project.keystore.password);
			}

			if (project.keystore.aliasPassword != null)
			{
				signingOptions.push("-keypass");
				signingOptions.push(project.keystore.aliasPassword);
			}
		}
		else
		{
			signingOptions.push("-storetype");
			signingOptions.push("pkcs12");
			signingOptions.push("-keystore");
			signingOptions.push(System.findTemplate(project.templatePaths, "air/debug.pfx"));
			signingOptions.push("-storepass");
			signingOptions.push("samplePassword");
		}

So it looks like (in project.xml):

<keystore path="cert.pfx" type="pkcs12" alias="" password="" alias-password="" />

Adobe should have documentation for generating a certificate

Thanks singmajesty ! :slight_smile: