Just bumping this thread, I'm also looking for how to package an AIR3.3 for Mac appStore.
(Which nested bundles needs to be signed, how do I enabled app-sandboxing which is now a requirement)
I am curious about this as well.
I agree, the AIR SDK documentation is poor on this subject.
Some guidelines would be appreciated.
I have the same problem. Today i try to add app for air bundles to sandbox but always prompt Quarantine resolution refused. However when i remove sandbox everything is all right(Before we had submitted to Mac App Store, id is 530075950). I searches to search, discover the problem goes to go up in open directory eventually that using function for openWithDefaultApplication of file class.
Test source files:http://www.iyoya.com/soft/test/openWithDefaultApplicationTest.zip
Didnt Adobe promise improved Mac App Store support??? YES they did....
I expected the ease of the Air for iOS Exporter
The new publish options in CS6 does only help 50% + the rest is guesswork !! SHAME!!!..
the provided information about this is non existing.
Anyway this one of a kind walkthrough by Pigsels can get you on the right track
only Terminal codesign and productbuild part is needed
Post if you make it
That guide no longer works since Apple now require the applications to run in a special sandbox mode.
I assumed this was one of the improvements in AIR3.3, but I can't find any information about it from Adobe.
I also followed this guide, I had no problem with packaging and signing but I can't find any information about sandboxing apps for Mac AppStore with AIR.
I think I will use this guide provided by Apple:
and try to figure out how to adapt it to AIR.
I will let you guys know how I'm doing.
But I wish Adobe can tell us what imporvement they made to Captive Runtime to make it more compatible to Mac AppStore.
news? this is really annoying...
Thanks for your reply, but we are speaking about packaging for Desktop. Now the apple require the sandboxing in your app, and we don't know how to. We can't upload our APP on Mac App Store cause the sandbox is not enabled. How can we enable it? (sorry my English)
We are discussing the Captive Runtime feature of Adobe AIR3, which is unrelated to Adobe Captivate.
Could you please try and contact someone on the AIR team?
I'm sure there are more users than us on this forum wondering the same thing.
EDIT : I have completely rewritten my post and made it complete so that if anyone subbles directly on this, all infos and links on building on the app store are on the same page.
Air 3.3 DOES support sandboxing for the Mac App Store. You have to enable it in the .app entitlements, just as you have to do it when coding directly from XCode.
Our App just got approved today using those exact steps!
1 - Follow all required step to build your (yet) unsigned .app. There is a pretty complete walkthrough here, just add the following steps to the codesign related steps : http://pigsels.com/2012/04/air-app-store-publishing-guide/ .
2 - You now need to add 2 icons in the generated YourApp.app/Contents/Resources/Icons.icns file : 512x512 and 1024x1024 (yeah, that's huge, it's for retina display). I did this on Windows using a trial version of IcoFx, I don't know on Mac but a little googling should do the trick in no time. Note that you MUST do this before signing the app.
3- Create an entitlements.plist file that defines sandboxing as enabled
<?xml version="1.0" encoding="utf-8"?>
4- When you codesign your application, define entitlements with previously created file. This will NOT overwritte the Info.plist file found in YouApp.app/Contests. Also note that paths can be relative.
codesign command :
codesign -f -v -sDEVELOPER_CERTIFICATE_NAME
--entitlements /path/to/entitlement.plist /path/to/YourApp.app/
NOTE : I don't know if you need to enable sandboxing for each of the Adobe bundles you have to sign with your developer certificate. In the end, I didn't do it, we'll see what Apple will decide.
5 - Confirm that sandboxing is enabled by running the following command. Don't forget the lonely ' - ', it specifies standard output as display output. You should see the path of the executable followed by the content of your entitlements.plist file. If not, you did something wrong and you should check out step 1,2 or 3 again.
codesign display entitlements command :
codesign --display --entitlements - /path/to/YourApp.app
6 - Package and submit your app by following the rest of the instructions on http://pigsels.com/2012/04/air-app-store-publishing-guide/ . Note that you MUST specifiy /Applications as the installation path or else you won't be able to submit your app to Apple
product build command
productbuild –component /path/to/bundle.app INSTALLATION_PATH /path/to/installer.pkg –sign INSTALLER_CERTIFICATE_NAME
There you go!
Excellent, thank you Kboilydev!
This seems to work for me also, in cue for the manual approval now.
This became a little confusing.
So there is this guide with AIR 3.2 that is huge (but fortunally exist):
However meanwhile was realease the AIR 3.3 with Mac App Store with better support but there is no documentation about that.
Meanwhile same users report that the apps are rejected about sandbox security in Mac App Store.
Meanwhile same other users found the workaround.
So, in short what part of the http://pigsels.com/2012/04/air-app-store-publishing-guide guide is to follow (using AIR 3.3) with what kboilydev have founded (by the way, thank you ) ?
In fact all you have to do is replace step 3 ("Codesign inner Adobe bundles with your developer certificate") from the Pigsel guide and replace it with steps 1 to 5 from my post. My step 6 is referring to the "Creating an installation package" part of the guide, I've just copy/pasted the command and warned that INSTALLATION_PAH must be set to /Applications now or else the app will be refused on upload to Apple.
Hope that helps you!
This is how I did it.
I followed the guide at pigsels but made these changes.
1. Right after creating the .app, I added the 512 and 1024 icons to the icon file using Icon Composer on my Mac, it's a part of Xcode.
2. Then I continued with the pigsels guide but before I created the installer I did the entitlements step as described by Kboilydev.
Make sure you have the latest version of Xcode or Icon Composer might not support the 1024 icon size.
Thank you, thank you both kboilydev and zworpp.
I will follow all the steps with the exceptions that you guys gentle answer me and see what I can get
I have bought the Apple developer program, generate and download my certificates, follow all the steps and when I try to codesign my app file, I get the following error: object file format unrecognized, invalid, or unsuitable
Note: My app was created with Flex and the app file was created with AIR 3.3 capitva runtime thru Flash Builder 4.6.
You need the application to be in a ".app" format, not .air or .dmg . You can't do this through Fash Builder and must run the adt command manually on your compiled myApp.swf and myApp-app.xml (and all other required assets) using the "-target bundle" switch. this will create a .app file. You can refer to Packaging a captive runtime bundle for desktop computers for more informations.
So, compile your project and then bundle with adt.
Once again, thank you kboilydev
I will try this today
Well, the current release of Flash Builder 4.6, can build one app file with the captiva runtime and I tought that something was wrong, so go thru the command line adt process and after sucessfull build I get the same error.
The next step was to try to re-sign another app that I previous have installed in my system (a copy of one app file from the Mac App Store) just for in case something external to the AIR/Flex environment and I get the same error !!!
So, I go thru the XCode -> Preference -> Downloads -> Install Command Line Tools (this will update my previous version of the command line tool codesign) and voilá. I can now create one app file directly from the Flash Builder 4.6 and simple code sign the file from the command line tool. After all the problem was with one old command line tool installed in my system
What I waste of time but also experience gain (I'm a Mac user only from 3 month).
Well, I go now for all the process, publish in the markeplace and see if my app will also been approved.
Thank you very much for your guides
I just sucessfull upload my first apk with 0 errors and 0 warnings in the ApplicationLoader
So, even one Adobe Flex app can be upload to the Mac App Store thru Adobe AIR 3.3
By the way. How many time they took to approve your app ?
Since this is not the iOS marketplace (maybe less then 1% of the size of the iOS), they have much more less to approve daily !
It's less then my first iOS app (more or less 3 weeks) but even so it's a long time.
It's not on my hands now, so just wait.
I have create a long sh script to all this process: macappstore.sh
well done zworpp on getting you game approved by apple. And thanks for letting everyone know how to do this - your doing Adobe's job for them
Well, after 15 days my app finally enter in review process so at least it should be fine in all this process but unfortunally it was my first rejected app because of 2 simple reasons:
1. I have one mobile menu item that knows to the user my mobile version (iOS and Android) and Apple dont allow that;
2. My app starts with a very simple "1.0 like" interface that user can expand with a menu item called "install apps" that is no more than activate/visible modules already available but the term "install" generate a big confusion because Apple dont allow install/download external apps.
I remove the advartising menu item of the mobile edition and change the "install apps" title to "activate apps".
Lets see and many days thei took the app again and if this time they approve
Ho man, second rejection !
It works great in development environment but failled because I use remote procedure call (for a sync feature with a backend).
The entitlements.plist as mention above it's the mininum requirement for the app is proper sandboxed but then we have to enter new keys when using the system resources. In my case I only have to add the key security.network so the Apple stuff can check this key and decide if will be approved to use this resources or not the app and without the key the sandbox simple block the use of this resource.
For a complete list just check this: http://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/EntitlementK eyReference/Chapters/EnablingAppSandbox.html
Let's see if this time will be approved or not
After 4 rejections and a lot of waiting time my app was finally aproved
So, yes, it's possible to upload to Mac App Store apps developed with Adobe Flex 4.6 and Adobe AIR 3.3 with a few patchs after compile the package.
Thank you all for your support
please help! I'm receiving the "Contents/Frameworks/Adobe Air.framework/Versions/1.0 Payload not declared in PackageInfo." error when I try to upload via Application Loader.
I have hear all the info you need.
Just code sign until you dont get any more errors.
i code signed everything, sandbox is enabled, but i still receive this error:
"Contents/Frameworks/Adobe Air.framework/Versions/1.0 Payload not declared in PackageInfo."
According to this post: http://kevin.colyar.net/2011/02/submitting-a-macruby-app-to-the-mac-app-store/ I thought there might be a problem between Framework version "1.0" folder and the sim link "Current"
Anyway, i removed the sim link, and renamed folder "1.0" as "Current" and guess what: my application was finally submitted thru Application Loader, but of course, my binary was invalid. It seems that Application Loader read twice the Framework resource folder.
It seems that i know the issue, but i don't know how to resolve it.
Is there any way i can have only one folder in "framework/Versions" folder?
Uhmm I remember the symlink being there when I code signed, should not be a problem.
Just be careful in fact that the symlink IS there. If it's not, build again with adt.
BTW, if I remember correctly I was getting errors if I codesigne'd some files. Here's what you should sign :
/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/Flash\ Player.plugin
my symlink is there, i code signed everything, sandbox is enabled... stars in the sky... but i still receive the error
My complete "Flex AIR Desktop build script":
cp Info.plist myapp.app/Contents
cp Icon.icns myapp.app/Contents/Resources
rm myapp.app/Contents/Frameworks/Adobe\ AIR.framework/Versions/Current/Resources/WebKit.dylib
codesign -f -v -s "My name" myapp.app/Contents/Frameworks/Adobe\ AIR.framework
codesign -f -v -s "My name" myapp.app/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/AdobeCP15.plugin
codesign -f -v -s "My name" myapp.app/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/Flash\ Player.plugin
codesign -f -v -s "My name" myapp.app/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/adobecp.plugin
codesign -f -v -s "My name" --entitlements entitlements.plist myapp.app
productbuild --component myapp.app /Applications myapp.pkg --sign "My name"
I hope that now I can see more than stars
That look pretty good to me... what version of AIR are you using?