Я пытаюсь построить для нескольких целей в Xcode, чтобы упростить процесс создания «облегченной» и «про» версии моего приложения. Теоретически это здорово, и я могу передать определение GCC_PREPROCESSOR_DEFINITIONS
для использования в моем коде. Тем не менее, у меня возникают проблемы, на самом деле заставить его работать из-за ошибки, пытаясь запустить вторую цель в тренажере: Failed to launch simulated application: Unknown error.
Несколько целей в Xcode: «Не удалось запустить смоделированное приложение: неизвестная ошибка».
Вот простой процесс, я использую, чтобы создать дополнительную цель:
- Добавить #ifdef MYAPP_PRO в исходных файлах, чтобы изменить поведение на основе Pro/облегченной версии приложения (и проверить приложение работает, как ожидалось)
- Выберите
Project
>New Target...
из меню, и выберите «Cocoa Touch Application» (названный MyAppPro») - Редактировать новые целевые настройки, добавить
GCC_PREPROCESSOR_DEFINITIONS
пользовательская настройка и установите значение в «MYAPP_PRO» (без котировок) - Установить активную цель на «MyAppPro»; строить и запускать.
Failed to launch simulated application: Unknown error.
- Копирование всех настроек из Info.plist в MyAppPro-info.plist и попробуйте еще раз
Failed to launch simulated application: Unknown error.
Сборка завершается нормально, но я не могу работать в тренажере.
Редактирование project.pbxproj в каталоге .xcodeproj, я замечаю, что существуют некоторые ключевые различия между настройками сборки двух целевых определений. Я попытался вручную отредактировать файл, но, должно быть, сделал что-то неправильно, потому что не смог загрузить его в Xcode.
Оригинал цели «Debug» строить настройки: «Debug»
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = iphoneos2.2.1;
};
таял нового MyAppPro цели построить настройки:
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/UIKit.framework/Headers/UIKit.h";
INFOPLIST_FILE = "MyAppPro-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
UIKit,
);
PREBINDING = NO;
PRODUCT_NAME = MyAppPro;
SDKROOT = iphoneos2.2.1;
};
Вы верны. Я не уверен, как добавить исходные файлы к цели, но дублирование существующей цели и настройка имени/настроек работали отлично. Благодаря! – pix0r