ios - for - No se puede ejecutar la aplicación en el simulador después de instalar Xcode 11-Error de CFBundleVersion
xcode for windows (8)
Ayer, descargué la versión beta de Xcode 11. Después de eso, abrí mi proyecto y traté de ejecutarlo con un nuevo Xcode. Desafortunadamente se ha producido un error con el mensaje:
Failed to install the requested application
Domain: NSPOSIXErrorDomain
Code: 22
Failure Reason: The application''s CFBundleVersion is invalid.
Recovery Suggestion: Ensure your bundle contains a CFBundleVersion with a valid semantic version number.
--
He cerrado la versión beta y he intentado ejecutar de nuevo con la última versión estable de Xcode (10.2.1), pero se ha producido el mismo error. Debo mencionar que antes de intentar ejecutar un proyecto con Xocde 11, funcionó sin problemas en Xcode 10. No se ha cambiado nada antes y después de ejecutar con Xcode beta.
Lo que ya he intentado:
- He eliminado Xcode 11 beta
- He limpiado mi proyecto y lo saqué de la última sucursal
- He eliminado completamente Xcode 10 de:
~/Library/Caches/com.apple.dt.Xcode
~/Library/Developer
~/Library/MobileDevice
~/Library/Preferences/com.apple.dt.Xcode.plist
/Library/Preferences/com.apple.dt.Xcode.plist
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.bom
/System/Library/Receipts/com.apple.pkg.XcodeExtensionSupport.plist
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom
/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist
- Y luego instaló la nueva versión estable 10.2.1
Puedo ejecutar otros proyectos que no se probaron con Xcode 11 sin ningún problema.
Mi última idea es simplemente reinstalar macOS, pero me gustaría no hacerlo.
Edición: olvidé mencionar que la aplicación está funcionando en el iPhone XS físico.
Agregando a esto, noté que si su CFBundleVersion no especifica:
This key is a machine-readable string composed of one to three period-separated integers, such as 10.14.1. The string can only contain numeric characters (0-9) and periods.
no se construirá en el simulador
Combinando las respuestas de Sgeven.Zheng y Cristik.
PORQUE
La instalación de Xcode11 Beta instala una nueva versión de
CoreSimulator.framework
con la siguiente actualización:
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_beta_release_notes
"Los paquetes sin CFBundleVersion no son válidos y no se pueden instalar correctamente en dispositivos o simuladores. CoreSimulator ahora comprueba y rechaza dichos paquetes antes en el proceso con un mensaje de error más claro. (49892531)"
Lo siguiente no solucionará el problema:
- Desinstalación de Xcode11 Beta
- Desinstalación y reinstalación de Xcode 10
Esto se debe a que
CoreSimulator.framework
está instalado en
/Library/Developer/PrivateFrameworks/CoreSimulator.framework
, que está fuera del paquete
Xcode.app
.
Cuando se vuelve a instalar, xcode10 detecta que la versión instalada actualmente de
CoreSimulator.framework
es más nueva que la que habría instalado xcode10, por lo que la deja como está.
REVISIÓN A CORTO PLAZO
- Desinstalar xcode11
- Instalar Xcode 10 (no es necesario reinstalarlo si ya está instalado)
-
Quitar
/Library/Developer/PrivateFrameworks/CoreSimulator.framework
- Inicie Xcode 10 y acepte instalar herramientas de línea de comandos
ARREGLO A LARGO PLAZO
Dado que este no es un error "real" sino que es el comportamiento previsto de Xcode11, eventualmente se deberán tomar medidas para garantizar que las aplicaciones siempre se construyan con una
CFBundleVersion
válida de
CFBundleVersion
.
En mi caso, estaba ejecutando la versión del simulador / coresimulador para 11 beta contra la versión 10.1 -> Matar y dejar que Xcode reabra el simulador para resolver el problema.
Es una nueva característica en Xcode11.
En nota de lanzamiento decía:
Los paquetes sin CFBundleVersion no son válidos y no se pueden instalar correctamente en dispositivos o simuladores. CoreSimulator ahora comprueba y rechaza dichos paquetes antes en el proceso con un mensaje de error más claro. (49892531)
Usted puede:
- Edite su CFBundleVersion por el estilo de este link
- Reinicia tu Xcode y simulador
- Corre de nuevo, verás que funciona de nuevo.
Cuando ejecute la aplicación con éxito en el simulador, puede volver a cambiar su CFBundleVersion nuevamente, encontrará que aún puede funcionar XD
Hay mucha desinformación en las respuestas aquí, así que quise dar una respuesta autoritaria.
El problema aquí es que la nueva versión de CoreSimulator.framework con Xcode 11 beta hace una validación en CFBundleVersion que las versiones anteriores no hicieron. Estas verificaciones son válidas y representan un problema en su aplicación, pero también hay un error en la forma en que se realizan las verificaciones que complica el problema.
Primero, arregle la CFBundleVersion en su Info.plist. Debe consistir solo en números y hasta dos períodos (es decir, ##. [. ## [. ##]], por ejemplo: 12.4.2).
En segundo lugar, después de arreglar CFBundleVersion, necesita
killall -9 CoreSimulatorBridge
porque,
killall -9 CoreSimulatorBridge
el valor antiguo está en caché en CoreSimulatorBridge, evitando que reconozca el nuevo valor.
Esta parte es un error y se tratará en una futura versión beta.
También me encontré con este mismo problema.
No llegué tan lejos como para probar algunas de las otras opciones que se ofrecen aquí, pero pude volver a crear el simulador simplemente eliminando el directorio / DerivedData.
Si no está seguro de dónde encontrarlo, simplemente haga lo siguiente: Xcode -> Preferencias -> Ubicaciones y seleccione la flecha junto a la ruta para Datos Derivados
También me pasó a mí, desperdicié casi un día entero buscando posibles causas.
Los pasos que finalmente solucionaron el problema y me permitieron instalarlo en el simulador:
- Salir de Xcode y simulador de iOS
-
Elimine
/Library/Developer
(el de la raíz), o cámbiele el nombre si desea mantener una copia de seguridad - Relanzar Xcode, de acuerdo con la instalación de herramientas de línea de comandos.
- Continúa el trabajo donde lo dejaste :)
Además de los pasos mencionados en la pregunta (desinstale Xcode 11 completamente, desinstale Xcode 10 y vuelva a instalarlo después), también intenté clonar el proyecto en otra ubicación, circulando a través de todas las ubicaciones posibles para obtener datos derivados, instalando otros tiempos de ejecución del simulador y probándolos. .
Ninguno de ellos funcionó, afortunadamente la aplicación de registro de la consola mostró la ruta del proceso que rechazó el paquete de la aplicación, fue uno de los binarios instalados por Xcode en
/Library/Developer/PrivateFrameworks/CoreSimulator.framework
.
Parece que Xcode 11 instaló una versión más nueva de los marcos, y Xcode 10 no los sobrescribió.
Al eliminar la carpeta completa
/Library/Developer
activó la instalación de las herramientas de la línea de comandos, que finalmente trajo de vuelta el tiempo de ejecución del simulador que funcionó correctamente en Xcode 10.
Tienes que amar las betas :)
Yo tuve el mismo problema. Me parece que las Notas de la versión Beta de Xcode 11 lo explicaron.
Bundles without a CFBundleVersion are invalid and can’t be properly installed on
devices or simulators. CoreSimulator now checks and rejects such bundles earlier in
the process with a clearer error message. (49892531)
Y este link es el formato de CFBundleVersion.
Cuando resolví este problema, descubrí si tenía el problema CFBundleVersion cuando ejecutaba la aplicación por primera vez. Entonces siempre tiene problemas, no importa si el formato es correcto o no. Así que reinicio el Xcode y el simulador, y cambio la CFBundleVersion a un formato correcto, la aplicación se ejecuta correctamente.