J'avais un besoin similaire comme Andrew. J'avais besoin d'être en mesure de prévoir des ressources à partir d'un script sans la connaissance de ces ressources à l'avance. Voici les solutions que j'ai trouvé:
Ajouter un nouveau Exécuter le Script phase de construction après la "Copie Bundle de Ressources" qui contient la commande suivante:
find -L ${SRCROOT}/SomeDerivedResources \
-type f -not -name ".*" \
-not -name "`basename ${INFOPLIST_FILE}`" \
| xargs -t -I {} \
cp {} ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/
Semble effrayant, mais nous allons le décomposer:
find -L ${SRCROOT}/SomeDerivedResources
Cette rampe le répertoire SomeDerivedResources dans notre source de racine (-L
le raconte à suivre les liens symboliques)
-type f
Inclure uniquement les fichiers standard
-not -name ".*"
Ignorer les fichiers commençant par un point
-not -name "`basename ${INFOPLIST_FILE}`"
Dans mon cas, mon Info plists vivre dans mon SomeDerivedResources répertoire de sorte que nous devons exclure que le fichier de la copie de nos produits
| xargs -t -I {}
Pipe les résultats de l' find
en xargs
avec -t
(echo résultant des commandes dans stderr, de sorte qu'ils se présentent dans notre journal de génération), -I
(exécuter la commande une fois pour chaque fichier d'entrée) et utilisez {}
que notre argument espace réservé
cp {} ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/
Enfin, copier chaque fichier trouvé (notée par {}
) de notre produit est un annuaire de ressources.
J'ai réalisé lors de la saisie de ce que l'utilisation d'un rsync de configuration au lieu de cp pourrait nous empêcher de copier des ressources chaque fois que vous construisez. Si vos ressources sont très grandes, il pourrait être intéressant de regarder dans.
(Aussi, un dossier de référence ne fonctionne pas pour mon besoin, pour plusieurs raisons. L'un, mes icônes sont dans mon DerivedResources répertoire et de les avoir dans un sous-répertoire dans le bundle ne semble pas fonctionner. Aussi, idéalement je voulais être en mesure d'utiliser [UIImage imageNamed:@"MyAwesomeHappyImage.png"]
et -pathForResource:ofType:
(et de certains de mes fichiers sont imbriqués plus à l'intérieur de mon DerivedResources répertoire). Si vos besoins ne contiennent pas ces restrictions, je extrêmement vous suggère d'aller le dossier de référence de la route.)