Конфигурация сборки для Lite / Full приложений в Xcode - PullRequest
0 голосов
/ 28 апреля 2011

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

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

Какой лучший способ добиться этого без дублирования?

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Похоже, вы используете xcode4?Вы можете сделать это, определив новую конфигурацию (помимо стандартных параметров Debug & Release).

Затем добавьте свой собственный макрос препроцессора для дополнительной конфигурации.

Наконец, добавьте новую схемувыбрать новую конфигурацию.

0 голосов
/ 12 августа 2011

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

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

+ (BOOL)isLiteVersion {
    static BOOL haveCheckedLiteStatus = NO;    
    if (haveCheckedLiteStatus == NO) {
        BOOL isLiteApp = [[[NSBundle mainBundle] bundleIdentifier] rangeOfString:@"lite"].location != NSNotFound;
        isLite = isLiteApp && [[NSUserDefaults standardUserDefaults] boolForKey:kUpgraded] == NO;

        haveCheckedLiteStatus = YES;
    }

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