2009-09-18 7 views
21

Я рассматриваю возможность использования MonoTouch для разработки iPhone, но размер полезной нагрузки является важным фактором.Насколько велика iPhone-приложение Objective-C против приложения MonoTouch?

Для пользователя, который ранее не устанавливал Mono на свой iPhone, какой размер приложения Objective-C «Hello World» будет сравниваться с приложением «Hello World» MonoTouch?

Более конкретно, что такое ок. количество байтов, которые необходимо загрузить, и что такое ок. количество используемых байтов после установки?

ответ

17

Программа «Hello world» в Objective-C занимает 50   KB (вся папка .app). С помощью MonoTouch аналогичное приложение «Hello World» занимает 5   МБ (вся папка .app), что совсем неплохо, учитывая, что в нем есть среда выполнения с сборкой мусора.

+1

Приложения отправляются в магазин приложений, поэтому посчитайте размер от 30 до 50% или меньше для размера загрузки. После установки на устройстве приложение будет иметь ту же сумму, что и созданная вами папка .app. –

+5

Неправильно Зоран. Размер зашифрованного исполняемого файла НЕ является тем, что список appstore для размера. Одно из наших приложений было под 10 МБ, когда оно было зашифровано и загружено, однако теперь оно отображается как 14,7 в магазине. Это, к сожалению, приводит нас к пределу для загрузки 3g. – Lounges

+1

Да, я ошибочно заявил, что 70%, когда я имел в виду 30 ... Удалил комментарий, но теперь я понимаю, что не должен был, потому что кто-то следил за ним :) Итак, не обращайте внимания на процентные заявления. Размер загружаемого файла зависит от размера файла. –

11

В 1,5 MonoTouch

Релиз сборки - что это приложение, построенное с лицензией распределения - и ничего, кроме настроек проекта по умолчанию, 5   MB. Из этого 4.3   МБ является двоичным исполняемым файлом.

Они часто поднимаются до 10   МБ в моем опыте, и форумы рисуют одну и ту же картинку. Appstore сообщает о распакованном размере, однако они загружаются заархивированными. Zipped это около 3   МБ, который, даже на 3G, в порядке.

http://i40.tinypic.com/2jadrpd.png

На мой взгляд, большинство людей не будут смотреть на размер_файла перед загрузкой приложения, и не особенно волновало. Ограничение Appstore для загрузки 3G теперь составляет 20   МБ, который находится в пределах размера MonoTouch.

Чтобы играть адвоката дьявола, да, это на много порядков больше, чем эквивалент Objective-C, и может отпугнуть несколько человек, обеспокоенных тем, что они занимают 4-10   МБ больше их 16   ГБ пространства. Однако есть время для выхода на рынок и существующие инструменты для .NET. Я разрабатываю и создаю все мои приложения MonoTouch в Visual Studio 2010, затем тестирую их на Mac, и я не думаю, что даже Apple будет утверждать, что их IDE близок к лидеру отрасли.

+0

Эй, Крис. Я немного разочарован MonoDevelop и заинтересован в подходе VS. У вас есть запись в любом месте по тому, что вы нашли, что это хороший способ установить это? Или я должен перефразировать это как вопрос SO?:) –

+1

@David У меня есть небольшой раздел на VS2010 по адресу http://www.shrinkrays.net/code-snippets/csharp/monotouch-tips-and-snippets.aspx, прокрутите вниз до «Использование проекта monotouch в Visual Studio 2008/2010 " –

+0

Прохладный, спасибо. Похоже, я уже заклалвил вашу страницу и не установил соединение. :) –

8

С этого вопроса на MonoTouch and Size of Executables:

MonoTouch не переводит на Obj-C. Он компилируется в .NET IL, затем компилирует (так же, как и JIT-компилятор, но до того, как он закончит компилятор), в собственный ARM-код.

так:

Obj-C -> GCC (или LLVM) -> ARM код

VRS MT:

C# -> IL -> (AOT компилятор) -> код ARM

Выходные двоичные файлы в 3.x больше, потому что вы также включаете в себя лот .NET framework (ну, Mono Framework, но то же самое), поэтому, если вы, например, используете System.Xml, он должен включить это в вывод - , то же самое с System.dll и т. Д. Компилятор довольно умный , но выходные файлы всегда будут больше.

Для меня единственная вещь, которая имеет значение, - это время загрузки и размер zinary . Сжатые двоичная для "привет мир" приложение о 2.5-3meg (меньше в 4.x Я сказал) VRS о 300k для Obj-C. Разница получает все меньше и меньше, чем больше вы добавляете, так как она включает только system.dll. Время загрузки для MT vrs Obj-c, делая то же самое при в то же время, достаточно близко к тому же. Можно либо добавить к нагрузку медленно (просто сделайте что-то долгое время в своем FinishedLaunching , не помещая его в другой поток).

Далее автор утверждает, что он чувствует себя более продуктивным с MonoTouch, чем Objective-C. YMMV.

+0

+1 Хорошее дополнение, спасибо за информация. – RedFilter

+0

@RedFilter: Не знал бы об этом, если бы не Джефф Этвуд, указывающий на это в блоге. – 2011-07-14 13:30:38