Лучший способ создания как бесплатных, так и коммерческих приложений из одного и того же исходного кода? - PullRequest
3 голосов
/ 08 ноября 2008

Я хотел бы предоставить две разные версии моего приложения для iPhone в App Store - одну бесплатную, которая ограничена количеством элементов, отображаемых в приложении, а другую - совершенно неограниченную.

Исходный код для обоих приложений будет в точности одинаковым, единственное отличие будет в базе данных SQLite, в которой хранятся элементы в приложении.

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

Есть ли хороший способ сделать это, не дублируя все?

Ответы [ 6 ]

13 голосов
/ 08 ноября 2008

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

7 голосов
/ 08 ноября 2008

Разумно используйте условную компиляцию. Я не знаю, на каком языке вы работаете, но в C / C ++ условная компиляция выполняется с использованием макро-препроцессора и ifdefs. Вы бы написали код что-то вроде:

#ifdef FULL_APP
  // unlimited size
  #define SIZE -1
#else
  #define SIZE 100
#endif

При сборке программы вы указываете определения макроса appopriate в командной строке компилятора.

gcc program.cc -o program.o -DFULL_APP

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

1 голос
/ 08 ноября 2008

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

0 голосов
/ 10 ноября 2008

Я исследовал это, и кажется, что «загрузка пробной версии и обновление через Интернет» нарушает условия магазина приложений. Похоже, вам действительно понадобятся две отдельные версии приложения в магазине. (возвращаясь к записи Бена Готтлиба). Итак, один источник, два дистрибутива.

0 голосов
/ 08 ноября 2008

Есть ли определенная (специфичная для iPhone?) Причина, по которой вам нужны разные базы данных SQLite для обеих версий вашего приложения?

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

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

0 голосов
/ 08 ноября 2008

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

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