사과 스크립트를 사용하여 Xcode 프로젝트에 재귀 적으로 리소스를 추가하십시오

StackOverflow https://stackoverflow.com/questions/868184

  •  22-08-2019
  •  | 
  •  

문제

Xcode 프로젝트에 폴더를 AppleScript가있는 그룹으로 추가 할 수 있습니까? 그룹 및 파일 목록으로 드래그 된 것처럼 아래의 모든 것을 재귀 적으로 추가 할 수 있습니까?

도움이 되었습니까?

해결책 2

LPROJ 디렉토리를 제외하고 하위 디렉토리의 모든 파일이 .App 번들에 평평해야했습니다. 자산은이 구조에있었습니다.

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

다음과 비슷한 것으로 "번들 복사 자원"이전에 실행 스크립트 빌드 단계를 추가했습니다.

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는 장치를 위해 빌드 할 때만 작동하므로 테스트

다른 팁

나는 그것을 정확히하지 않지만, 나는 매우 비슷한 일을한다. 다음 쉘 명령을 구축 후 명령으로 실행합니다.

/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에서 쉘 명령을 실행할 수 있습니다.

do shell script "whatever"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top