2009-05-15 6 views

Répondre

2

je avais besoin tous les fichiers dans des sous-répertoires, en dehors des répertoires lproj, à plat dans le faisceau de .app. Les actifs étaient dans cette structure:

${assetsDir}/${targetCode}/ 
    Icon.png 
    en.lproj 
    ja.lproj 
    ... 
    *.lproj 
    resources{$targetCode/ 
     Target.plist 
     audio/Audio.plist 
      *.mp3 

J'ai ajouté un script Run construction de la phase avant « Ressources Bundle copie » avec quelque chose de semblable à ce qui suit:

COPY_COMMAND="$DEVELOPER_LIBRARY_DIR/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp" 
copyPNGCommand="$PLATFORM_DEVELOPER_LIBRARY_DIR/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng" 

lprojDirectories=$(find ${assetsDirectory}/${targetCode} -type d -name *lproj) 

for lprojDirectory in $lprojDirectories; do 
    "$COPY_COMMAND" -exclude .DS_Store -exclude .svn -resolve-src-symlinks "$lprojDirectory" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" 
done 

MP3s=$(find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name *.mp3) 

for MP3 in $MP3s; do 
    filename=$(basename "$PNG") 
    "$COPY_COMMAND" -resolve-src-symlinks "$MP3" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" 
done 

PNGs=$(find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name *.png) 

for PNG in $PNGs; do 
    if [ -x "$copyPNGCommand" ]; then 
     filename=$(basename "$PNG") 
     "$copyPNGCommand" -compress "" "$PNG" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/$filename" 
    else 
     "$COPY_COMMAND" -resolve-src-symlinks "$PNG" "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" 
    fi 
done 

Plists=$(find ${assetsDirectory}/${targetCode}/resources${targetCode} -type f -name '*.plist') 

for Plist in $Plists; do 
    "$XCODE_APP_SUPPORT_DIR/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist" --convert binary1 "$Plist" --outdir "$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH" 
done 

Note: copypng ne fonctionne que lors de la construction pour la périphérique, d'où le test

2

Je ne fais pas exactement cela, mais je fais une chose très similaire. Je lance la commande shell suivante comme une commande post-construction: (je l'ai cassé en plusieurs lignes il est donc plus facile à lire)

/Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp 
    -exclude .DS_Store -exclude CVS -exclude .svn -resolve-src-symlinks 
    $FOLDER $APP_FOLDER 

Cette commande copie $FOLDER à votre application, et $APP_FOLDER est l'emplacement du (construit) .app dossier, pas le projet Xcode. Par exemple, ma commande se développe vers

/Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp 
    -exclude .DS_Store -exclude CVS -exclude .svn -resolve-src-symlinks 
    /Users/beder/src/myproj/data 
    /Users/beder/src/myproj/build-iphone/Debug-iphonesimulator/Myproj.app 

(Mon système de construction utilise CMake, qui est la raison pour laquelle le dossier .app est dans un peu d'un endroit non conventionnel.)

Le résultat net est que le dossier de données est copié dans le dossier .app (comme vous pouvez l'attendre - ../Myproj.app/data/). Cela évite de le copier dans Xcode, mais j'ai trouvé que je n'avais pas besoin que le dossier apparaisse dans Xcode. Après chaque build, il copie le dossier, donc je peux utiliser les fichiers dedans comme si j'avais fait glisser le dossier sur Xcode.

Il est évident que ce n'est pas AppleScript, mais vous pouvez exécuter une commande shell dans AppleScript par

do shell script "whatever" 
+0

Merci, je pense que cela peut être la réponse. Je vais marquer comme correct quand j'ai eu l'occasion de tester. –

+0

Je vais répondre dans une autre réponse à ce que j'ai finalement fait, mais merci, vous m'avez certainement là! –

Questions connexes