xip for ios xcode10 ios12

ios - for - xcode 10 xip



Xcode 10(iOS 12) no contiene libstdc++ 6.0.9 (14)

Cópielo desde el antiguo Xcode (9.4) para dispositivos físicos iOS. Para problemas con el simulador, Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator . Parece que Apple quitó soporte de compatibilidad para el simulador. Simplemente descargue el simulador de iOS 11.4 y se puede ejecutar en él.

Descargué el Xcode más reciente de Apple, pero descubrí que no puedo buscar en la biblioteca llamada "libstdc ++ 6.0.9".


Debería eliminar libstdc ++ de otras banderas del enlazador en su proyecto xcode

Mira esto :


Debido a que Apple elimina libstdc ++ en Xcode 10.0, así que si desea resolver el problema, puede intentar copiar manualmente el archivo a lib.

1. iPhoneOS y iPhoneSimulator file

copie el archivo: libstdc++.6.0.9.tbd y libstdc++.6.tbd y libstdc++.tbd a:

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

2. archivo iOS.simruntime

copie el archivo: libstdc++.6.0.9.dylib y libstdc++.6.dylib y libstdc++.dylib a:

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib

Esto funcionará. No copie los archivos .dylib de / usr / lib a simruntime.

Lista de archivos y rutas para copiar de Xcode 9.4.1 a Xcode 10.2.1

A) Copie el archivo: libstdc ++. 6.0.9.tbd y libstdc ++. 6.tbd y libstdc ++. Tbd

de> Xcode9_41 / Xcode9_41.app / Contenidos / Desarrollador / Plataformas / iPhoneSimulator.platform / Desarrollador / SDKs / iPhoneSimulator.sdk / usr / lib

a> /Aplicaciones/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

B) Copie el archivo: libstdc ++. 6.0.9.dylib y libstdc ++. 6.dylib y libstdc ++. Dylib

de> Xcode9_41 / Xcode9_41.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / Library / CoreSimulator / Profiles / Runtimes / iOS.simruntime / Contents / Resources / RuntimeRoot / usr / lib

a> /Aplicaciones/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib


He enfrentado el mismo problema después de actualizar a xcode 10. Resolví este problema descargando libstdc ++. 6.0.9.tbd y libstdc ++. 6.tbd de Here .

Luego copié estos archivos a mi carpeta de proyectos. Después de eso, agregué estas bibliotecas en marcos y bibliotecas vinculadas siguiendo estos pasos: Proyecto> Destino> General> Bibliotecas y marcos vinculados, haga clic en (+)> Haga clic en ''Agregar otros''> Navegue a su carpeta de proyecto en ''Abrir archivo'' y seleccione bibliotecas y añadir.

Ahora ejecuta el proyecto se ejecutará perfectamente ...


La respuesta de Jeremy Huddleston Sequoia me dio la dirección para resolver este problema. Así que antes de seguir adelante, asegúrese de haber leído su respuesta.

Incluso después de actualizar la biblioteca de C ++ en su proyecto, podría enfrentar un error de enlace donde Xcode no puede vincular su proyecto con esta libstdc ++ lib.

La solución es: si la estructura de su proyecto tiene libstdc ++ incluido, es posible que se haya vuelto roja porque Xcode no pudo encontrar la referencia. Si elimina esa entrada de la estructura del proyecto y agrega la nueva biblioteca (libc ++), está listo.


Para el simulador, simplemente elimine libstdc ++. 6.0.9.tbd de los marcos y bibliotecas vinculados .


Para mí, se agregó "stdc ++. 6" durante la pod install Lo encontré en ''Pods / Target / Support / Files / Pods-SomeTarget / Pods-SomeTarget.debug.xcconfig''

Para resolver el problema, puede usar el controlador post_install en Podfile:

post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "Pods-SomeTarget” puts "Updating #{target.name} OTHER_LDFLAGS" target.build_configurations.each do |config| xcconfig_path = config.base_configuration_reference.real_path xcconfig = File.read(xcconfig_path) new_xcconfig = xcconfig.gsub(''-l"stdc++.6" '', '''') File.open(xcconfig_path, "w") { |file| file << new_xcconfig } end end end end


Pude arreglar el problema de compilación copiando los archivos necesarios de 9.4 a 10.1, tanto en las plataformas como en el tiempo de ejecución. Pero solo resuelve los casos con simulador. Mi aplicación todavía se atasca al inicio (pantalla de inicio) cuando se ejecuta en un dispositivo físico.


Puedes copiarlo de Xcode antiguo (9.4). Deberia de funcionar.

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/ cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/


Tomado de las notas de lanzamiento de Xcode 10 Beta 2 y aplicable a todas las versiones futuras de Xcode:

La construcción con libstdc ++ está en desuso con Xcode 8 y no es compatible con Xcode 10 cuando se dirige a iOS. Los proyectos de C ++ ahora deben migrar a libc ++ y se recomienda establecer un destino de implementación de iOS 7 o posterior. Además de cambiar la configuración de compilación de la Biblioteca estándar de C ++, los desarrolladores deberían auditar las banderas de vinculador y las dependencias de destino para eliminar las referencias a libstdc ++ (incluidos -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd y libstdc ++. 6.0. 9.dylib). Las dependencias del proyecto, como los archivos estáticos que fueron construidos contra libstdc ++, también deberán ser reconstruidas contra libc ++. (40885260)

Es poco probable que Apple vuelva a soportar libstdc ++ de nuevo.


Xcode 10 cancela la biblioteca libstdc ++ con la lib incorporada, por lo que deberíamos copiar el archivo a la lib de forma manual.

copie el archivo: (libstdc ++. 6.0.9.tbd) y (libstdc ++. 6.tbd) en:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

y

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib

(Tenga en cuenta la distinción "iPhoneOS" y "iPhoneSimulator")

limpia xcode y reconstrúyelo.

Here está el archivo.


libstdc ++ fue desaprobado hace 5 años. Las plataformas más recientes de Apple (tvOS y watchOS) no lo admiten.

El soporte se eliminó del tiempo de ejecución del simulador de iOS 12.0, pero permanece en el tiempo de ejecución de iOS 12.0 (dispositivo) para la compatibilidad binaria con las aplicaciones de envío.

Debe actualizar su proyecto para usar libc ++ en lugar de libstdc ++ estableciendo la configuración de compilación CLANG_CXX_LIBRARY ("Biblioteca estándar de C ++") en libc ++.

Si tiene bibliotecas estáticas que dependen de libstdc ++. Tbd, puede solucionarlo por ahora copiando el archivo de los SDK en Xcode 9.4 (y libstdc ++. *. Dylib en el tiempo de ejecución del simulador de iOS), pero eso no es un largo plazo solución. Debe ponerse en contacto con el proveedor de esas bibliotecas y solicitar versiones creadas con libc ++.


libstdc++ se elimina en iOS 12.

Desearía tener una mejor fuente que un ingeniero de Apple en Twitter, pero eso es todo lo que tengo.

@jeremyhu @jeremyhu @jeremyhu @jeremyhu @jeremyhu

Edición: Aquí hay una mejor fuente, notas de parche de Xcode 10

La construcción con libstdc ++ está en desuso con Xcode 8 y no es compatible con Xcode 10 cuando se dirige a iOS. Los proyectos de C ++ ahora deben migrar a libc ++ y se recomienda establecer un destino de implementación de iOS 7 o posterior. Además de cambiar la configuración de compilación de la Biblioteca estándar de C ++, los desarrolladores deberían auditar las banderas de vinculador y las dependencias de destino para eliminar las referencias a libstdc ++ (incluidos -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd y libstdc ++. 6.0. 9.dylib). Las dependencias del proyecto, como los archivos estáticos que fueron construidos contra libstdc ++, también deberán ser reconstruidas contra libc ++. (40885260)