xcode linker-errors flurry testflight cocoapods

xcode - Cocoapods-Flurry & TestFlight-Símbolos indefinidos para la arquitectura



linker-errors (3)

Estoy actualizando mi proyecto para usar Cocoapods y cuando intento crear mi proyecto para un dispositivo iOS o para un simulador, obtengo:

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_TestFlight", referenced from: objc-class-ref in PhotoPreviewViewController.o "_OBJC_CLASS_$_Flurry", referenced from: objc-class-ref in MyAppDelegate.o objc-class-ref in InitialSetupViewController.o objc-class-ref in InitialDownloadViewController.o objc-class-ref in HistoryViewController.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

(con la arquitectura diferente por supuesto)

Debajo de "Vincular binario con bibliotecas", libPods.a es negro, así que no creo que haya ningún problema allí. También está haciendo autocompletado para ambos, así que no estoy seguro de por qué no los encuentra en el momento de la compilación.

¿Alguna sugerencia?


Cocoapods, por alguna razón, no incluye libTestFlight.a en el destino TestFlight. Por lo tanto, para solucionar este problema, cada vez que ejecute la pod install , debe:

  1. Abra el destino Pods-TestFlightSDK en el proyecto Pods.xcodeproj
  2. Abrir la pestaña Build Phases
  3. Agregue (a través de "Agregar otro ...") libTestFlight.a para libTestFlight.a menú desplegable Link Binary With Libraries

libTestFlight.a se puede encontrar en su [$SRCROOT]/Pods/TestFlightsSDK .

¡Haz lo mismo con Flurry y listo!

Actualización del 1 de mayo de 2014

Parece que "falta la integración de la biblioteca" es un síntoma del uso del indicador --no-integrate (por ejemplo, pod install --no-integrate ).

Y para hacer la vida más fácil, he escrito un script para agregar las bibliotecas automáticamente después de ejecutar el pod (update|install) --no-integrate

Ajuste según sea necesario y agregue esto a la parte inferior de su Podfile :

# Use post_install to automatically include required libraries post_install do |installer_representation| installer_representation.project.targets.each do |target| if target.name == ''Pods-TestFlightSDK'' libFile = installer_representation.project.new_file(''TestFlightSDK/libTestFlight.a'') end if target.name == ''Pods-Brightcove-Player-SDK'' libFile = installer_representation.project.new_file(''Brightcove-Player-SDK/Library/libBCOVPlayerSDK.a'') end unless libFile.nil? puts " - Adding %s to %s Frameworks Build Phases" % [libFile, target.name] target.frameworks_build_phase.add_file_reference(libFile) end end end


He encontrado que pueden haber varias razones de este problema:

  1. libPod.a no se incluye en "enlace binario con bibliotecas" (intente eliminar la referencia y agregar nuevamente)
  2. El compilador no puede encontrar la biblioteca. Comportamiento extraño, intente escribir la ruta a las bibliotecas usando $ {PODS_ROOT} en la "ruta de búsqueda de la biblioteca". ($ (PODS_ROOT) / TestFlightSDK por ejemplo)
  3. El compilador no puede encontrar el encabezado. intente escribir la ruta a los encabezados utilizando $ {PODS_ROOT} en "Ruta de búsqueda de encabezados".

Espero que esto sea de ayuda.


Lo siguiente me funcionó:

En la Configuración de compilación, no invalide "Otros indicadores de vinculador". Si está en negrita, selecciónelo y presione la tecla de retroceso, debería volver a su estado normal. Si no está arreglado, elimine todas las banderas, elimine y vuelva a instalar Pods y eso debería solucionarlo.