Soporte Swift no válido / implementación inválida de Swift

Me gustaría upload una aplicación escrita en swift. El cargador de aplicaciones ofrece la aplicación con éxito, pero después de unos minutos recibo una respuesta de Apple que dice:

Soporte Swift no válido: el package contiene una implementación no válida de Swift. Es posible que la aplicación se haya creado o firmado con herramientas que no cumplan o que no estén en uso. Visite developer.apple.com para get más información.

Utilizo xCode Versión 6.0.1 (6A317), Swift iOS SDK 8.0 y simplemente compilo la aplicación con xcode.

¿Dónde puedo encontrar información sobre cómo get una implementación válida de swift? Apple no dice nada concreto.

Gracias

Tuve un problema similar. Para solucionarlo y poder enviar una compilation a iTunesConnect, tuve que hacer lo siguiente:

  • Establezca el indicador EMBEDDED_CONTENT_CONTAINS_SWIFT en YES en la configuration de destino
  • Asegúrese de que Build Phases no incluya ningún otro objective extraño.
  • Logout todas las counts de Apple Developper desde Xcode e inicie session con la aplicación con la que desea impulsar la aplicación .
  • Archive y envíe la aplicación with Xcode y NO con Application Loader.

¿Por qué necesitaba cerrar session en todas mis counts de Apple Developer?

Porque Xcode no sabe qué count utilizar para cargar el binary. Application Loader te pregunta al principio, pero luego, la compilation cargada no es válida …

ACTUALIZAR:

Desde Xcode 7.1 y las nuevas versiones de Swift volví a get el error. La solución actual es hacer lo siguiente:

  • Cree un file localmente en Xcode (no funciona en mi CI)
  • En Organizador, exporte como una compilation de AppStore.
  • Utilice el cargador de aplicaciones para cargar el file binary.

Después de unos minutos (~ 10) la compilation debería estar disponible en iTunesConnect.

El problema podría provenir de los cocoapod si está usando las vainas Swift. Para solucionarlo, use la twig xcode7-invalid-swift-support-fix ( uso ). O hágalo manualmente editando Pods / Target Support Files / Pods / Pods-frameworks.sh y comentando el bloque después

  # Embed linked Swift runtime libraries 

Más información:

Solución para xcodebuild

  • crear una carpeta temporal

  • descomprimir el file ipa a la carpeta temporal

  • cree la carpeta SwiftSupport dentro de la carpeta temporal
  • copie swift libs desde Payload / * app / framworks a la carpeta SwiftSupport
  • El file ipa del package contiene la carpeta temporal interna (tenemos las carpetas Payload y SwiftSupport).

Aquí mi script de shell para agregar Swift libs a ipa

https://github.com/huhuvipi/VH_ipa_packger

Si ya existe un file ipa, simplemente:

path/to/package_ipa.sh /path/to/ipafile

¿Construyes con la línea de command (xcodebuild)?

Si es así: encontré el mismo problema. El problema es que el file ipa generado no es válido. Falta la carpeta SwiftSupport. XCode agrega la carpeta cuando se crea un proyecto con Swift con Xcode Gui.

El problema se describe en este hilo del foro de desarrolladores de Apple con una reference a un ticket de radar abierto: https://devforums.apple.com/message/1042117#1042117

¿Tiene alguna otra versión de Xcode instalada?

Abra su último Xcode, luego vaya a las preferences (menu Xcode -> Preferences), cambie a la pestaña Ubicaciones y verifique que las Herramientas de la Línea de Comando coincidan con su versión Xcode.

Si está construyendo a través de xcodebuild o Xcode Server (o cualquier otra cosa que no sea la window del Organizador en Xcode), el IPA le falta a SwiftSupport . Ver esta discusión del problema.

La solución es esencialmente exportar el IPA usted mismo. CaveJohnson tiene un command para exportar un IPA con el SwiftSupport correcto, por lo que puede crear un IPA así:

 cavejohnson xcodeGUITricks --archive-path my.xcarchive --new-ipa-path myapp.ipa 

Estaba con el mismo problema y probé todo lo que se propuso, pero siempre fallé … Mis aplicaciones generan carpetas SwiftSupport, acabo de resolver con esta solución:

Gracias por enviar ese file .ipa. El problema es causado por libswiftXCTest.dylib en el directory SwiftSupport. Ese dylib se utiliza probando objectives y es normal que las comstackciones de desarrollo se incluyan, pero una compilation de files para la App Store no debe include este dylib.

Para resolver este problema, siga estos pasos:

  1. Abra su proyecto Xcode
  2. Seleccione Producto> Esquema> Editar esquema
  3. Haz clic en Build en la barra lateral izquierda
  4. Para su objective de testing, desmarque la checkbox Archivar
  5. Haga clic en el button Cerrar
  6. Seleccione Producto> Archivo
  7. Envíe el último file a la App Store

También tuve este problema

Intenté configurar el indicador de EMBEDDED_CONTENT_CONTAINS_SWIFT en YES y NO. Ambos no estaban funcionando para mí.

Eventualmente lo probé con CaveJohnson mencionado por Drew. Pero eso tampoco funcionó.

Por fin, creé un nuevo proyecto e inserté mis files y frameworks rápidos, etc. ¡Eso fue todo!

La solución en mi caso: crear un nuevo proyecto

OK, he estado trabajando en esto por muchas horas y finalmente encontré una solución.

Para premarcar la respuesta aquí es lo que hice: – probé todo en las respuestas anteriores – pasé una hora en el teléfono con el soporte de Apple Tech. – Lea cada foro de desarrolladores de Apple que tenga que ver con "swift no válido" en su networking de desarrolladores. Intenté cada una de las soluciones propuestas.

Finalmente desinstalé y reinstalé Xcode y qué sabes, funciona ahora. A veces no sé por qué esta no es mi primera idea para una solución .

Verifique su firma de código. Tuve este error al usar la firma automática. Puse mi perfil de dev para el perfil de desarrollo y producción para la versión de lanzamiento y el error desapareció.

Solución simple:

Hola, tuve el mismo problema y debajo está la solución:

Simplemente establezca el indicador EMBEDDED_CONTENT_CONTAINS_SWIFT en NO en la configuration de compilation de Target, Project y en todas partes como testTarget también.

Descubrí que cambiar el "contenido embedded contiene código Swift" de SÍ a NO en la configuration de compilation de la aplicación principal (y dejarlo configurado en SÍ en la extensión) se ejecutaría en el reloj (y el teléfono). Al mismo time que subí ese binary, Apple debe haber realizado un cambio en el backend ITC ya que mis otras comstackciones cargadas que habían sido marcadas como "Binario inválido" volvieron a "Procesamiento" y luego pasaron la pantalla a "Inactivo".

Entonces envié la compilation con "Contenido embedded Contiene Código Swift" SÍ en la extensión solo para revisión.

Aplicación principal: contenido incorporado contiene código Swift = SÍ (si es un proyecto rápido. De lo contrario NO)

Extensión WatchKit: El contenido embedded contiene el código Swift = SÍ (si es un proyecto rápido. De lo contrario NO)

App WatchKit: el contenido embedded contiene el código Swift = NO (en cualquier caso)

Aquí hay una solución al usar la línea de command http://www.matrixprojects.net/p/xcodebuild-export-options-plist/

Básicamente, todo lo que hay que hacer es crear xcodebuild exportOptions plist, que se ve así:

 <?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>teamID</key> <string>MYTEAMID123</string> <key>method</key> <string>app-store</string> <key>uploadSymbols</key> <true/> </dict> </plist> 

La key más importante aquí es método app-store

Y luego ejecuta compilation xcode con file

 xcodebuild -scheme MyApp -archivePath builds/MyApp.xcarchive archive 

Después de ejecutar xcrun con file de export

 xcrun xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath builds/MyApp.xcarchive -exportPath builds 

Yo estaba enfrentando el mismo problema. La solución que funcionó para mí fue actualizar mi xcode y luego crear un nuevo proyecto y copyr todo mi trabajo a ese proyecto.

seriamente. Pasé dos días en este problema y probé todos los methods anteriores. ¡Nada funciona! Finall. Utilicé el Mac de mi amigo. Y esta vez, funciona. Después de eso me di count de que había descargado el xcode del centro de desarrolladores que no estaba en la tienda de aplicaciones Mac. Así que eliminé todo xcode de mi Mac y reinstalé el xcode de la tienda de aplicaciones, y funcionó. Y no hay diferencia entre las dos versiones, que comparten exactamente el mismo número de versión.

Después de la actualización del proyecto Swift en el nuevo xcode obtuve un error similar y debajo está mi solución.

Abra el file project.pbxproj y elimine la siguiente línea

EMBEDDED_CONTENT_CONTAINS_SWIFT = SÍ;

y fue capaz de enviar la aplicación con éxito.

Tuvimos un problema similar después de actualizar a Xcode 7. Tuve que agregar la opción -exportOptionsPlist y el method suministro y el teamID . Ensució las cosas pero ahora funciona.

Solución de cinco pasos:

  1. Vaya a la configuration de compilation y haga que el indicador Contenido embedded contenga Código Swift -> , si su código contiene código Swift parcial o está completamente hecho en Swift
  2. Archiva tu compilation usando Xcode-> Producto-> Archivo
  3. Exportar la compilation de files, de repente verá que el tamaño de compilation de la diferencia será de 40+ MB, esto se debe a que XCode agregó la carpeta SwiftSupport que faltaba
  4. Ahora carga esta compilation con el cargador de aplicaciones
  5. Si esto no funciona, compruebe que si tiene múltiples XCode en su sistema, pase a Xcode-> Preferences-> Ubicación-> Las líneas de command tienen el mismo Xcode más reciente o el mismo del menu desplegable seleccionado en el que ha hecho la encoding & volado. hecho.

Esto es un inconveniente ya que swift transporta el equipaje y debe ser compatible con la versión anterior y el código Objective C.

Mis muchas horas fueron desperdiciadas, espero que encuentres esto útil;)

Pensé que debería compartirlo, ya que pasé algunos días tratando de resolver este problema.

Todos siguen diciendo que configure EMBEDDED_CONTENT_CONTAINS_SWIFT = NO o =YES

Tenía una aplicación para iPhone escrita completamente en Objective-C y una aplicación Watch Kit escrita completamente en Swift.

Configuro EMBEDDED_CONTENT_CONTAINS_SWIFT = NO para todo (Objetivo del proyecto, objective de la aplicación iPhone, Pruebas, UITests y WatchKit).

El lugar donde establezco EMBEDDED_CONTENT_CONTAINS_SWIFT = YES está en la extensión WatchKit. Esto resolvió mi problema y pude upload a la App Store a través de Xcode.

Espero que esto pueda ayudar a alguien!

Pude arreglar esto abriendo el file, entrando en SwiftSupport y eliminando la carpeta para WatchOS porque estaba vacía. Creo que mi objective Watch estaba configurado para incrustar Swift, por lo que incluía la carpeta pero no generaba nada dentro. Entonces iTC vio una carpeta vacía y errores. Al eliminar la carpeta vacía funcionó.

Para mí, esto es lo que funcionó para la distribución.

Ir a -> Xcode-> producto-> Archivo-> Exportar

Después de esto, se creará una carpeta con la date actual. Puede savelo en algún lugar para usarlo más tarde. A continuación, abra el cargador de aplicaciones y puede enviar a itunesConnect desde aquí. Todo se borrará. Asegúrese de crear el file Construir (.ipa) haciendo clic en la opción Exportar en la window del organizador. Luego use el cargador de aplicaciones para enviar la compilation a iTunesConnect.

Espero que ayude. Déjeme saber si usted necesita más información.

Si tiene cocoapods, simplemente elimine todos los pods y luego reinstale la pod install .

Muy molesto ya que tengo un error de -22421 al cargar directamente desde Xcode y la compatibilidad con Swift no válida al usar Application Loader

En realidad, simplemente resolví esto con una solución completamente diferente, no relacionada y realmente extraña. Tenía el error anterior, pero NO cambió nada en el Proyecto o construye Entorno.

Después de muchos Rebuild y Upload Cycles, resultó que se trataba de un certificate Ad-Hoc que estaba causando este problema. El uso de fastlane y la configuration del indicador de gym ad_hoc en falso, así como el uso de una Release configuration para la compilation (no estoy seguro de cuál la solucionó) finalmente funcionó. Aquí está mi línea de gym :

 identifier = "de.xxx.yyy" config = "Release" ad_hoc = false scheme = "Schema" gym(verbose: false, scheme: scheme, codesigning_identity: "iPhone Distribution: YTB)", configuration: config)