Adobe Air ios packager - PullRequest
       37

Adobe Air ios packager

3 голосов
/ 01 августа 2011

Кажется, что после развертывания ограничений на развертывание приложений Adobe Air на ios возникает большая путаница. Прежде чем Apple сняла ограничения, вам пришлось пройти процедуру, описанную здесь: http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html с помощью Packager for iPhone. Но теперь, когда ограничения сняты и обновление Air 2.7, мы можем использовать тот же инструмент ADT в гибком SDK, который мы используем со всеми приложениями Air.

Насколько я понимаю, старый Packager for iPhone (PFI) каким-то образом преобразовал код ActionScript в собственную цель C для принятия Apple.

Если это правильно, означает ли снятие ограничений, что инструмент ADT не конвертируется в цель C и объединяет только AS3 .swf и air player при создании файла приложения .ipa?

Что именно изменилось в процессе развертывания Air после того, как Apple сняла свои ограничения?

Если бы кто-нибудь мог указать мне некоторую документацию о том, как файл .ipa создается за кулисами, я думаю, что это действительно устранит некоторую путаницу.

Спасибо за помощь

1 Ответ

13 голосов
/ 02 августа 2011

Ничего действительно не изменилось; яблоко только сняло запрет. Запрет был не только для приложений, созданных во флэш-памяти, но и для любого инструмента, который создавал какой-либо язык-посредник или использовал виртуальную машину и т. Д. Что делает PFI: он фактически использует компилятор LLVM для статической компиляции actioncript 3 BYTECODE ( не источник AS3) в родную сборку ARM. По сути, когда вы развертываете IPA, это та же идея, что и публикация SWF-файла в исполняемый файл (как в настройках публикации), в том смысле, что и ваше SWF-приложение, и флэш-виртуальная машина объединены вместе, за исключением того, что вы не являетесь исполняемым файлом. где код внутри - x86 ASM с байтовым кодом AS3, выполняемым вдоль виртуальной машины, это ARM. PFI и все его классы были просто объединены в инструмент ADT. PFI содержал dll LLVM, доступ к которому осуществляется через различные Java-классы LLVM, которые были добавлены во внутреннюю версию Adobe ASC или компилятор ActionScript. Эти классы LLVM и другие связанные с ними классы, однако, не являются открытым исходным кодом, что Adobe может делать, даже если ASC является открытым исходным кодом, потому что он лицензируется под общедоступной лицензией MPL или mozilla, что разрешает использование открытого исходного кода в проприетарные закрытые приложения без публикации изменений.

Для доказательства всего, что я вам сказал, просто скачайте новый flex SDK, который включает в себя ADT с объединенным PFI, и вы найдете библиотеки LLVM и т. Д. Кроме того, вы можете декомпилировать банку ADT и увидеть все классы LLVM. Классы LLVM (я полагаю) перехватывают байт-код ASC через класс GlobalOptimizer, или, по крайней мере, это было сделано раньше ... они, вероятно, изменили это. Единственное, что изменилось, это то, что, очевидно, Adobe оптимизировала PFI (теперь объединенная в ADT). Больше информации здесь:

http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html

http://www.leebrimelow.com/?p=2754

Обновление

Вот официальная статья Adobe, подтверждающая то, что я вам сказал:

http://www.adobe.com/devnet/logged_in/abansod_iphone.html. Я также должен пояснить, что я действительно слишком упростил закулисный процесс и, по-моему, ошибся в одном из своих пунктов. Я предполагаю, что каким-то образом PFI фактически объединяет байт-код AS3 и виртуальную машину в один цельный исполняемый файл, который не использует JIT-компиляцию, и, таким образом, технически не будет виртуальной машиной? Не уверен в этом, но вышеприведенная статья, похоже, подразумевает следующее:

"Когда вы создаете свое приложение для iOS, в конечном двоичном файле нет интерпретируемого кода и среды выполнения. Ваше приложение действительно является родным приложением iOS."

...