Портирование приложения для iphone. Если бы вы снова запустили свое приложение с нуля, что бы вы сделали по-другому? - PullRequest
6 голосов
/ 04 июля 2010

Если бы вы снова запустили свое приложение с нуля, что бы вы делали по-другому, зная платформы, на которые собирались портировать?Эти вопросы возникают, когда моя команда собирается приступить к разработке мобильного приложения для iphone, android и qt.Мы стремимся завершить сначала версию для iphone, а затем портировать на android и qt, и было бы здорово узнать какие-либо советы или идеологии, которые можно было бы с самого начала понять / использовать, чтобы сделать процесс портирования как можно более плавным.Я уверен, что есть некоторые из вас, которые сначала завершили свою версию приложения для iphone, а затем занялись разработкой версии для Android.Мне бы хотелось узнать о любых препятствиях, с которыми вы столкнулись, или о вещах, которые вы хотели бы знать с самого начала.

edit: В частности, создаваемое нами приложение будет содержать формы и некоторые визуальные элементы (диаграммы)

Ответы [ 3 ]

3 голосов
/ 08 июля 2010

Я думаю, что, хотя «портирование» является правильным глаголом в этом контексте, концепция не может быть правильной.Это может быть непопулярным ответом, но здесь идет:

Не переносить.Некоторое количество классов может быть непосредственно использовано (только с переводом языка) с одной платформы на другую.Те, вы порт.Тем не менее, пользовательский интерфейс может и должен иметь возможность свободно изменяться между двумя платформами ... разные концепции и, что более важно, разные компоненты и разные соглашения, как с точки зрения пользователя, так и со стороны разработчика.

В качестве примера можно привести приложение New York Times для iPhone и Android.Я уверен, что им удалось сохранить около половины приложения работающим на совместно используемом коде, но остальное переведено в соответствии с идиомами и SDK каждой платформы.На первый взгляд, это одно и то же приложение, но когда вы действительно в него входите, многое меняется.

Таким образом, вместо того, чтобы советовать вам «не заканчивать один порт перед запуском любого другого», я бы посоветовал вам определить общие или общие части приложения и обратить пристальное внимание на то, чтобы сделать их общими.насколько это возможно.Остальная часть приложения, вероятно, должна зависеть от платформы (очевидно, ваши версии для iPhone и iPad должны составлять около 90% или более от их реального кода ...)

2 голосов
/ 07 июля 2010

Сначала определите общие технологии, доступные на всех платформах, и постарайтесь использовать их как можно больше - OpenGL, SQLite и т. Д.

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

Обратите особое внимание на архитектуру вашего программного обеспечения (MVC? Хотя Qt - Model-View-Delegate). Всегда есть тенденция к снижению архитектурной чистоты, чтобы быстрее выйти на рынок с более грязным и немного более хакерским решением. Постарайтесь как можно больше сопротивляться этому, потому что вам в любом случае придется очень скоро укусить эти пули.

1 голос
/ 08 июля 2010

Как заметил Саймон, начните некоторые работы параллельно, по крайней мере, с одним из других. Вы столкнетесь с множеством проблем, связанных с осуществимостью одинаковой реализации одной функции на всех платформах, и это произойдет, если мы попытаемся имитировать один и тот же дизайн пользовательского интерфейса (использование элементов управления) на всех платформах.

...