Problem
This is happening with two static libraries where I don't have access to the source code.
I'm trying to install the Rdio SDK into my project (using these instructions). My project already uses a lot of Google's services, and there seems to be a C function naming conflict between Rdio and Google:
duplicate symbol _CreateDispatchTimer in:
/Users/abdullahbakhach/dev/ios/Vibereel_IOS/Vibereel/Pods/Google/Libraries/libGGLCore.a(GMRAlarm.o)
/Users/abdullahbakhach/dev/ios/Vibereel_IOS/Vibereel/Vibereel/rdio-ios-3.1.0/Rdio.framework/Rdio(RDPlayer.o)
ld: 1 duplicate symbol for architecture armv7
Google Core is installed on my project using cocoapods, on my podfile I have:
pod 'Google/SignIn'
and in the Podfile.lock I have:
- Google/Core (1.1.0):
- GoogleInterchangeUtilities (~> 1.0)
- GoogleNetworkingUtilities (~> 1.0)
- GoogleSymbolUtilities (~> 1.0)
- GoogleUtilities (~> 1.1)
- Google/SignIn (1.1.0):
- Google/Core
- GoogleSignIn (~> 2.0)
- GoogleAppUtilities (1.0.0):
- GoogleSymbolUtilities (~> 1.0)
- GoogleAuthUtilities (1.0.1):
- GoogleNetworkingUtilities (~> 1.0)
- GoogleSymbolUtilities (~> 1.0)
- GoogleInterchangeUtilities (1.0.0):
- GoogleSymbolUtilities (~> 1.0)
- GoogleNetworkingUtilities (1.0.0):
- GoogleSymbolUtilities (~> 1.0)
- GoogleSignIn (2.2.0):
- GoogleAppUtilities (~> 1)
- GoogleAuthUtilities (~> 1)
- GoogleNetworkingUtilities (~> 1)
- GoogleUtilities (~> 1)
- GoogleSymbolUtilities (1.0.0)
- GoogleUtilities (1.1.0):
- GoogleSymbolUtilities (~> 1.0.0)
What I tried/researched
I've done some research and tried to see if i could somehow change/remove/hide that method name in either of those two libraries.. but then I can across this apple documentation:
There is no mechanism for hiding an Objective-C class or method defined in a dynamic library from the clients of that library.
So I'm kind of stuck.. any ideas?