Два приложения, одна кодовая база. Как мне этого добиться? - PullRequest
5 голосов
/ 07 октября 2011

У меня есть приложение, оно в данный момент находится в магазине приложений.

У меня есть идея для другого приложения, которое будет иметь почти ту же структуру, что и мое опубликованное приложение.Они оба являются приложениями для манипулирования фотографиями, поэтому кодовая база для импорта, обмена, сохранения, поворота и т. Д. Будет распределена между ними.Однако тип манипуляции с фотографиями будет другим.

Я думаю, что когда я обновляю приложение № 1, я хочу внести эти изменения в приложение № 2, и наоборот.

Что такоелучший способ получить два приложения из одной кодовой базы?

Стратегии, которые я обдумал,

  1. Один файл проекта, две цели.Таким образом, кодовая база для обоих приложений всегда будет обновлена, хотя файл / каталог проекта будет немного беспорядочным, чтобы быть уверенным.
  2. Разветвляйте приложение в git, часто объединяйте изменения между двумя ветвями дляклассы, используемые обоими.

Я тоже открыт для других идей.

Я нашел людей, обсуждающих это, но в основном в связи с незначительными изменениями ... т.е.одно приложение с несколькими разными брендами / файлами данных.Мои два приложения будут достаточно различаться, поэтому я не думаю, что эти методы обязательно применимы.

Ответы [ 3 ]

3 голосов
/ 07 октября 2011

Создайте статическую библиотеку с вашими обычными манипуляциями с фотографиями или другими общими функциями, и переделайте существующий проект, чтобы добавить библиотеку в качестве зависимости и использовать папку заголовков библиотеки в Путь поиска заголовка пользователя.Затем вы можете по существу клонировать свой старый проект и сразу начать модификацию с доступом ко всем функциям совместно используемой библиотеки.

Тем не менее, две цели одного и того же проекта кажутся применимыми к вашей ситуации.Если у вас много совпадений, вам просто нужно написать второй интерфейс / рабочий процесс, верно?Если да, то использование двух целей имеет большой смысл.

2 голосов
/ 21 января 2012

Я бы посоветовал вам взглянуть на использование подмодулей git в обоих ваших приложениях. Это отлично сработало для нас при совместном использовании кода в нескольких приложениях. В основном мы используем структуру, где у нас в каждом проекте XCode есть папка "Components/", в которой мы храним субмодули.

Приложение A может иметь такие подмодули:

Components/SomeAmazingPhotoManipulationStuff
Components/MaybeSomeUsefullFoundationThingsYouUseOften

Приложение B может использовать только:

Components/MaybeSomeUsefullFoundationThingsYouUseOften

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

И, конечно же, вы можете разветвлять свои подмодули, и приложение A использует одну ветку, а приложение B - другое, если вы делаете какие-то конкретные вещи или очень экспериментальные вещи только в одном приложении или в любом другом сценарии, о котором вы можете подумать.

С тех пор, как мы начали использовать такие подмодули git, мы не оглядывались назад и даже не рассматривали какое-либо другое решение.

2 голосов
/ 07 октября 2011

Я предлагаю разделить ваше существующее приложение на две части.Выделите все общие части как общую библиотеку DLL / классов и используйте dll как в существующем, так и в новом проекте.

По мере развития первого проекта используйте последнюю версию dll в своем новом проекте, используя соответствующие сценарии развертывания.Таким образом, ваш новый проект может даже находиться в отдельной кодовой базе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...