Pregunta

¿Es posible añadir una carpeta a un proyecto de Xcode como un grupo con Applescript, añadiendo de forma recursiva todo por debajo de ella como si fuera arrastrado a la lista de grupos y archivos?

¿Fue útil?

Solución 2

que necesitaba todos los archivos en los subdirectorios, además de directorios lproj, al ser plana en el haz .app. Los activos estaban en esta estructura:

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

añade una secuencia de comandos Ejecutar construir fase previa a "copiar recursos Bundle" con algo similar a la siguiente:

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

Nota: copypng sólo funciona cuando la construcción para el dispositivo, por lo tanto, la prueba

Otros consejos

No hago exactamente eso, pero sí algo muy similar. Puedo ejecutar el siguiente comando shell como un comando posterior a la generación: (He roto en varias líneas por lo que es más fácil de leer)

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

Este comando copia $FOLDER a su aplicación, y $APP_FOLDER es la ubicación de la (construido) .app carpeta, no el proyecto de Xcode. Por ejemplo, mi mando se expande a

/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

(Mi sistema de construcción CMake utiliza, por lo que el ../Myproj.app/data/ carpeta se encuentra en un poco de un lugar poco convencional.)

El resultado neto es que la carpeta de datos se copia en la carpeta <=> (como era de esperar - <=>). Esto no pasa por lo copia a Xcode, pero he encontrado que no tengo ninguna necesidad de que aparezca la carpeta en Xcode. Después de cada generación, se copia a la carpeta, así que puedo utilizar los archivos en ella como si lo hubiera arrastrado a la carpeta a Xcode.

Obviamente, esto no se AppleScript, pero se puede ejecutar un comando shell en applescript por

do shell script "whatever"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top