Apple has changed Apple Mac App Store requirements and methodologies and that resulted in changes to the AIR runtime itself. This document explains how to post updated AIR applications to the Mac App store.
Posting an application to the Mac App Store requires manual steps. Make sure that you have a Mac developer account with Apple.
- Package your app with a captive runtime. The Mac App Store only accepts self-contained apps, and doesn't allow apps that use the shared AIR runtime. After packaging your .app bundle, manually open your Info.plist file in your favorite XML editor. Add an LSApplicationCategoryType entry.
- Also add a 512x512 icon to your Icon.icns file. (Currently the adt tool does not support icons of this size on Mac.) You can use Icon Composer (available with the xcode tools) to resize.
- Apple places several restrictions to post on the Mac App Store, including:
- The locations an app can write to
- The APIs an app can use (non-public APIs are not allowed)
- And the resources an app is allowed to use.
- WebKit uses a few non-public APIs that are not allowed on the Mac App Store, so you cannot use HTMLLoader or any class in the flash.html package in your app. Manually remove WebKit.dylib and Flash Player.plugin from the Adobe AIR.framework/Resources subtree inside your app bundle. You can use the StageWebView class but only when created with useNative=true.
- Additionally, if you are interested in decreasing the size of your app and you are not using any DRM functionality, you can manually remove Adobe AIR.vch, adobecp.plugin, adobecp.vch, and AdobeCP15.plugin from the Adobe AIR.framework/Resources subtree inside your app bundle.
- It is recommended that you use Mac OS 10.7 or higher to upload your app. There is a bug in Mac OS 10.6 that prevents Apple’s Application Loader from successfully uploading your app with the AIR runtime. To upload from Mac OS 10.6, there is a workaround:
- Delete the “Resources” symbolic link in the AIR framework folder and create a true folder called “Resources”.
- Copy the AIR Info.plist file (from Versions/1.0/Resources) into this new folder. Modify the original Info.plist file (inside Versions/1.0/Resources) by renaming the bundle id to com.adobe.AIR1.
Install your Developer Application and Developer Installer certificates on the Keychain. Use Apple's Developer Certificate Utility to create and install the certificates. The developer certificates refer to the "WWDR Intermediate Certificate" and to the "Apple Inc. Root Certificate". These certificates are not required to be in the Keychain to sign an app. If needed, they can be obtained from Apple Root Certification Authority.
Sign your app with your Mac Application account certificate.
textcodesign -f -s "3rd Party Mac Developer Application: XXX" --entitlements ZZZ.entitlements YYY.app
where XXX is the name on your cert, YYY is the name of your app, and ZZZ is an entitlements file. The entitlements file provides the list or resources and features the app is allowed to access.
You are now ready to upload your app. Before doing so, you must create meta-data for your app on iTunes Connect.
- Log in using your Apple ID.
- Follow the Manage Your Applications link.
- And click the Add New App button to create the meta-data.
Then, use Application Loader to upload the app for review. (Application Loader is part of Xcode tools, versions 3.2.6 and above. Application Loader is also available as a stand-alone download). You find out right away if your application bundle is well-formed. But it takes a few days to find out if Apple approved it or not.
In particular, if you are using a self-signed certificate you could get the following warning from iTunes Connect:
Adobe has discovered one or more issues with your recent binary submission for "YYY". Your app has proceeded to review, but the following issues should be corrected in your next submission:
Invalid Signature - the nested app bundle (YYY.app/Contents/Frameworks/Adobe AIR.framework) is not signed, the signature is invalid, or it is not signed with an Apple submission certificate. Refer to the Code Signing and Application Sandboxing Guide for more information.