Thanks to @tonystech for the clear explanation of the problems and solutions to this issue. I want to add some further insight and suggestions to this process of packaging an AIR app for macOS. Overview To summarize, the suggested flow for packaging an AIR app for macOS is: 1. Package the AIR app using a temporary self-signed certificate. This will build the actual app bundle. 2. Enhance the app bundle so that it meets the base requirements for a first-class desktop application. 3. Code sign the completed app bundle. The app is now ready to run. 4. [Bonus] Create a presentable dmg or pkg if delivering to the Mac App Store. The app is now ready to distribute. Part 1 is necessary because it avoids the cryptic packaging errors AIR encounters when using non self-signed certs, and the app has to be code signed again manually later. Part 2 is necessary because AIR adt packager is not capable of producing an acceptable app. Parts 3 and 4 are necessary because of security and presentation to end-user. Steps Here are the steps I go through when crafting an AIR app for macOS. Step 1 - Build and package the application with adt using temporary certificate @tonystech covered this very well in his post above, apologies for the redundant information. Create a temporary self-signed certificate in p12 format using the adt binary included with the AIR sdk. The adt syntax is: adt -certificate -cn <name> ( -ou <org-unit> )? ( -o <org-name> )? ( -c <country> )? ( -validityPeriod <years> )? 2048-RSA <pfx-file> <password> Example usage: adt -certificate -cn SelfSign -ou Dev -o Dev -c US 2048-RSA temporaryCertificate.p12 temppass Run your standard compile and build process using the IDE of your choice, pointing to the temporary certificate created above. Step 2 - Replace icons AIR does not package high resolution application icons. These icons must be independently created, packaged, and placed in the application bundle. Documentation on high resolution icons is available from Apple in their High Resolution Guidelines for OS X document: Optimizing for High Resolution Once your complete high resolution icon set is crafted, use the tiffutil command to create a final Icons.icns file. Replace the icons that AIR created with this new high resolution file by replacing the file in your application bundle at Contents/Resources/Icon.icns. Step 3 - Remove DRM and Disallowed Libraries Delete the following files located in your app bundle in /Contents/Frameworks/Adobe AIR.framework/Resources: Adobe AIR.vch adobecp.plugin adobecp.vch AdobeCP15.plugin (reference: https://helpx.adobe.com/flash-player/kb/posting-air-app-mac-app.html) If distributing through Mac App Store, the plist in the Flash Player.plugin package must be deleted. path/to/bundle.app/Contents/Frameworks/Adobe\ AIR.framework/Versions/1.0/Resources/Flash\ Player.plugin/Contents/Info.plist. Step 4 - Add Missing keys to Info.plist In bundle.app/Contents edit the Info.plist file to add any necessary keys. Typically you will want to add a CFBundleVersion key as AIR does not do this. You must also add an LSApplicationCategoryType key for distribution through the Mac App Store. Reference on LSApplicationCategoryType keys: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8 Step 5 - Set Permissions In Terminal, perform: chmod -R 777 bundle.app/ Reference: http://pigsels.com/2012/04/air-app-store-publishing-guide/ Step 5 - Create Entitlements plist should be created to set permissions and capabilities for your app. This is beyond the scope of this guide, see Apple's dev site for this. Sample entitlements file: <?xml version="1.0" encoding="utf-8"?> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.inherit</key> <true/> <key>com.apple.security.network.client</key> <true/> <key>com.apple.security.network.server</key> <true/> </dict> </plist> Step 6 - Code sign The specific Apple developer program derived certificate to use for code sign will depend upon delivery target. For distribution outside of the Apple App Store, a Developer ID Application type of certificate is needed. For distribution via the Mac App Store, a Mac App Distribution type of certificate is needed. Using the proper certificate is key! Using an improper certificate will appear to work, but the gatekeeper validation will fail. A good reference: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html The exact common name string of the certificate to use will be listed in the proper certificate shown in the Keychain Access utility app. Developer ID certificates are named starting with "Developer ID." Mac App Distribution and Mac App Installer certificates are named starting with "3rd Party Mac Developer." See Table 14-2 from the above link for details. A deep code sign can be performed with a single command from the Terminal. Example of typical code sign: codesign -f --deep -s "Developer ID Application: YOUR COMPANY (X6UWRFHA)" /path/to/YourApp.app --entitlements pathToYour/entitlements.plist Step 7 - Verify code sign In Terminal: spctl -a -t exec -vv YourApp.app Verification must pass. If it does not, the app may be blocked from running on the end user machine. Step 8 - Create a release dmg [optional] Creation of this is beyond the scope of this outline. An excellent and comprehensive video tutorial on crafting a release dmg is available at http://computers.tutsplus.com/tutorials/how-to-create-a-retina-ready-dmg-based-app-installer--cms-21653 Step 9 - Mac App Store package creation [optional] For onboarding into the Mac App Store, you'll need to create a .pkg: productbuild --component /path/to/bundle.app /Applications --sign "3rd Party Mac Developer Installer: YOU COMPANY (X6UWKFTNN)" bundle.pkg You should now be done and ready to ship!
... View more