Ничего действительно не изменилось; яблоко только сняло запрет. Запрет был не только для приложений, созданных во флэш-памяти, но и для любого инструмента, который создавал какой-либо язык-посредник или использовал виртуальную машину и т. Д. Что делает 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."