⚒️

🛠️ DT_TOOLCHAIN_DIR cannot be used のエラー解決(CocoaPods 1.13.0/Xcode 15)

2023/10/09に公開

エラー内容

CocoaPods 1.13.0・Xcode 15 にアップデートして pod install したら下記エラーが出た

DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead

問題があった環境

  • CocoaPods 1.13.0
    • gem で install
  • Xcode 15.0
  • ruby 2.6.10

結論

CocoaPods 1.12.1 に戻して Podilfe に下記を追加すれば動く🫨

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    # 以下を追加 ----
    target.build_configurations.each do |config|
      xcconfig_path = config.base_configuration_reference.real_path
      xcconfig = File.read(xcconfig_path)
      xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")
      File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
    end
    # ---- ここまで
  end
end

やったこと詳細

https://github.com/CocoaPods/CocoaPods/blob/master/CHANGELOG.md#bug-fixes-1
で CocoaPods 1.13 にすれば治るって書かれてるけど動かない…!

https://github.com/CocoaPods/CocoaPods/issues/12012#issuecomment-1751159314

Using CocoaPods 1.13 and XCode 15 this bug is still there as of Oct 2023.

このコメントにも書かれてる通り, CocoaPods 1.13.0 だとまだ動かないらしいので CocoaPods 1.12.1 に戻すしかなさそう🤧
https://github.com/CocoaPods/CocoaPods/releases/tag/1.12.1

ローカルの CocoaPods が 1.13.0 だったのでアンインストールしてから入れ直しする
sudo gem uninstall cocoapods

Password:
Successfully uninstalled cocoapods-1.13.0

新しく install する際に System で使われてる ruby がめちゃ古(2.6.10)だったので rbenv で入れてる中で最新だった 3.2.2 にする
rbenv global 3.2.2

$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]

sudo gem install cocoapods -v 1.12.1 で CocoaPods 1.12.1 を入れて pod --version を実行すると

bundler: failed to load command: pod (/opt/homebrew/opt/bin/rbenv/versions/3.2.2/bin/pod)
/opt/homebrew/opt/bin/rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/activesupport-7.1.0/lib/active_support/core_ext/array/conversions.rb:108:in `<class:Array>': undefined method `deprecator' for ActiveSupport:Module (NoMethodError)

  deprecate to_default_s: :to_s, deprecator: ActiveSupport.deprecator
                                                          ^^^^^^^^^^^

エラーになっちゃった❗️😡
https://github.com/CocoaPods/Core/blob/47f0c02fff9b3d16df049fc85390a7e1ac690fef/cocoapods-core.gemspec#L22
これを見る感じ CocoaPods は activesupport に依存してる& 5以上8未満はサポートしてそうだけど,2023/10/09 時点で最新の activesupport 7.1.0 だとエラーになっちゃった🥺
https://blog.ch3cooh.jp/entry/2023/10/07/103500
このブログを参考に,sudo gem install activesupport -v 7.0.8 と sudo gem uninstall activesupport -v 7.1.0 をして一つ前の 7.0.8 に差し替えた

※修正 PR が出されており,2023/10/09 時点で既に merge されてるので上記に関しては CocoaPods の次バージョンくらいで治りそう💡
https://github.com/CocoaPods/CocoaPods/pull/12082

$ pod --version
1.12.1

無事はいった〜✌🏻

所感

なにかあればコメントください〜🔰

Gemfile で管理したかったけど無理だった💥

CocoaPods のバージョンに振り回されるのが嫌なので,プロジェクトごとに Gemfile で CocoaPods を管理したかったので Gemfile 作って .zshrc のエイリアスに alias pod="bundle exec pod" を追加してヨシ!って思ったけど,
なんか差分見る感じ flutter run 内で行われる pod installbundle exec pod install になってない気がするな…って思ったらこんな issue が既にあった🫥エ〜ン
https://github.com/flutter/flutter/issues/40135

SDK いじるとかでなんとかできそうな気もしたけど今回は一旦無しで🐻

その他はまってしまったぽんこつポイント🐣

Podfile にコード追加する際に flutter_additional_ios_build_settings(target) を消してしまっていて,ずっと

Failed to build iOS app
Could not build the precompiled application for the device.
Lexical or Preprocessor Issue (Xcode): 'Flutter/Flutter.h' file not found

のエラーに悩まされてた👊🏻
調べてみて

  • rm ios/Flutter/Flutter.podspec して flutter clean
  • pod setup

などしたけど治らなくてギェ〜〜🤬ってしてた👊🏻👊🏻👊🏻

Discussion