Если бы необходимо было запустить приложение снова с нуля, что Вы сделали бы по-другому, зная платформы, на которые Вы собирались портировать? Это подвергает сомнению, прибывает, поскольку моя команда собирается подвергнуться разработке для мобильного приложения, предназначающегося для iPhone, андроида и QT. Мы стремимся завершать версию iPhone сначала и затем порт к андроиду и QT, и было бы замечательно знать, что любые подсказки или идеологии схватывают/используют с самого начала, который сделает процесс портирования максимально бесшовным. Я уверен там несколько из Вас, кто завершил их версию iPhone приложения сначала и затем пошел о разработке версии андроида. Я стремлюсь знать любое из препятствий, с которыми Вы встретились, или вещи, Вам жаль, что Вы не знали от запуска.
править: Строго говоря, приложение, мы составляем завещание, содержит формы и некоторый зрительный ряд (диаграммы)
Я думаю, что хотя "портирование" - правильный глагол в данном контексте, концепция может быть неправильной. Это может быть непопулярным ответом, но вот что я скажу:
Не портируйте. Некоторое количество классов может быть непосредственно пригодно для использования (только с переводом языка) с одной платформы на другую. Их вы переносите. Однако пользовательский интерфейс может и должен быть совершенно различным для двух платформ... разные концепции, и, что более важно, разные компоненты и разные соглашения, как с точки зрения пользователя, так и со стороны разработчика.
В качестве примера можно привести приложение New York Times на iPhone и Android. Я уверен, что им удалось сохранить примерно половину приложения, работающего на общем коде, но остальное переведено в соответствии с идиомами и SDK каждой платформы. На первый взгляд, это одно и то же приложение, но когда вы действительно вникаете в него, многие вещи оказываются совершенно разными".
Поэтому вместо того, чтобы советовать вам "не заканчивать один порт, прежде чем приступать к другим", я бы посоветовал вам определить общие или разделяемые части приложения и уделить пристальное внимание тому, чтобы сделать их как можно более общими. Остальная часть приложения, вероятно, должна быть специфичной для конкретной платформы (очевидно, что ваши версии для iPhone и iPad должны иметь около 90% или более общего кода...)
.Сначала определите общие технологии, доступные на всех платформах, и постарайтесь придерживаться их как можно больше - OpenGL, SQLite и т.д.
Далее я бы посоветовал не заканчивать один порт, прежде чем приступать к другим. С самого первого дня начните параллельную работу хотя бы над одним из них. Вероятно, вы обнаружите, что сможете обнаружить многие проблемы гораздо раньше. Вам может показаться, что у вас нет для этого ресурсов, но я думаю, что это важнее, чем может показаться.
Уделите пристальное внимание архитектуре вашего программного обеспечения (MVC? хотя Qt - это Model-View-Delegate). Всегда существует тенденция к нарушению архитектурной чистоты, чтобы быстрее выйти на рынок с немного более грязным, немного более халтурным решением. Постарайтесь противостоять этому, насколько это возможно, потому что вам все равно придется откусить эти пули очень скоро.
Как отметил Саймон, параллельно начните работу хотя бы над одним из них. Вы столкнетесь с множеством проблем, связанных с реализацией одной функции одинаковым образом на всех платформах, и это произойдет, когда мы попытаемся имитировать одинаковый дизайн пользовательского интерфейса (использование элементов управления) на всех платформах.