Могу ли я поручить, чтобы устройство или симулятор всегда использовались для построения конкретной цели? - PullRequest
3 голосов
/ 16 декабря 2010

У меня есть статическая библиотека с двумя разными целями: одна для устройства, другая для симулятора. Наконец, у меня есть цель, которая объединяет две цели, используя липо.

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

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

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Это легко сделать с помощью утилиты командной строки xcodebuild:

$xcodebuild -target <target name> -configuration <configuration name> -sdk iphonesimulator build
$xcodebuild -target <target name> -configuration <configuration name> -sdk iphoneos build

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

Если ваши первые две цели разделены только для построения правильного SDK, теперь вы можете удалить одну из них и дважды выполнить одну и ту же команду построения, установив только другой SDK. Вам также следует рассмотреть возможность запуска липо в Makefile, в этом случае вам также не понадобится липо-мишень.

привет

0 голосов
/ 30 декабря 2010

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

В метод "application didFinishLaunch" вы можете поместить некоторые условия, подобные следующим.

#if TARGET_IPHONE_SIMULATOR
if([[[UIDevice currentDevice] systemVersion] floatValue] == requierdSimulatorVersion){

}
else{
     exit(1);
}
#else
if([[[UIDevice currentDevice] systemVersion] floatValue] == requierdDeviceVersion){

}
else{
     exit(1);
}

#endif

С уважением,

Сатья

...