【ios】xcode运行项目时报错 Showing All Errors Only Framework ‘Pods_Runner‘ not found

xcode运行项目时报错
Showing All Errors Only
Framework ‘Pods_Runner’ not found

按一下步骤

fvm flutter clean
bundle exec  pod deintegrate
fvm flutter pub get
fvm flutter precache --ios   这个命令要执行
bundle exec pod install  --repo-update

如果上面操作不行,再执行下面的命令清理缓存

rm -rf ~/Library/Developer/Xcode/DerivedData

# 1. 清理 Xcode 缓存
rm -rf ~/Library/Developer/Xcode/DerivedData/*
rm -rf ~/Library/Caches/com.apple.dt.Xcode
rm -rf ~/Library/Caches/org.cocoapods.CocoaPods

# 2. 重置 Xcode
defaults delete com.apple.dt.Xcode
killall Xcode
你遇到的错误: ``` Framework 'Pods_SparkleAutoUpdateDemo' not found ``` 这是一个 **Xcode 构建找不到框架** 的典型问题,通常出现在使用 **CocoaPods** 集成第三方库(如 Sparkle)但配置不完整或项目结构异常的情况下。 --- ## 🔍 错误原因分析 这个错误表明: > Xcode 在编译你的主 target `SparkleAutoUpdateDemo` ,试图链接一个名为 `Pods_SparkleAutoUpdateDemo.framework` 的动态框架,但它 **不存在于构建路径中**。 这通常是以下几种情况导致的: | 原因 | 说明 | |------|------| | ✅ 未运行 `pod install` | CocoaPods 尚未生成 Pods 工程和 framework | | ✅ 打开了 `.xcodeproj` 而不是 `.xcworkspace` | 必须用 workspace 才能访问 Pods 子工程 | | ✅ Podfile 中未正确配置 Sparkle 或平台 | | ✅ 使用了静态库但误设为动态链接 | | ✅ 清理/重命名后缓存残留 | --- ## ✅ 正确解决方案 ### ✅ 步骤 1:确认你使用的是 `.xcworkspace` 文件 ⚠️ **不要双击打开 `SparkleAutoUpdateDemo.xcodeproj`** ✅ 应该打开: ```bash SparkleAutoUpdateDemo.xcworkspace ``` 因为只有 Workspace 才包含主项目 + Pods项目。 👉 如果你是从 `.xcodeproj` 打开的,请关闭 Xcode,然后打开 `.xcworkspace`。 --- ### ✅ 步骤 2:确保已运行 `pod install` 在项目根目录(有 `Podfile` 的地方)执行: ```bash cd /path/to/your/project pod install ``` 如果提示 `command not found: pod`,先安装 CocoaPods: ```bash sudo gem install cocoapods ``` 或者推荐使用 [Homebrew](https://brew.sh/) + Ruby 管理工具避免权限问题。 --- ### ✅ 步骤 3:检查 Podfile 内容是否正确 你的 `Podfile` 应该类似这样(macOS App): ```ruby # Podfile platform :osx, '10.13' # 或更高版本 target 'SparkleAutoUpdateDemo' do use_frameworks! # ⚠️ 必须开启,否则不会生成 .framework pod 'Sparkle' end ``` 📌 关键点: - `use_frameworks!`:必须存在,否则会以静态库方式集成,可能导致找不到 framework。 - `platform :osx`:表示是 macOS 应用(不是 iOS) - `target 'SparkleAutoUpdateDemo'`:名字要和你的 Xcode target 完全一致 保存后重新运行: ```bash pod install ``` --- ### ✅ 步骤 4:清理并重建项目Xcode 中操作: 1. Product → Clean Build Folder (⇧⌘K) 2. 删除 DerivedData(可选): ```bash rm -rf ~/Library/Developer/Xcode/DerivedData ``` 3. 关闭 Xcode,重新打开 `.xcworkspace` 4. 再次尝试 Build --- ### ✅ 步骤 5:检查 Build Settings 中的 Framework Search Paths 进入你的 Target → Build Settings → 搜索 `Framework Search Paths` 确保包含类似内容(由 CocoaPods 自动设置): ``` $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}" ``` 并且 `inherit from project` 是开启状态。 > ❌ 不要手动删除这些路径! --- ### ✅ 步骤 6:验证 Pods 是否成功构建 Build 成功后,在以下路径查看是否有生成的 framework: ``` ~/Library/Developer/Xcode/DerivedData/YourApp-xxxxxx/Build/Products/Debug/Pods_SparkleAutoUpdateDemo.framework ``` 也可以在 Xcode 的 **Products** 分组下找到它。 如果没有,说明 Pods 编译失败了。 --- ## 🛠️ 替代建议:改用 Swift Package Manager(SPM) 由于 Sparkle 对 SPM 支持良好,且更现代、无需 `.xcworkspace`,**强烈建议放弃 CocoaPods,改用 SPM!** ### ✅ 如何通过 SPM 添加 Sparkle(推荐做法) 1. 打开 Xcode 2. File → Add Packages… 3. 输入: ``` https://github.com/sparkle-project/Sparkle.git ``` 4. 选择 “Up to Next Major” → 选择 2.x 版本 5. 添加到你的 target ✅ 优点: - 无需 `pod install` - 无需 `.xcworkspace` - 不会出现 `Pods_*.framework not found` - 更稳定、易维护 --- ## 🧩 示例:SPM 集成后的代码调用(无 Pods 问题) ```swift import Cocoa import Sparkle // ✅ 直接导入即可 @main class AppDelegate: NSObject, NSApplicationDelegate { var updater: SPUUpdater! func applicationDidFinishLaunching(_ aNotification: Notification) { let controller = SPUStandardUpdaterController( startingUpdater: true, updaterDelegate: nil, userDriverDelegate: nil ) updater = controller.updater // ✅ 无参数调用(Sparkle 2.x) updater.checkForUpdates() } } ``` --- ## ✅ 总结:解决流程图 ```text 出现 "Framework 'Pods_SparkleAutoUpdateDemo' not found" ↓ ✅ 是否打开了 .xcworkspace? 否 → 改开 xcworkspace ↓ 是 ✅ 是否运行了 pod install? 否 → 运行 pod install ↓ 是 ✅ Podfile 是否正确?(use_frameworks!, platform :osx) ↓ ✅ 清理 DerivedData 并重建 ↓ 仍然失败? ↓ ✅ 改用 Swift Package Manager(一劳永逸) ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值