2009-05-15 7 views

ответ

2

мне нужно было все файлы в подкаталогах, кроме lproj каталогов, чтобы быть плоским в .app пачке. Активы были в этой структуре:

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

Я добавил Run Script построить фазу до «Копировать Bundle ресурсы» с чем-то подобным следующим образом:

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 

Примечание: copypng работает только при создании для устройство, следовательно, тест

2

Я этого не делаю, но я делаю очень похожее. Я выполнить следующую команду оболочки, как команда после сборки: (я разбил его на несколько строк, так что легче читать)

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

Эта команда копирует $FOLDER к вашему приложению, и $APP_FOLDER является местонахождение (построенный) .app папка, не проект Xcode. Например, моя команда расширяется к

/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 

(Моя система сборки использует CMake, поэтому папка .app находится в немного необычном месте.)

Конечным результатом является то, что в папке данных копируется в папку .app (как и следовало ожидать - ../Myproj.app/data/). Это не позволяет скопировать его в Xcode, но я обнаружил, что мне не нужно, чтобы папка отображалась в Xcode. После каждой сборки он копирует папку, поэтому я могу использовать файлы в ней, как если бы я перетащил ее в Xcode.

Очевидно, что это не AppleScript, но вы можете выполнить команду оболочки в AppleScript по

do shell script "whatever" 
+0

Спасибо, я думаю, что это может быть ответ. Я буду отмечать это как правильно, когда у меня была возможность проверить. –

+0

Я отвечу в другом ответе о том, что я в конце концов сделал, но спасибо, вы, конечно, меня туда! –

Смежные вопросы