The release notes for Air 3.3 suggest that you can package for the Mac (desktop) app store but I cant find any documentation on how this is achieved? Has any one done this?
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
http://pigsels.com/2012/04/air-app-store-publishing-guide/#more-23
only Terminal codesign and productbuild part is needed
Post if you make it ![]()
Keep an eye on this blog:
http://www.flashrealtime.com/best-practices-air-ios/comment-page-1/#co mment-245821
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.
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)
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
entitlements.plist :
<?xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
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 -s DEVELOPER_CERTIFICATE_NAME --entitlements /path/to/entitlement.plist /path/to/YourApp.app/
source : http://stackoverflow.com/questions/8385252/how-to-build-sandboxed-app- without-xcode
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!
This became a little confusing.
So there is this guide with AIR 3.2 that is huge (but fortunally exist):
http://pigsels.com/2012/04/air-app-store-publishing-guide
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
) ?
Hello hferreira.80@gmail.com,
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.
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.
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 ![]()
It works ![]()
This is my first game for Mac App Store... with sandbox enabled!
http://itunes.apple.com/us/app/lights-off-pro/id537931008?mt=12
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/Re ference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html
Let's see if this time will be approved or not ![]()
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-ap p-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/AdobeCP15.plugin
/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/Flash\ Player.plugin
/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/adobecp.plugin
/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0
/Contents/Frameworks/Adobe\ AIR.framework
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 ![]()
North America
Europe, Middle East and Africa
Asia Pacific