Несколько целей в Xcode: «Не удалось запустить симулированное приложение: неизвестная ошибка». - PullRequest
1 голос
/ 04 апреля 2009

Я пытаюсь создать несколько целей в XCode, чтобы упростить процесс создания «облегченной» и «про» версии моего приложения. Теоретически это здорово, и я могу передать определения GCC_PREPROCESSOR_DEFINITIONS для использования в моем коде. Тем не менее, у меня возникают проблемы с тем, чтобы заставить его работать из-за ошибки при попытке запустить вторую цель в симуляторе: Failed to launch simulated application: Unknown error.

Вот простой процесс, который я использую для создания дополнительной цели:

  1. Добавить #ifdef MYAPP_PRO в исходные файлы, чтобы изменить поведение в зависимости от версии приложения pro / lite (и убедиться, что приложение работает должным образом)
  2. Выберите Project> New Target... из меню и выберите «Приложение для сенсорного ввода Cocoa» (с именем MyAppPro ")
  3. Редактировать новые настройки цели; добавить GCC_PREPROCESSOR_DEFINITIONS пользовательскую настройку и установить значение «MYAPP_PRO» (без кавычек)
  4. Установить активную цель на «MyAppPro»; построить и запустить.
  5. Failed to launch simulated application: Unknown error.
  6. Скопируйте все настройки из Info.plist в MyAppPro-Info.plist и повторите попытку
  7. Failed to launch simulated application: Unknown error.

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

Редактируя файл project.pbxproj в каталоге .xcodeproj, я замечаю, что между настройками сборки двух определений целей есть некоторые ключевые различия. Я попытался вручную отредактировать файл, но, должно быть, сделал что-то не так, потому что не смог загрузить его в Xcode позже.

Исходные настройки сборки "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;
        };

Новые настройки сборки Debug для цели 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;
        };

Ответы [ 2 ]

5 голосов
/ 05 апреля 2009

Вы не сказали, добавляли ли вы когда-либо исходные файлы к цели. Новая цель (в отличие от нового проекта) не имеет шаблонов исходных файлов; Вы должны добавить их самостоятельно. Таким образом, симулятор может сказать вам: «Вы успешно построили, но запустить нечего».

0 голосов
/ 21 января 2011

Дублируйте цель. Я только что совершил ту же ошибку и понял, что сделал: «Новая цель» создает чистый лист (хотя это не сразу очевидно), даже если вы попытаетесь включить то, что вам, вероятно, что-то будет не хватать.

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