2010-01-30 2 views
3

Из того, что я понимаю, Apple запретила время выполнения Flash на iPhone, потому что Apple не хочет, чтобы альтернативная среда выполнения была недоступна для Apple, через свои собственные инструменты. Разрешение среды Flash, согласно Apple, позволит разработчикам обойти политики обновления приложений и другие элементы управления, которые Apple внедрила. И в это время Adobe не выбрала инструменты для статической компиляции приложений, созданных во Flash.Почему Apple разрешает .NET на iPhone, но не Flash?

Мое дальнейшее понимание заключается в том, что .NET-приложения, созданные через MonoTouch, статически предварительно скомпилированы и попадают в iPhone как собственный код, а также работают в среде CLR общего времени .NET (CLR), которую Apple непременно откажет. Поскольку код .NET не выполняется во время выполнения Microsoft, а скорее из-за процессора iPhone, Apple не жалуется.

Мои вопросы:

  1. я правильно о том, почему Apple, позволяет .NET-приложения, разработанные на iPhone?

  2. Является ли предварительно скомпилированный собственный код поставщика на iPhone (или на любой платформе, который, как я полагаю), отличным от любого другого? Другими словами, это собственный код, созданный MonoTouch, неотличимый от собственного кода, созданного скомпилированным кодом Objective C? Является ли источник нативного кода полностью непрозрачным?

+2

Вот очень хороший блог о том, почему вспышка не будет отображаться на iPhone/IPod/IPad в это «нормальный» воплощение: http://daringfireball.net/2010/01/apple_adobe_flash – JBRWilkinson

+0

От чего Понимаю, это начинается и заканчивается временем автономной работы. – Dested

+0

Возможно, стоит отметить, что Apple внесла предлагаемые изменения в свое соглашение с разработчиками, которые отменяют ответы на этот вопрос. Для изменения потребуется, чтобы все приложения были «изначально написаны» в obj-C/C/C++. http://bit.ly/akvgRL Итак, технически вы все равно можете разрабатывать приложения в .NET или Flash, но Apple отвергнет их. – fenomas

ответ

19

Как вы только что сказали, Apple не «позволяет» .NET для запуска на iPhone - был ли развитом приложение в MonoTouch или написанном в какао или COBOL или любой другой не имеет значения; это имеет значение только для того, что он скомпилирован. Это может быть написано на JavaScript, и это не имеет значения.

Если я напишу что-то на английском, а затем переведю его на французский, может ли французский читатель сказать, что оригинальная версия была написана на английском языке? Может быть, наверное, нет, и все зависит от характеристик перевода, а не от читателя. Все Apple требует, чтобы вы дали их написан на французском языке. До этого момента это не имеет никакого значения.

Логическое продолжение этого состоит в том, что теоретически можно написать компилятор для файлов Flash, который создает автономные бинарные файлы iPhone. Если разработка во Flash - это то, что важно для вас. ( Возможно, это уже сделано This has already been done.)

+0

Я считаю, что Apple * делает * позволяет приложениям .NET на iPhone. – Emilio

+2

@ Эмилио нет, они этого не делают. Пожалуйста, внимательно прочитайте мой ответ. –

+0

@ Emilio - Второй абзац вашего вопроса объясняет, почему Apple * не позволяет приложениям .NET. После компиляции в собственный код приложение больше не является «.NET» в том смысле, что для него не требуется предустановленная среда выполнения .NET и библиотеки. –

1

Apple не заботится о том, чтобы виртуальная машина работала на iPhone. Он заботится о том, чтобы внешний, не-appstore код запускался на iPhone.

Вот почему Apple не заботится о предложенном Adobe «Flash Compiler», который делает автономные Flash-приложения. Вот почему Apple не заботится о скомпилированных .NET-проектах.

Напомним, проблема с эмулятором C64. Apple только заботилась о том, что в нее встроен внутренний BASIC, но эмулятор - прекрасный пример виртуальной машины. Весь код C64, выполняемый этой виртуальной машиной, - это машинный код 6502. Но эмулятор не имеет возможности загружать произвольный код из сети и выполнять его.

Это то, что касается Apple.

+0

<< Apple не заботится о том, что VM работает на iPhone. Он заботится о том, чтобы внешний, не-appstore код запускался на iPhone. >> Но почему тогда Adobe не может написать флеш-память iPhone и заставить разработчиков Flash внедрить свои приложения через AppStore? – Emilio

+3

Apple * действительно * забота, очень много, о виртуальных машинах, работающих на iPhone. Эмуляторы и виртуальные машины подвергаются пристальному вниманию и почти всегда отвергаются. –

+0

Я думаю, что Уилл пытается сказать, что виртуальные машины разрешены, если весь код, который они запускают, включен в комплект приложения, и никакой код не может быть добавлен позже. Adobe может свободно создавать Flash-виртуальную машину для iPhone, пока она не загружает контент из Интернета и не выводит его - это то, что они сделали, и теперь он бета-тестирует его с разработчиками, которые связывают свой контент с копию времени выполнения. – rpetrich

4

Все, что делает MonoTouch, транслитерирует Mono-код в объектный C и компилирует его в собственный код, поэтому после его компиляции, который может «работать», несмотря на использование Mono. Это действительно обертка для моно-кода, который переводится в эквивалент объектного C-кода и библиотек времени исполнения.

Они на самом деле не являются стандартами среды выполнения .NET. Таким образом, нет никакой реальной различимой разницы! Как только он скомпилирован в собственный код, это так.

+0

@Emilio, Это, наверное, самый ясный ответ здесь. Эта транслитерация, о которой упоминает tommieb75, является причиной того, что вам все еще нужен весь iPhone SDK, потому что MonoTouch нуждается в доступе к компилятору Objective-C, который на самом деле является только конечной стадией процесса после перевода .Net в native Objective-C. Apple не разрешает .Net устанавливать в iPhone, и они в основном установили полный запрет на установку любой системы, которая может выполнять код времени выполнения независимо от собственного API, что, например, является одной из причин, по которым Flash также исключается , –

+4

Это неверно, нет транслитерации Objective-C. MonoTouch предварительно преобразует IL непосредственно в собственный код сборки, который генерирует JIT.Он связывает это с родным двоичным файлом, который также включает части исполняемого файла Mono (но не JIT). Эта среда выполнения работает как обычная среда исполнения Mono, за исключением того, что вместо кода JITing IL он использует связанные методы скомпилированного кода. Apple SDK необходим для сборки/компоновки родного двоичного кода, подписи кода, симулятора и построителя интерфейсов. –

0

1 - Вы в значительной степени верны. Я бы не сказал, что Apple «разрешает» приложения MonoTouch на платформе, они просто ничего не сказали публично в любом случае, и есть некоторые приложения MonoTouch уже в магазине приложений. Не означает, что они не начнут блокировать их завтра.

2 - Я не знаю много о внутренних компонентах Mono Touch, но я бы предположил, что должны быть некоторые общие черты, которые имеют приложения MT (способ раздувания двоичного размера, там должно быть какое-то общность там где-то), которые Apple может использовать, чтобы выделить их. Конечно, это может принести невероятно значительные усилия для небольшой выгоды, и они, вероятно, скорее потратят свое время на получение 3,2 и вне его.

Я думаю, вы немного смущены различиями между инструментами, используемыми для разработки собственных приложений, и какие плагины браузера Apple хотят поддерживать в Safari. Совершенно разные понятия. Я думаю, вы должны прочитать John Gruber's recent piece за довольно полную теорию о том, почему Flash, вероятно, никогда не будет на iPhone или iPad.

0

Кажется, что скоро вы сможете создавать приложения для iPhone прямо со вспышки.

http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

Это будет интересно узнать, производительность этих приложений, но и для общих средств массовой информации/Маркетинг/Бизнес-сектора, я думаю, что это именно то, как много приложений будет идти.

0

Посмотрите здесь, яблоко

Это Adobe, а не Apple, который разрабатывает флэш для различных операционных систем/устройств. Adobe не смогла разработать удовлетворительные Flash для устройств iOS.

http://www.apple.com/hotnews/thoughts-on-flash/

Смежные вопросы