Flutter Xcode 15 Error (Xcode): DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS

回答 6 浏览 9640 2023-09-19

今天将 Xcode 升级到版本 15 后,在构建 IOS 应用程序时收到以下错误:

Error (Xcode): DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead

就我而言,似乎是一些特定的依赖项导致了此问题:

  • objectbox_flutter_libs:^2.2.1
  • firebase_core:^2.16.0

我不知道如何解决这个问题,我将非常感谢任何建议!

谢谢!

Preem Palver2 提问于2023-09-19
这应该是修复:stackoverflow.com/a/77138033/1759443Kyle Venn 2023-09-19
@Kyle Venn Giga chadPreem Palver2 2023-09-20
@KyleVenn 你是一个有荣誉感和文化的人Andre Pena 2023-09-20
尝试升级最新版本的 Cocoapods stackoverflow.com/questions/39481636/…Abhishek Kumar 2023-09-23
6 个回答
#1楼 已采纳
得票数 46

将此代码添加到您的 podfile 中

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

之后运行 pod update(运行 pod update 之前确保 iOS 文件夹是当前目录)。

pod update


解决方案 2:使用 flutter 构建 iOS 项目时出现问题

看看这个多味配置。


解决方案3: 如果您使用 inAppWebview 进行 flutter,则会出现如下错误:

Parse Issue (Xcode): Could not build module 'WebKit'

因此,您可以在 pubspec.yaml 文件中添加如下内容:

flutter_inappwebview:
    git:
      url: https://github.com/Estrelio/flutter_inappwebview.git
      ref: fix-xcode-17  

解决方案4(对于非flutter用户):

从脚本中删除以下行。

flutter_additional_ios_build_settings(target)

kunj kanani 提问于2023-09-20
kunj kanani 修改于2023-09-22
我尝试了@Kyle Venn 的解决方案,它确实有效。但是,需要注意的是,这只能用作临时解决方案,直到下一个 cocopods 更新发布为止。Preem Palver2 2023-09-20
我尝试了该解决方案,但在尝试运行应用程序时遇到了以下问题:Error (Xcode): 123 duplicate symbols Error (Xcode): Linker command failed with exit code 1 (use -v to see invocation)Lukasz C. 2023-09-20
@PreemPalver2 不,我不能“简单地”删除 iOS 文件夹。我有五个大型应用程序需要支持,每个应用程序都有一个复杂且自定义的 Xcode 配置。我需要一周的时间才能重新创建这个。我经常看到这个“simply delete”的建议,因为人们认为 ios 文件夹中没有任何内容,而对于较大的应用程序来说,情况通常并非如此。我会看看设置旧链接器是否有帮助。Lukasz C. 2023-09-21
设置链接器与其他解决方案相结合已经奏效。 ;)Lukasz C. 2023-09-21
顺便说一句,如果你没有flutter,请评论“flutter”行pw2 2023-09-22
#2楼
得票数 5

对我有用的解决方案:Xcode 15 with Flutter

post_install do |installer|
  installer.aggregate_targets.each do |target|
    target.xcconfigs.each do |variant, xcconfig|
      xcconfig_path = target.client_root + target.xcconfig_relative_path(variant)
      IO.write(xcconfig_path, IO.read(xcconfig_path).gsub("DT_TOOLCHAIN_DIR", "TOOLCHAIN_DIR"))
    end
  end
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      if config.base_configuration_reference.is_a? Xcodeproj::Project::Object::PBXFileReference
        xcconfig_path = config.base_configuration_reference.real_path
        IO.write(xcconfig_path, IO.read(xcconfig_path).gsub("DT_TOOLCHAIN_DIR", "TOOLCHAIN_DIR"))
      end
    end
  end
end
Dansp 提问于2023-09-20
Dansp 修改于2023-09-21
Build error with this change: 'undefined method xcconfigs' for #<Xcodeproj::Project::Object::PBXNativeTarget:0x000000014aa715c0>Jimmy_m 2023-09-21
#3楼
得票数 3

试试这个,它在react-native中有效:

    installer.pods_project.targets.each do |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
Leandro Ariel 提问于2023-09-21
#4楼
得票数 3

尝试这个,

find . -name "*.xcconfig" -type f -exec grep -l 'DT_TOOLCHAIN_DIR' {} \; \
| while IFS= read -r file; do sed -i '' 's/DT_TOOLCHAIN_DIR/TOOLCHAIN_DIR/g' "$file"; done

就我而言,我在项目文件夹中运行它。

来源:https://www.mongodb.com /community/forums/t/xcode-15-cocoapods/245603

drodriguez 提问于2023-09-22
完美的兄弟..完美..Ucdemir 2023-09-22
#5楼
得票数 3

1.13.0 附带修复程序。

将 Cocoapods 更新到 v1.13:

gem update cocoapods

然后在你的 ios 项目目录中运行:

pod update
rmalviya 提问于2023-09-23
即使使用版本 1.13.0,我也会收到以下错误:Could not build module 'WebKit' /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator17.0.sdk/System/Library/Frameworks/WebKit.framework/Headers/WKWebsiteDataStore.h:120:47 type argument 'nw_proxy_config_t' (aka 'struct nw_proxy_config *') is neither an Objective-C object nor a block typeTito Rezende 2023-09-23
#6楼
得票数 1

我解决了这个错误。只需将以下代码添加到Pod文件中

post_install do |installer|
  xcode_base_version = `xcodebuild -version | grep 'Xcode' | awk '{print $2}' | cut -d . -f 1`
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
            # For xcode 15+ only
            if config.base_configuration_reference && Integer(xcode_base_version) >= 15
                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
end

注意:先删除Pod文件夹,然后使用重构pod文件后进入ios目录并尝试运行pod install上面提供的代码。

Jiten Patel 提问于2023-09-22
标签