Pregunta

Tengo este proyecto que va a generar una biblioteca estática (llamada MySDK).Tengo un componente (de Analytics) como privado cocoapod.

Así que terminan con una estructura de archivo como este:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics

Cada proyecto tiene sus propias pruebas, pero ahora tengo que hacer algunas pruebas de integración por lo que en mi Podfile yo uso link_with, pero cada vez que hago esto puedo ejecutar las pruebas originales debido a que tengo un montón de duplicate symbol errores:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(Pods-dummy.o)
    /.../DerivedData/Build/Products/Release-iphonesimulator/libMySDK.a(Pods-dummy.o)
...
duplicate symbol _MYPREFIXFileTableIDColumnName in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(MYPREFIXDatabaseConstants.o)
    /.../Build/Products/Release-iphonesimulator/libMySDK.a(MYPREFIXDatabaseConstants.o)

Todos los errores provienen de mi Analytics componente.Todos los archivos, por lo que un problema tiene Las funciones de C (Estoy tratando de sqlite de forma directa) y/o (global) constantes, o son categorías, pero todos están prefijados.

Mi Podfile se parece a esto:

platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'

Mi podscpec para Analytics se parece a esto:

Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end

Hay una razón por la que estoy recibiendo de estos errores?Debo compilar estos archivos como no-arco o utilizar alguna marca especial?

Cualquier idea

¿Fue útil?

Solución

Finalmente llegué a trabajar!

No me han vinculado mi vainas MySDKTests, ya que el producto final (laMySDK, una biblioteca, ya estaba en contra de la vinculación de Analytics).

Sin embargo, agregue lo siguiente a mi podspec archivo:

  s.public_header_files = 'Analytics/**/*.h'

  s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }

La segunda línea no es realmente necesario, porque no es la modificación de mi MySDKTests de destino.Tuve que agregar HEADER_SEARCH_PATHS a mi MyDSKTests para hacer esos títulos disponibles para las pruebas.

He leído que algunas personas utilizan con éxito LIBRARY_SEARCH_PATHS en su lugar, pero esto no funciona para mí.Si alguien de cuidado a explicar por qué, eso sería grandioso, pero por ahora voy a dejar mi solución aquí para que otras personas en caso de que todo problema similar.

Ver esta otra pregunta para información relacionada

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top