Soporte Swift no válido: los archivos no coinciden

Acabo de volver a escribir una aplicación en Swift 2. Intento subir la aplicación a iTunes Connect (a través de Xcode 7 GM) para realizar pruebas internas.

Luché con un error de “Soporte de Swift inválido” por un tiempo ( que tiene otras preguntas relacionadas ) … pero ahora ha cambiado a algo un poco diferente.

El error de Apple ahora dice:

Soporte Swift inválido

Los archivos libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib no coinciden

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib

Asegúrese de que los archivos sean correctos (?), Reconstruya su aplicación y vuelva a enviarla.

No aplique el postprocesamiento a

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib.

No he podido encontrar errores similares buscando “No aplicar postprocesamiento”, “Asegúrese de que los archivos sean correctos, reconstruya su aplicación y vuelva a enviarla”, etc.

¿Alguien sabe cómo puedo “Asegúrate de que los archivos sean correctos” –o– tenga alguna otra recomendación? Gracias.

El mismo problema aqui. Creo que esto es muy probablemente un error de las herramientas de desarrollo, relacionadas con el código de bits.

Acabo de encontrar la solución para esto.

  1. Archive su aplicación con el nuevo número de comstackción 🙁
  2. Encuentre el archivo (archivo .xcarchive) en Finder desde el Organizador “Mostrar en el buscador”
  3. Abra el paquete y busque directorios como Products/Applications/YourApp.ipa/Frameworks/ y SwiftSupport/iphoneos/
  4. Copie todos los archivos libswiftXxx.dylib de SwiftSupport/iphoneos/ en Products/Applications/YourApp.ipa/Frameworks/ y sobrescriba
  5. Ahora, carga en el App Store desde el Organizador

Con este proceso, puedo subir mi comstackción. Ahora estoy esperando una revisión.

NOTA:

Estoy usando CocoaPods, y la opción ENABLE_BITCODE era NO.

Editar: CocoaPods 0.39.0 ha sido liberado, lo que soluciona este problema.

Como se mencionó en @orkenstein , hay una solución más simple al comentar algún código en Pod-frameworks.sh . Estoy incluyendo un poco más detalles aquí.

En el directorio de proyectos de Xcode, abra Pods/Target Support Files/Pods/Pods-frameworks.sh

Comente las siguientes líneas:

 # Embed linked Swift runtime libraries local basename basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})" local swift_runtime_libs swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" code_sign_if_enabled "${destination}/${lib}" done 

=>

 # Embed linked Swift runtime libraries # local basename # basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})" # local swift_runtime_libs # swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) # for lib in $swift_runtime_libs; do # echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" # rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" # code_sign_if_enabled "${destination}/${lib}" # done 

¡Guarde Pods-frameworks.sh y debería estar listo!

La solución para este problema se ha fusionado y está disponible en la última versión de 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

Para obtener la última versión de CocoaPods ejecuta la gem install cocoapods --pre

De forma alternativa, siga las instrucciones para ejecutar funciones inéditas: http://guides.cocoapods.org/using/unreleased-features

Una vez que tenga la última versión de CocoaPods, ejecute la pod install nuevamente.

Estaba usando fastlane gym 1.9.0 para construir mi aplicación y seguía siendo rechazada por Apple porque los archivos no coincidían, mientras que si lo cargué a través de XCode 8, fue aceptado. Comprobé las libs rápidas en la rápida carpeta de soporte de ipa y en la carpeta de Frameworks, encontré que las libs en la carpeta rápida de soporte eran para veloz 2.3 mientras que en la carpeta de Frameworks era rápido 3. Así que en mi archivo de gimnasio agregué la cadena de herramientas opción:

 gym( scheme: "CoCadre", configuration: "Production Release", clean: true, use_legacy_build_api: false, toolchain: "com.apple.dt.toolchain.Swift_2_3" ) 

* Tenga en cuenta que tuve que cambiar use_legacy_build_api a falso para usar la opción toolchain

Para usar la opción toolchain, necesita establecer use_legacy_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185

Hay una solución un poco menos compleja, que se encuentra en GitHub :

Eché un vistazo en Pods-frameworks.sh y encontré una sección comentada como:

Incrustar bibliotecas de tiempo de ejecución Swift vinculadas
Comentar el bloque de código que copia estas bibliotecas (y el código las firma) parece haber solucionado mis problemas de envío. No he buceado aún más para ver si solo es la copia de ellos lo que causa los problemas o si es la firma del código. Me estoy saliendo un poco de mi profundidad allí.

  1. Actualice sus cocoapods a la última versión, escriba sudo gem install cocoapods en la terminal.
  2. Ejecute la pod update en el directorio de su proyecto.
  3. Recuerde establecer la opción Habilitar Bitcode a NO para la Debug para todos sus pods.
  4. Fijo

El problema se solucionó porque el siguiente código en Pods-frameworks.sh :

 # Embed linked Swift runtime libraries local basename basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})" local swift_runtime_libs swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" code_sign_if_enabled "${destination}/${lib}" done 

fue cambiado a:

 # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then local swift_runtime_libs swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" code_sign_if_enabled "${destination}/${lib}" done fi 

Mi solución para esto:

Estoy usando Reveal a través de Cocoapods y Reveal necesita deshabilitar Bitcode. Así que incluí Reveal (debería funcionar para cualquier otro Framwork) solo para Debug:

 pod 'Reveal-iOS-SDK', :configurations => ['Debug'] 

Como mi Reveal ahora solo está configurado para Debug, deshabilité Bitcode solo para Debug.

enter image description here

Con esta configuración todo funciona bien, sin ningún truco …

He visto este error al integrar bibliotecas que no son compatibles con el código de bits (como la versión estable actual de New Relic). La solución es eliminar las bibliotecas, deshabilitar el código de bits (y posiblemente no poder enviarlo a la tienda) o esperar binarios actualizados que admitan el código de bits de su proveedor de biblioteca.

El error para mí fue que construí con el perfil Adhoc en lugar del perfil de la App Store para cargar el spa en la tienda de aplicaciones.