2009-04-04 1 views
1

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

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

  1. Добавить #ifdef MYAPP_PRO в исходных файлах, чтобы изменить поведение на основе Pro/облегченной версии приложения (и проверить приложение работает, как ожидалось)
  2. Выберите Project>New Target... из меню, и выберите «Cocoa Touch Application» (названный 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» строить настройки: «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; 
     }; 

ответ

5

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

+2

Вы верны. Я не уверен, как добавить исходные файлы к цели, но дублирование существующей цели и настройка имени/настроек работали отлично. Благодаря! – pix0r

0

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

Смежные вопросы