Dans notre environnement, nous partageons des ressources entre plusieurs projets et plates-formes. Lors de la construction pour iPhone, seul un sous-ensemble de ces ressources est nécessaire. Puisque ce sous-ensemble est encore considérable, nous avons un fichier manifeste répertoriant ce qui entre, ce qui limite la copie. Nous avons notre propre script Python qui fait la copie, rafraîchissant seulement les fichiers qui ont changé. J'ai fait une phase de script d'exécution dans Xcode pour appeler ce script, mais j'ai quelques problèmes liés à la phase de signature de code.Forcer l'actualisation de la signature de code dans Xcode
Étant donné que nous utilisons un fichier manifeste distinct, mon Run Script Phase ne peut spécifier aucun fichier d'entrée/sortie dans l'interface graphique Xcode: il varie en fonction de ce qui est contenu dans les répertoires à ce moment. L'effet secondaire de ceci est que Xcode ne sait pas exactement quels fichiers seront copiés (les choses arrivent "sous la couverture", pour ainsi dire). Le problème que j'ai est que si je ne modifie que les fichiers de ressources entre les builds, la reconstruction de mon application appelle correctement mon script, qui copie les fichiers appropriés, seul Xcode ne relance pas l'étape de signature de code, et ne re -copy mon application sur mon appareil. J'ai trouvé cela étrange, étant donné que mes fichiers de ressources sont en effet répertoriés dans le fichier <app_bundle>/_CodeSignature/CodeResources
, mais il semble que Xcode détermine les besoins de reconstruction indépendamment de cela (probablement uniquement les fichiers répertoriés dans le fichier projet), ce qui est compréhensible.
J'ai essayé de jouer des tours en touchant le répertoire de mon groupe d'applications, ou le binaire de l'application elle-même, mais cela ne fonctionne pas vraiment. Toucher le répertoire du paquet de l'application ne semble rien faire, alors que toucher le binaire fonctionnera, mais PAS POUR LA CONSTRUCTION ACTUELLE, seulement la suivante (puisque aucun fichier d'entrée ne nécessite de recompilation, Xcode infère qu'aucun nouveau binaire n'est généré, mais le suivant temps, il va en effet détecter que le binaire a été touché, et refaire à la fois le Code Signing et le).
Pourtant, cela est tout à fait une solution imparfaite, parce que:
- avoir à construire est deux fois plus d'erreurs
- Mon fichier dSYM sera inutilement regénérés
Est-ce que quelqu'un sait de toute façon forcer l'étape de signature de code dans Xcode (à partir d'un script d'exécution, ou ailleurs)?
Merci. Ça marche! – jhoule
je fini par faire quelque chose d'équivalent à: – jhoule
'exportation CODESIGN_ALLOCATE = "$ {} PLATFORM_DEVLOPER_BIN_DIR/codesign_allocate"' ' – jhoule