Xcode repetidamente copyndo los resources del package

Tengo una pregunta sobre Xcode y el package de copy de resources.

Actualmente estoy trabajando en un proyecto con una gran biblioteca de activos. Por lo tanto, una installation limpia o un cambio en un recurso de package garantiza una copy del recurso (s) de package "nuevo".

Sin embargo, el problema que enfrento actualmente es que Xcode está copyndo una parte de toda la biblioteca de activos cada vez que se crea la aplicación. Este comportamiento es super extraño, ya que en todos los proyectos que he trabajado, Xcode solo copió los resources si hubieran cambiado, o si se trataba de una installation limpia, o si había algo nuevo que no se había copydo anteriormente.

Sin embargo, en este caso, copió todos los resources en una installation limpia (esperada). Sin embargo, en cada compilation consecutiva, todavía se está copyndo algunos de los files. Ahora esto es súper extraño, ya que ninguno de los files ha cambiado, y no está copyndo todos los files, solo una pequeña parte de ellos. Una cosa más: si ejecuto la misma aplicación, con la misma configuration en el simulador, la copy NO sucederá (moar extrañeza).

¿Hay alguna configuration que pueda cambiar, o tal vez una bandera que pueda include que evite que esto ocurra?

Gracias de antemano por la ayuda!

¡Aclamaciones!

Ha pasado un mes desde que se hizo esta pregunta, y he logrado encontrar una solución de "tipo de solución".

Ahora, la razón por la que estoy poniendo esto como la respuesta aceptada es principalmente porque no se ha publicado otra respuesta / solución al escribir esto. Si se publica algo mejor (o si tengo una actualización), me aseguraré de marcar una mejor respuesta como la aceptada.

De cualquier manera, esta "solución" funcionará si tiene un set súper grande de activos que no cambian en comstackciones consecutivas.

El proyecto en el que estoy trabajando tiene muchos files de audio y video que ya se han preparado, y no van a cambiar (excepto la grabación ocasional o algo así).

Entonces, como dice mi pregunta, Xcode estaba copyndo un subset de los resources. Idealmente, una vez que se ha copydo un recurso (y no hay cambios en él), no se vuelve a copyr (al less no se debe volver a copyr) sobre comstackciones consecutivas. En mi caso, se estaba copyndo durante cada ejecución consecutiva, lo que causaba que mi compilation total comenzara a ser de 15 a 20 minutos. También me gustaría señalar que, independientemente de si usamos "ejecutar script" en las fases de compilation o si teníamos los medios en nuestro proyecto Xcode, nos enfrentábamos al mismo problema.

Solución: Lo que hice fue limpiar mi proyecto, eliminar la aplicación e hice una installation nueva. Entonces, la primera vez, copy TODOS los files con la aplicación. Además, el directory de activos NO está en mi proyecto Xcode. Hemos agregado una fase de "secuencia de commands de ejecución", en la que ejecutamos rsync para copyr los medios de la carpeta de medios, a la aplicación, durante cada compilation.

Ahora, una vez que la aplicación haya terminado de hacer una compilation reciente; Habría copydo todos los files de medios requeridos.

Luego, RETIRE / DESACTE la secuencia de commands, realice una limpieza en Xcode (command + shift + K) y vuelva a ejecutar el proyecto. Esta vez, ya que no hay un script ejecutándose, y dado que Xcode ha realizado un borrado, en el que ahora piensa que todo lo que necesita hacer es volver a comstackr los binarys, construye súper rápido. Como NO he eliminado la aplicación, la carpeta multimedia todavía está en mi aplicación, y mi compilation para los times de inicio ahora es de alnetworkingedor de 30 segundos ~ 1 minuto (esto incluye sandboxing y firma de código). El signo de código y el "sandboxing" de la aplicación todavía llevan time, pero esto es mejor que tener que esperar entre 15 y 20 minutos cada vez que presiono la ejecución. 🙂

¡Espero que esto ayude!

Tengo una situación muy similar. Además, tengo 6 000 resources en mi aplicación, e incluso enumerar algunos de ellos (sin copyr) fue un poco lento. Encontré otra solución (muy similar a la tuya, pero un poco fácil de realizar). Fue inspirado por el suyo, así que muchas gracias!

Copié el objective del proyecto, configuré su id del package como el original (se configuró automáticamente con $ {PRODUCT_NAME} desde la configuration de compilation) y eliminé todos los resources de la sección Copiar resources del package. La primera vez (después de eliminarla de la aplicación del dispositivo) necesito lanzar el objective original con sus resources, pero luego puedo crear el objective copydo mientras los resources aún están en el dispositivo.

Algunas ventajas:

  • es muy fácil cambiar entre ambos objectives
  • no es necesario que escriba dos guiones (para eso no utilicé su solución)

Diversión con numbers:

  • 58 segundos desde "Cmd + R" a la pantalla de carga que aparece con el recurso de package.
  • 20 segundos para el mismo intervalo con la sección vacía "Copy Bundle Resources". No es tan bueno como la suya mejora, pero aún hace la diferencia.

Espero que esto también lo ayude 🙂