2009-05-15 5 views

답변

2

에 의해 AppleScript로의 쉘 명령을 실행할 수 있습니다.

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 

참고 : 나는 스크립트 실행은 다음과 같은 뭔가에 "복사 번들 리소스"이전 빌드 단계 추가

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

: 자산이 구조에 있던 건물 용 경우에만 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 

합니다 (.app 폴더는 틀에 얽매이지 않는 위치의 비트에 왜 내 빌드 시스템은 CMake를 사용합니다.)

최종 결과는 데이터 폴더가 과 같이 .app 폴더에 복사됩니다. Xcode로 복사하는 것을 우회하지만 Xcode에 폴더가 표시 될 필요가 없음을 발견했습니다. 각 빌드가 끝나면 폴더를 복사하므로 폴더를 Xcode로 드래그 한 것처럼 파일을 사용할 수 있습니다.

는 분명히 이것은 AppleScript로하지 않습니다,하지만 당신은 .APP 번들에서 평면으로, lproj 디렉토리에서 떨어져, 나는 서브 디렉토리의 모든 파일을 필요

do shell script "whatever" 
+0

고마워, 나는 대답 일 것 같아요. 나는 시험 할 기회가있을 때 그것을 정확하게 표시 할 것입니다. –

+0

나는 결국 내가 한 일에 대해 다른 대답으로 대답 하겠지만, 고마워, 너는 확실히 거기에있어! –

관련 문제