如何修复 GoogleUtilities Swift 的重复错误?

Har*_*k K 6 ios firebase swift

我正在使用 firebase 来跟踪我的项目中的崩溃,并且我在我的项目中使用了以下 pod。

 pod 'FirebaseCore', '6.6.4'
 pod 'FirebaseMessaging', '4.3.0'
 pod 'FirebaseAnalytics','6.3.1'
Run Code Online (Sandbox Code Playgroud)

在归档这个项目以放置 testflight 版本时,我在下面遇到了 google 实用程序的重复错误:

 Multiple commands produce '/Path/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/GoogleUtilities.framework':
 1) Target 'GoogleUtilities-00567490' has create directory command with output '/Path//IntermediateBuildFilesPath/UninstalledProducts/iphoneos/GoogleUtilities.framework'
 2) Target 'GoogleUtilities-54e75ca4' has create directory command with output '/Path//IntermediateBuildFilesPath/UninstalledProducts/iphoneos/GoogleUtilities.framework'
Run Code Online (Sandbox Code Playgroud)

当我在构建设置中检查我的 Pods 设置时,我看到在项目中添加了两次 google 实用程序。我已经删除了其中一个出现错误的 GoogleUtilities。

注意:我可以运行构建,但无法存档。是否有任何修复方法可以在不更改旧构建系统的情况下实现此构建?

因为我已经为我的 SDK 启用了库分发,所以当我对旧版进行更改时,它会引发错误。

Bog*_*van 14

添加pod 'GoogleUtilities', '~> 7.7.0'所有使用 Firebase pod 的目标将使其正常工作。就我而言,这包括 3 个目标:iOS appiMessage ExtensionUnitTests

无需显式添加这部分:

def google_utilites
  pod 'GoogleUtilities/AppDelegateSwizzler'
  pod 'GoogleUtilities/Environment'
  pod 'GoogleUtilities/Logger'
  pod 'GoogleUtilities/MethodSwizzler'
  pod 'GoogleUtilities/NSData+zlib'
  pod 'GoogleUtilities/Network'
  pod 'GoogleUtilities/Reachability'
  pod 'GoogleUtilities/UserDefaults'
end
Run Code Online (Sandbox Code Playgroud)


myD*_*ode 10

这对我有用,与博格丹的答案类似

总结步骤

  1. Add pod 'GoogleUtilities' so they don't clash from different targets 在此输入图像描述
  2. Clean install your pods (pod deintegrate and pod install)
  3. Might need pod repo update.
  4. Reopen xcode and archive, you would see single GoogleUtilities now 在此输入图像描述


Pau*_*ien 5

更新 Podfile 以明确请求所有需要的 GoogleUtilties 子规范。检查 Podfile.lock 以找到列表。

这个CocoaPods 问题有更多细节。

  • 只是一个 TLDR,这是实际的修复:https://github.com/CocoaPods/CocoaPods/issues/8206#issuecomment-592404763 (2认同)
  • 太长了;https://github.com/CocoaPods/CocoaPods/issues/8206#issuecomment-696754566 这是更简化的答案 (2认同)

小智 5

当我使用非常相似但不相等的 firebase 依赖项向我的项目添加一个新目标时,我出现了这个问题,因此 GoogleUtilities 被重复,因为我的另一个目标不需要像主目标那样多的实用程序依赖项,所以基本上(与Paul Beusterien 答案的帮助)转到 Pods 项目并查看两个目标 (GoogleUtilities-xxx) -> 构建阶段 -> 编译源并查看添加的文件中的差异,基本上在新目标中缺少“GoogleUtilities/UserDefaults”和“GoogleUtilities/MethodSwizzler”,但这在任何情况下都可能不同,所以我只是做了这样的编译

platform :ios, '13.0'

def google_utilites
  pod 'GoogleUtilities/AppDelegateSwizzler'
  pod 'GoogleUtilities/Environment'
  pod 'GoogleUtilities/Logger'
  pod 'GoogleUtilities/MethodSwizzler'
  pod 'GoogleUtilities/NSData+zlib'
  pod 'GoogleUtilities/Network'
  pod 'GoogleUtilities/Reachability'
  pod 'GoogleUtilities/UserDefaults'
end

abstract_target 'AggregatedPodsTarget' do
  use_frameworks!

  google_utilites
  
  pod 'FirebaseCore'
  pod 'FirebaseAuth'
  pod 'FirebaseFirestore'
  pod 'FirebaseStorage'
  pod 'FirebaseFunctions'
  pod 'FirebaseAnalytics'
  pod 'FirebaseMessaging'
  pod 'Firebase/Crashlytics'
  
  pod 'Google-Mobile-Ads-SDK'


  
  target 'MainApp' do
  end
  
  target 'MainApp Dev' do
  end
  
end

abstract_target 'ExtensionPodsTarget' do
  use_frameworks!
  
  google_utilites
  
  pod 'FirebaseAuth'
  pod 'FirebaseFunctions'
  
  target 'Extension' do
  end
  
  target 'Extension Dev' do
  end
end
Run Code Online (Sandbox Code Playgroud)

在此之后,我刚刚安装了 pod,然后我就只剩下一个 GoogleUtilities 依赖项