Cocoapods link_with XCTest genera duplicar símbolo errores
-
20-12-2019 - |
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
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