solucion solicitado software restaurar recurso pudo problema para ocurrio ocurrido momento hubo hay este error encontro disponible desconocido descargar celular apple actualizacion iphone xcode

solicitado - Xcode no copia el último archivo de recursos para iPhone



itunes (10)

Estoy escribiendo una aplicación para iPhone en Objective-C con Xcode y tengo algunos scripts Lua que se ejecutan en el dispositivo.

Tengo un problema en el que si edito un script Lua, guardo, me desplazo a Xcode y construyo y ejecuto (⌘Y) la última versión de ese script Lua se copia en el paquete de la aplicación pero no se copia en el dispositivo.

Los scripts no están en el proyecto Xcode, los edito en Textmate. Tengo un paso de compilación que copia los scripts en el paquete de la aplicación y toca los archivos, esto se está ejecutando bien y la última versión del script está en el paquete de la aplicación cuando ejecuto la aplicación. Todos los archivos se han tocado, pero por alguna razón al copiar el paquete en el dispositivo, Xcode decide no copiar el último.

Si detengo la aplicación y luego compilo y ejecuto (⌘Y) nuevamente, se copia la última versión.

Mi solución es guardar el archivo Lua, luego en Xcode hacer un Build (⌘B) y luego Build and Run (⌘Y), así que genere la aplicación dos veces. Esto siempre parece copiar la última versión al dispositivo.

Actualizar:

Como muchos han señalado, una solución es limpiar los objetivos y reconstruir. Puedes hacer esto, también puedes construir el doble como lo he señalado anteriormente. Este problema es fácilmente reproducible (en mi configuración ocurre cada vez, sin importar cuán recientemente se limpiaron los objetivos). Espero una solución más confiable / permanente.


¿Por qué los scripts no están en el proyecto Xcode? Aún pueden estar en el proyecto mientras usas Textmate para editarlos. ¿Tal vez incluirlos en el proyecto Xcode hará que sea más probable que se transfieran al dispositivo?


Definitivamente debes agregar esos archivos a tu proyecto XCode. Aún puede editarlos en su otro editor, pero XCode los incluirá en su paquete automáticamente si lo agrega al proyecto. Si no se copian cuando construyes, así es como lo resuelvo:

  • Haga clic derecho en el archivo en XCode y elija "Tocar" que actualiza la marca de fecha y hora en el archivo, para que se vea "nuevo".

  • En el simulador, elija Restablecer contenido y configuración en el menú Archivo.

  • En XCode, haz un Build Clean

Cuando compile y ejecute después de eso, debería instalar el archivo correctamente.

EDITAR:

Para agregar carpetas externas a su proyecto que se incluirán en su paquete y mantener intacta la estructura de la carpeta, todo lo que necesita hacer es:

  • Haga clic en el icono del proyecto en la parte superior de la lista de archivos a la izquierda.

  • Haga clic en el menú Proyecto y en Agregar al proyecto.

  • Seleccione la carpeta que desea incluir y haga clic en Agregar.

  • Desmarque la casilla de verificación Copiar y cambie "Crear recursivamente grupos para cualquier carpeta agregada" a "Crear referencias de carpeta para cualquier carpeta agregada".

  • Cuando se construya el destino, abra el paquete y su estructura de directorios existirá completamente intacta.


En primer lugar: siento tu dolor. No he encontrado ninguna buena documentación sobre cómo enrollar sus mangas y excavar en la compilación de iOS si quiere hacer un intercambio de datos interesante (o incluso simple) utilizando scripts personalizados.

En segundo lugar: no estoy de acuerdo en que necesite, o incluso debería poner todos sus activos en su proyecto xcode. Eso es realmente una cuestión de preferencia personal, y si tiene un proyecto lo suficientemente complicado, XCode se convierte en una bestia para navegar su código solo como es, y mucho menos con todos sus activos de arte y archivos de datos.

Tercero: la limpieza es una solución alternativa, al igual que tocar un archivo de código fuente individual (XCode se encargará de esto y realizará la firma / toque del directorio maestro por usted sin la necesidad de hacer una compilación limpia - una compilación limpia requiere mucho tiempo si tiene un proyecto grande o activos significativos, pero estos son realmente trucos para que la cosa funcione sin solucionar el problema subyacente: debe alcanzar la dependencia correcta para obtener el paso de la copia.

Tuve los mismos problemas que estás describiendo aquí con las siguientes diferencias: estoy usando un gnu make script para procesar recursos de arte (audio, archivos de datos, imágenes) haciendo algunas manipulaciones básicas (compresión, eliminando cosas innecesarias, construyendo fuentes, etc). Estoy usando gnu make porque 1.) Lo sé 2.) Me resulta más fácil poner todas mis reglas en un script 3.) Me gusta mantener mi carpeta de datos agradable y jerárquica y 4.) XCode no siempre es ¡La forma en que desea interactuar / organizar / administrar todos sus datos! (aunque creo que hace un gran trabajo para el código e incluso pequeñas cantidades de datos en un proyecto menos complejo)

De todos modos, lo que encontré es que realmente tuve 2 problemas: 1.) Firma de código y 2.) Copia. La copia es fácil, todo lo que necesita hacer es tocar la carpeta de productos de compilación. En mi caso, agregué lo siguiente a mi archivo make: "touch $ (DIR_CONTENTS)" donde definí "$ (DIR_CONTENTS)" usando los parámetros de envios existentes proporcionados por xcode al shell cuando se ejecuta mi xcode: "DIR_CONTENTS = $ ( BUILT_PRODUCTS_DIR) / $ (CONTENTS_FOLDER_PATH) "(puede ver la lista completa de parámetros de entorno si hace clic en las 3 líneas horizontales en el registro de salida). En su caso, tendría que hacer el equivalente en su script lua. No estoy seguro de lo que eso implica, he estado evitando a propósito lua durante años, pero no puedo imaginar que sea demasiado loco.

El siguiente bit es más complicado, porque lo que encontré fue que solo porque has actualizado, no significa que las cosas de firma de código funcionen bien. En mi caso, necesitaba agregar un archivo ResourceRules.plist y agregar mi directorio de arte (art /.*) como un diccionario, con una línea para omitir y un peso. No pude encontrar documentos sobre esto en ningún lugar, por lo que copié el archivo ResourceRules.plist de la carpeta generada en mi carpeta de origen, lo agregué al proyecto y luego señalé el código para firmarlo. (Esto estaría en las reglas de compilación bajo la Firma de Código: será su "Ruta de Reglas de Recursos de Firma de Código")

Esta no es realmente mi solución ideal, por cierto. Preferiría poder activar el paso de firma de código a través de mi script si mis datos cambian, pero como dije antes, no he encontrado ningún documento útil en la biblioteca de desarrolladores de Apple sobre cómo profundizar en las compilaciones personalizadas. Puedes hacer la firma del código a mano, pero no me gustó.

Espero que ayude.

ACTUALIZAR:

Pensé que agregaría algún código de ejemplo ... aquí hay algunos extractos relevantes de mi makefile:

# Near the beginning, where I do my variables n'' such, I define the # directory in a variable. Note that BUILD_PRODUCTS_DIR and CONTENTS_FOLDER_PATH # are environment variables set by XCode and will be filled with the corresponding # paths DIR_CONTENTS = $(BUILT_PRODUCTS_DIR)/$(CONTENTS_FOLDER_PATH) DIR_DEST_ART = $(DIR_CONTENTS)/art DIR_DEST_FONTS = $(DIR_DEST_ART)/fonts # ... more folders defined here... DIR_SRC_FONTS = $(SRCROOT)/source-art/fonts # ... more folders defined here... # ... do some useful build stuff ... # This is an example of my rule that takes the .png''s built by my font script # and compresses them to .pvrs (note: this isn''t final, so YMMV). The thing to # note here is that if this rule kicks off, the last thing that will happen is # that I will touch my DIR_CONTENTS folder, which will kick off the copy to the # device. I find having to touch the folder really annoying, I prefer the way xcopy # and similar copy methods recursively travel & update if required. $(DIR_DEST_FONTS)/%.pvr : $(DIR_SRC_FONTS)/%.png @echo == Compress $(subst $(SRCROOT),src,$<) to $(subst $(DIR_DEST_ART),dest,$@) === @mkdir -p $(dir $@) @xcrun -sdk iphoneos texturetool -e PVRTC -o $@ -f PVR $< @touch $(DIR_CONTENTS)

Luego, para resolver el problema de firma de código, edité mi ResourceRules.plist para que se pareciera a la siguiente. El área a la que hay que prestar atención es la clave que comienza con "art /.*"

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>rules</key> <dict> <key>.*</key> <true/> <key>art/.*</key> <dict> <key>omit</key> <true/> <key>weight</key> <integer>0</integer> </dict> <key>Info.plist</key> <dict> <key>omit</key> <true/> <key>weight</key> <real>10</real> </dict> <key>ResourceRules.plist</key> <dict> <key>omit</key> <true/> <key>weight</key> <real>100</real> </dict> </dict> </dict> </plist>


Parece que tienes un tipo de problema "único", en el que tus scripts actualizados lo hacen "demasiado tarde" para el paquete. ¿Ha intentado cambiar el orden de las fases de compilación, en particular mover la fase de copia para que no esté al final sino antes de las fases de compilación y enlace?


Por razones que aún no he entendido, a veces el proceso de construcción parece volverse olvidadizo o simplemente no es confiable.

La solución de problemas habitual para este tipo de escenario es limpiar todo en XCode, y al mismo tiempo eliminar la aplicación del teléfono


Solo limpia todo el objetivo en xcode. Y reinicie el xcode.
A continuación, intente instalar en el dispositivo. Funcionará.


Trabajo en esto en la compilación del dispositivo cuando el recurso se actualiza:

  1. En XCode, haga clic derecho en su archivo .app en el grupo de productos
  2. Elija ''Mostrar en Finder''
  3. Limpie los archivos que estaban donde se encuentra el archivo .app
  4. Corre de nuevo

esto funciona bien para mí en la construcción de dispositivos que no costará mucho tiempo.


Tuve un problema similar al copiar automáticamente un archivo de script, cuando se modificó. Había establecido su Tipo en "C" para permitir el resaltado automático de sintaxis. Había añadido el archivo a "Crear fases / copiar recursos de paquete". Pero no hay suerte; los cambios en el archivo no actualizarían el paquete.

La solución, en este caso, fue cambiar el Tipo de "C" a "JSON". Ahora, actualiza el paquete automáticamente en el dispositivo. Tiene sentido, ya que los archivos de origen rara vez son necesarios para un binario. Originalmente, Apple no permitía ningún script.


Utilice la resolución de problemas

Limpiar los proyectos XCode

Construir y ejecutar


Veo este problema de vez en cuando con una base de datos sqlite que he incluido en mi proyecto. A veces simplemente no se obtiene la versión actualizada.

Normalmente, mi solución para esto es ir a la carpeta Application Support / iPhone Simulator, eliminar la aplicación dentro de la carpeta de la aplicación y también eliminar la carpeta Caches.
Esto obligará al Simulador a reconstruir todo esto y obtener archivos nuevos.