Поиск в Интернете не дал результата, хотя правильней будет сказать дал только частичный результат. Надеюсь эта инструкция поможет Вам. Если Вам интересно добро пожаловать под кат. Внимание много Букв.
Для начала Вам нужно будет получить у Apple два сертификата:
- Сертификат для установщика — INSTALLER_CERTIFICATE
- Сертификат для приложения — APPLICATION_CERTIFICATE
Инструкции как получить сертификаты легко гуглятся.
После получения сертификатов их надо зарегистрировать в системе.
Все действия должны производиться в Mac OS.
Следующий шаг собрать своё приложение, для этого можно использовать Flash Builder 4.7 с Adobe Air SDK 3.6 или утилиту из Adobe Air SDK 3.6 «ADT». На этапе сборки совершенно не важно каким сертификатом вы подпишите своё приложение, сертификатами от Apple вы не сможете подписать приложение.
В результате вы должны получить файл типа bundle.app — фактически это просто архив с файлами вашего приложения и c air runtime. Вам понадобится установить XCode, если быть точнее то некоторые его утилиты.
Давайте создадим папку где-нибудь и назовём ее например build. Положим туда наш уже готовый bundle.app
Теперь Вам надо подготовить иконки для Вашего приложения из требований к иконкам это наличие всех размеров и названий файлов.
Создаем папку в build с название icons.iconset внутрь мы должны положить такие файлы(название файлов обязательно должно быть именно таким):
- icon_16x16.png — размер 16x16
- icon_16x16@2x.png — размер 32x32
- icon_32x32.png — размер 32x32
- icon_32x32@2x.png — размер 64x64
- icon_128x128.png — размер 128x128
- icon_128x128@2x.png — размер 256x256
- icon_256x256.png — размер 256x256
- icon_256x256@2x.png — размер 512x512
- icon_512x512.png — размер 512x512
- icon_512x512@2x.png — размер 1024x1024
Не спрашивайте зачем одинаковые иконки с разным названием файлов, так положено по userguide от Apple, если не будет хоть одного файла Вас просто не пропустит AppLoader.
Заходим в папку build c помощью Терминала(из консоли) и вводим команду:
iconutil -c icns "icons.iconset/"
в результате получаем файл icons.icns и копируем его в bundle.app/Contents/Resources с помощью команды:
cp icons.icns bundle.app/Contents/Resources/
удаляем из приложения webkit который запрещен у Apple(говорят он использует private API):
rm bundle.app/Contents/Frameworks/Adobe AIR.framework/Versions/Current/Resources/WebKit.dylib
даём полные права для папки с приложением:
chmod -R 777 bundle.app/
редактируем файл bundle.app/Contents/Info.plist он у вас должен выглядеть примено так:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>LSMinimumSystemVersion</key>
<string>10.6</string>
<key>LSRequiresCarbon</key>
<true/>
<key>CFBundleIconFile</key>
<string>icons.icns</string>
<key>CFBundleIdentifier</key>
<string>com.sitename.bundle</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.puzzle-games</string>
<key>CFBundleGetInfoString</key>
<string>1.0.0,</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>NSHumanReadableCopyright</key>
<string/>
<key>CFBundleExecutable</key>
<string>Fatty Maze</string>
<key>NSHighResolutionCapable</key>
<false/>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>ru</string>
<string>zh</string>
</array>
</dict>
</plist>
Разъясню один момент, в Info.plist обязательно надо указать в какой категории будет размещено ваше приложение это делается здесь:
<key>LSApplicationCategoryType</key>
<string>public.app-category.puzzle-games</string>
название категории строго регламентировано, список категорий можно посмотреть здесь
Снова заходим в папку build через Терминал и начинаем не посредственно подписывание сертификатом приложения и всех его компонентов с помощью следующих команд:
codesign -f -v -s APPLICATION_CERTIFICATE bundle.app/Contents/Frameworks/Adobe AIR.framework/Versions/1.0/Resources/AdobeCP15.plugin
codesign -f -v -s APPLICATION_CERTIFICATE bundle.app/Contents/Frameworks/Adobe AIR.framework/Versions/1.0/Resources/Flash Player.plugin/
codesign -f -v -s APPLICATION_CERTIFICATE bundle.app/Contents/Frameworks/Adobe AIR.framework/Versions/1.0/Resources/adobecp.plugin
codesign -f -v -s APPLICATION_CERTIFICATE bundle.app/Contents/Frameworks/Adobe AIR.framework/Versions/1.0
codesign -f -v -s APPLICATION_CERTIFICATE bundle.app
Вместо APPLICATION_CERTIFICATE вы должны вписать полное название Вашего сертификата оно у меня выглядит примерно так «3rd Party Mac Developer Application: Vasya Pupkin» кавычки обязательны.
Следующий шаг добавить поддержку песочницы. Создаем файл entitlements.plist в папке build c содержимым:
<?xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
добавляем изменения в приложение и подписываем сертификатом с помощью команды из терминала находясь в папке build:
codesign -f -v -s --entitlements entitlements.plist bundle.app/
чтобы удостоверится, что всё правильно сделано команда:
codesign --display --entitlements - bundle.app
В результате вы должны увидеть содержание вашего entitlements.plist, если содержания в выводе нету, значит вы сделали что-то не правильно.
И наконец product build:
productbuild --component bundle.app /Applications bundleInstaller.pkg --sign INSTALLER_CERTIFICATE
У меня INSTALLER_CERTIFICATE выглядит примерно так «3rd Party Mac Developer Installer: Vasya Pupkin» кавычки обязательны.
Проверяем всё ли правильно подписалось:
sudo installer -store -pkg bundleInstaller.pkg -target /
Если процент дошёл до 100 и вы не увидели ошибок, Поздравляю значит всё правильно сделано и можно отправлять на аппрув.
P.S. Мы создали игру для iOS на Adobe Air и портировали её с небольшими изменениями для MacOS, сейчас наше приложение проходит аппрув в MacOS.
Специально не указываю названий и ссылок приложения, это всё таки не пиар статья.
Все манипуляции были получены из этих источников и этими методами:
- http://pigsels.com/2012/04/air-app-store-publishing-guide/
- http://forums.adobe.com/message/4564789#4564789
- Метод научного тыка.
- Сообщения об ошибках получаемых от Apple (некоторые описания ошибок блещут полнотой, до невозможности — Status: Invalid Binary. И пойди пойми почему!)
Автор: accessible