Compatibilidad con Swift no válida: los archivos no coinciden

116

Acabo de reescribir una aplicación en Swift 2. Estoy intentando cargar la aplicación en iTunesConnect (a través de Xcode 7 GM) para realizar pruebas internas.

Luché con un error de "Soporte Swift no vá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 no vá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/libswift. dylib

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

No aplique el posprocesamiento a

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

No pude encontrar errores similares al buscar "No aplicar procesamiento posterior", "Asegúrese de que los archivos sean correctos, reconstruya su aplicación y vuelva a enviarla", etc.

¿Alguien sabe cómo puedo "Asegurarme de que los archivos sean correctos", o tengo otras recomendaciones? Gracias.

Dan
fuente
Tengo exactamente el mismo problema. ¿Alguna solución?
Beny Boariu
¿Estás renunciando a esta aplicación? ¿Es esta una carga directa desde Xcode?
Andy
@Andy carga directa desde Xcode inmediatamente después de archivarlo.
Dan

Respuestas:

82

El mismo problema aqui. Creo que lo más probable es que se trate de un error de las herramientas de desarrollo, relacionado con Bitcode.

Acabo de encontrar la solución para esto.

  1. Archive su aplicación con el nuevo número de compilación :(
  2. Busque el archivo (archivo .xcarchive) en el Finder del Organizador "Mostrar en el Finder"
  3. Abra el paquete y busque directorios como Products/Applications/YourApp.ipa/Frameworks/ySwiftSupport/iphoneos/
  4. Copiar todos los libswiftXxx.dylibarchivos desde SwiftSupport/iphoneos/dentro Products/Applications/YourApp.ipa/Frameworks/y sobrescribir
  5. Ahora, cargue a la App Store desde el Organizador

Con este proceso, logro cargar mi compilación. Ahora estoy esperando revisión.

NOTA:

Estoy usando CocoaPods y la ENABLE_BITCODEopción era NO.

cresta de gallo
fuente
¿A qué SDK de iOS se dirige? Pensé que no se podía enviar a la tienda con el código de bits desactivado.
JAL
3
En mi caso, SwiftSupport / iphoneos / está vacío.
Lim Thye Chean
2
La validación se realizó correctamente para mí, pero la compilación aún se realiza Processingdespués de aproximadamente 12 horas en la sección de Presentación de iTunes Connect.
ldiqual
2
hola gracias por esto! Todavía recibo una advertencia sobre el archivo de análisis de API demasiado grande cl.ly/image/0s0N0s441s0X , pero lo importante es que aún se aprobó y pudo ingresar a TestFlight.
ded
1
¿Qué debo hacer si no hay una carpeta SwiftSupport / iphoneos / dentro de mi .ipa?
Alexander Yakovlev
51

Editar: ¡ CocoaPods 0.39.0 ha sido lanzado, lo que soluciona este problema!

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

En el directorio de su proyecto 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

¡Ahorre Pods-frameworks.shy estará listo para comenzar!

DJ Tarazona
fuente
4
Esto funcionó para mí. Solo un aviso, si ejecuta pod-install o pod-update, es posible que tenga que comentarlo nuevamente.
Max Alexander
Edición de Cocoapods aquí: github.com/CocoaPods/CocoaPods/issues/4188 , puedes probar este PR: github.com/CocoaPods/CocoaPods/pull/4221 con esas instrucciones: guides.cocoapods.org/using/unreleased-features
ldiqual
actualizó cocoaPods 0.39.0 y no resuelve este problema para mí
nwales
@DJ Tarazona ¡¡Gracias por tu receta !! Me funcionó totalmente, incluso cuando actualicé la gema de los cocopods a la última versión
Jorge Vicente Mendoza
16

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

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

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

Alternativamente, 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, ejecútelo pod installnuevamente.

Will Y
fuente
Este es el
generador de
Vienen las lágrimas. ¡Gracias!
MQLN
El error no tiene que ver específicamente con CocoaPods; estamos experimentando el mismo problema y no usamos CocoaPods.
devios1
8

Estaba usando Fastlane Gym 1.9.0 para crear mi aplicación y Apple la rechazaba porque los archivos no coincidían, mientras que si los cargaba a través de XCode 8, se aceptaba. Revisé las bibliotecas rápidas en la carpeta de soporte rápido de ipa y en la carpeta Frameworks, encontré que las bibliotecas en la carpeta de soporte rápido eran para swift 2.3, mientras que en la carpeta 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 de cadena de herramientas

Para usar la opción de cadena de herramientas, debe configurar use_legacy_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185

Zhong Huiwen
fuente
¡Gracias! También estoy usando Fastlane y Gym y esto solucionó el problema.
Eystein Bye
Gracias, eso también ayudó a solucionar el problema al usar Gym. Tenga en cuenta que todavía pude usar esta solución con use_legacy_build_api: true
Viktor Malyi
6

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
Al 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 profundizado aún para ver si es solo la copia lo que causa los problemas o si es la firma del código. Estoy saliendo un poco de mi profundidad allí.

Orkenstein
fuente
4
  1. Actualice sus cocoapods a la última versión, escriba sudo gem install cocoapodsterminal.
  2. Ejecutar pod updatebajo el directorio de su proyecto.
  3. Recuerde establecer Habilitar código de bits en NO para la Debugopción 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
Bartłomiej Semańczyk
fuente
2

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, desactivé Bitcode solo para Debug.

ingrese la descripción de la imagen aquí

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

Urkman
fuente
0

He visto que se produce este error al integrar bibliotecas que no admiten 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 del proveedor de su biblioteca.

JAL
fuente
0

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 App Store.

jarora
fuente