2011-07-20 16 views
6

Estoy agregando recursos (muchos .pngs y otros) a mi proyecto de iPhone arrastrándolo a la carpeta y seleccionando "Crear referencias de carpeta para cualquier carpeta agregada", para mantener la estructura de la carpeta. Se agregaron correctamente a la fase de compilación Copiar recursos.¿Cómo forzar a XCode 4 a actualizar siempre los recursos?

El problema es que estoy perdiendo MUCHO tiempo porque cuando creo/elimino/actualizo un nuevo recurso, a menudo ignorará los archivos modificados y se quedará con la versión anterior.

Parece que intenta solo actualizaciones de recursos cuando se modifican, pero no puede ver los cambios. En el simulador fue posible actualizar manualmente los archivos en el .app, pero cuando se trabaja en el dispositivo, se quejará de que el signo de código de algunos recursos ha cambiado.

La única manera confiable que he encontrado para forzarlo a actualizar todo es eliminar los productos de compilación, la aplicación y la aplicación del dispositivo algunas veces, hasta que finalmente decide olvidarse de la versión anterior, pero haciendo esto por cada cambio de recurso me está desperdiciando una cantidad de tiempo insana (el contenido del juego cambia más que a menudo).

Así que, en resumen: ¿cómo obligo a XCode a deshabilitar el "control de versiones" y eliminar todos los recursos y copiarlos todos a la vez?

Gracias!

EDIT: He encontrado que la supresión de la carpeta .app construida en la carpeta de "construir" siempre obliga XCode para añadir nuevos archivos ...

Todavía no tengo ni idea de donde guarda los archivos antiguos cuando se borra esa carpeta, pero esto es para mejor, ya que solo copia nuevos recursos según lo previsto. Así un guión simple como

rm -rf "$CODESIGNING_FOLDER_PATH" 

hace el truco de eliminar la carpeta en cada generación ...

Desafortunadamente, XCode aparentemente corre el codesigning antes que nada en la pestaña Fases de construcción es ejecutado, por lo que actualiza el objetivo anterior, el script elimina el objetivo anterior y luego se bloquea al quejarse de que no se encontraron recursos de firma de código.

Entonces ... ¿Tengo que seguir borrando manualmente el archivo, o hay una forma de ejecutar un script antes de la firma del código?

Respuesta

0

Es posible que desee utilizar la opción Limpiar en el menú Producto (o mantenga presionada la tecla Mayús y el comando y presione K) después de actualizar un recurso y antes de construir la aplicación actualizada. Me he dado cuenta de que esto me ha ayudado en ocasiones cuando actualizo un recurso o una configuración de construcción definida por el usuario.

+4

Desafortunadamente, esto es exactamente lo que trato de evitar, hacer esto también borra todo el código compilado y fuerza una reconstrucción completa ... Y ahora que estoy usando Bullet, una reconstrucción requiere MUCHO tiempo. Lo que quiero es solo limpiar recursos, ¡posiblemente de forma automática! – Tom89

1

Ok, finalmente encontré una solución (algo fea) contra esto.

En su proyecto, cree dos objetivos agregados, digamos Clean Build and Cleaner.

  • En Cleaner, añadir una fase "Ejecutar script" con rm -rf "$CODESIGNING_FOLDER_PATH" que purgar la aplicación temporal de la carpeta de compilación.

  • En Clean Build, agregue primero Cleaner, y luego su objetivo de aplicación normal a las Dependencias del objetivo.

  • Seleccione Limpiar compilación de la lista de ejecución, luego Editar esquema y establecer el destino de la aplicación como el ejecutable.Hit Run, y debería funcionar :)
5

Tuve este tipo de problema también, sobre los archivos que no se actualizan cuando construí mi proyecto (Un proyecto PhoneGap, pero eso no debería importar).

Lo que hice, fue añadir esto a la fase de construcción de mi proyecto:

find "${PROJECT_DIR}/www/." -exec touch -cm {} \; 

Eso hará que los archivos están siendo recogidos y actualizado cuando se genera el proyecto XCode. Por supuesto, debe modificar el comando según sus necesidades; mis necesidades eran actualizar la carpeta www en la compilación, ya que estoy editando mis archivos usando Visual Studio, ejecutándose en una máquina virtual.

+0

Estoy editando sombreadores en una carpeta vinculada, y esta solución no me funciona. – Justin

Cuestiones relacionadas