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

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

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

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

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


person jpm    schedule 08.11.2008    source источник


Ответы (6)


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

person Ben Gottlieb    schedule 08.11.2008
comment
Бен, я поиграю с этой идеей. Как насчет того, чтобы в некоторых файлах перьев были разные строки? - person jpm; 08.11.2008
comment
Вы можете сделать это либо с другими файлами xib, либо, как отмечает комментатор ниже, с помощью операторов #ifdef. У нас есть разные заголовки pch для каждой цели и есть набор #defines для управления статусом демонстрации. - person Ben Gottlieb; 08.11.2008

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

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

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

gcc program.cc -o program.o -DFULL_APP

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

person mxg    schedule 08.11.2008

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

person wisequark    schedule 08.11.2008
comment
Без использования веб-службы для ретрансляции данных приложения iPhone не смогут обмениваться данными друг с другом, поэтому вариант автоматического импорта из демонстрации невозможен. - person Marco; 23.04.2009

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

person Loki    schedule 08.11.2008

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

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

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

person Urs Reupke    schedule 08.11.2008

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

person ChrisSlee    schedule 10.11.2008