来源:将 Cocoapods 用于 Firebase 时未绑定变量错误

Tas*_*Tas 5 ios cocoapods firebase google-tag-manager xcode10.1

我已经集成FirebaseGoogleTagManager使用的CocoaPods到我的iOS应用程序的目标。当我构建目标时,Xcode 不断给我错误:


Showing Recent Messages
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks 

mkdir -p /Users/xxx.xxx/Library/Developer/Xcode/DerivedData/MyApp-enzvpdzsyhjszqbnwiclnpszlyri/Build/Products/Debug-iphonesimulator/MyApp.app/Frameworks


/Users/xxx.xxx/Projects/MyApp/Applications/MyApp/Pods/Target Support Files/Pods-MyApp/Pods-MyApp-frameworks.sh: line 43: source: unbound variable


Command /bin/sh failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

我已经多次清理我的项目,删除了派生数据文件夹,但这些似乎都不起作用。

我的 Podfile 看起来像这样:

platform :ios, '11.0'

target 'MyApp' do

  use_frameworks!

  # Pods for MyApp
    pod 'Firebase/Core', '~> 5.19'
    pod 'Firebase/ABTesting'
    pod 'Firebase/Performance'
    pod 'Firebase/RemoteConfig'
    pod 'Firebase/Analytics'
    pod 'GoogleTagManager', '~> 7.1'
 end
Run Code Online (Sandbox Code Playgroud)

可可豆环境

CocoaPods : 1.5.3
        Ruby : ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
    RubyGems : 2.6.8
        Host : Mac OS X 10.14 (18A391)
       Xcode : 10.1 (10B61)
         Git : git version 2.17.2 (Apple Git-113)
Ruby lib dir : /Users/xxx.xxx/.rbenv/versions/2.4.0/lib
Repositories : master - https://github.com/CocoaPods/Specs.git @ 7c9a708dce25221eabc35ed39
Run Code Online (Sandbox Code Playgroud)

我的项目设置中缺少什么导致此错误的原因?

我花了几天时间寻找关于 SO / Cocoapods 的解决方案,但徒劳无功。

在这方面的任何帮助将不胜感激。

谢谢

小智 0

这似乎是一些特殊的问题,可能与 bash 相关或其他问题。由于某些奇怪的原因,它不适用于 ~/Library/.../MyApp-xxxxx.../Build/Products/Release-iphoneos/ 目录(我们称之为 BUILD_DIR)

如果“source”未定义(就是这种情况),则将 ${source} 替换为 ${source:-} 没有帮助,因为它会为 source 放置一个空白,这不是您想要的。

对我来说另一个问题是 rsync 找不到上面的目录。

这是我所做的:

  1. 让项目构建并给出错误。这可确保在我的 BUILD_DIR 中创建所需的框架目录,并构建框架。

  2. 在项目根目录下创建一个目录Pods-frameworks,将BUILD_DIR中的所有框架目录复制到该目录中。

  3. 在 PodsMyApp-frameworks.sh 的最后 25 行中,在调试和发布模式下调用 install_framework 以及所有与 pod 相关的框架,将 ${BUILT_PRODUCTS_DIR} 更改为定义为这个新 Pods-frameworks 目录的新宏。

  4. 再次构建项目。

这解决了问题。如果再次安装 Pod 并且版本发生更改,则可能需要重复此过程。