3 votes

Puis-je exiger que l'appareil ou le simulateur soit toujours utilisé pour construire une cible spécifique ?

J'ai une bibliothèque statique avec deux cibles différentes : l'une à construire pour l'appareil, l'autre pour le simulateur. Enfin, j'ai une cible qui combine les deux cibles en utilisant lipo.

Actuellement, je dois construire chaque cible manuellement et spécifier que la cible du simulateur doit être construite pour le simulateur, et que la cible du dispositif doit être construite pour le dispositif.

Si j'utilise l'une de ces cibles comme dépendance de construction, elles seront construites soit pour l'appareil, soit pour le simulateur. Existe-t-il un moyen de forcer chaque cible à toujours être compilée pour l'appareil ou le simulateur respectivement ?

2voto

pmilosev Points 552

Ceci peut être facilement réalisé en utilisant l'utilitaire xcodebuild en ligne de commande :

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

Ensuite, pour votre cible lipo, vous pouvez ajouter une phase de construction script dans laquelle vous pouvez exécuter les deux commandes avant de les combiner avec lipo.

Si vos deux premières cibles sont séparées dans le seul but de construire avec le bon SDK, vous pouvez maintenant supprimer l'une d'entre elles et exécuter la même commande de construction deux fois en définissant uniquement un SDK différent. Vous devriez également envisager d'exécuter lipo à l'intérieur d'un Makefile, auquel cas vous n'auriez pas besoin de la cible lipo.

regards

-1voto

Satya Points 2484

Vous pouvez restreindre la construction en mettant certaines conditions dans le code. Mais elles ne fonctionneront qu'une fois l'application installée sur l'appareil.

Vous pouvez mettre des conditions comme les suivantes dans la méthode "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

Voir aussi,

Satya

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X