我知道duplicate symbol
是一个经常出现的问题,但这个问题特别或者至少我在iOS开发中的知识对我没有帮助。
我以前在我的最终应用程序中使用了GooglePlayGames(GPG),在我的SDK中使用了GoogleCloudMessaging(GCM)但是今天由于某种原因,事情开始爆炸(想法:由于上次GCM更新但我无法获得旧版)
考虑到我的SDK中的GCM的最新版本,我有:
Podfile
pod 'MySDK' # All good
pod 'Google/CloudMessaging' # Nothing special...
输出
$ pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
...
Installing GGLInstanceID (1.1.5) # Dependencies
Installing Google (1.3.2) # relative to GCM
Installing GoogleCloudMessaging (1.1.2)
Installing GoogleIPhoneUtilities (1.1.1)
Installing GoogleInterchangeUtilities (1.1.0)
Installing GoogleNetworkingUtilities (1.0.0)
Installing GoogleSymbolUtilities (1.0.3)
Installing GoogleUtilities (1.1.0)
...
Generating Pods project
Integrating client project
在我的最终申请中:
Podfile
pod 'GooglePlayGames' # Nothing special...
输出
$ pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
...
Installing GoogleAppUtilities (1.0.0) # Dependencies relative
Installing GoogleAuthUtilities (1.0.1) # to GPG
Installing GooglePlayGames (5.0)
Installing GooglePlusOpenSource (1.7.1)
Installing GoogleSignIn (2.4.0)
...
Generating Pods project
Integrating client project
当我构建我的最终申请时,这是我的错误(明确但我找不到任何解决方案......)
duplicate symbol _OBJC_CLASS_$_GIPLocale in:
/Users/Path/To/App/Pods/GoogleIPhoneUtilities/Libraries/libGIP_Locale.a(GIPLocale.o)
/Users/Path/To/App/Pods/GooglePlayGames/gpg-cpp-sdk/ios/gpg.framework/gpg(GIPLocale.o)
据我了解,我有GIPLocale
两次,这使我有重复的符号。如果我们看一下相关的Pod,一个属于GPG
,另一个属于GCM
。
我尝试了很多东西但没有成功。
这可以使用空项目轻松重现,并在同一Podfile中添加两个依赖项。请注意,必须禁用ENABLE_BITCODE
。
在Xcode配置中可能有些愚蠢的东西丢失了......
答案 0 :(得分:0)
我在same issue上创建了Google Clound Messaging Github,答案非常明确,这是他们需要修复的错误。
希望很快就会到来。
答案 1 :(得分:0)
您是否尝试删除第一个库(libGIPLocale.a)?这听起来像是一个问题,两个库都直接使用相同的内部库(所以真正的修复不在你的最后),但如果他们试图得到的代码是相同的,那么根本不尝试副本中的链接可以很好地解决您的链接问题。