Cocoapods:找不到重复的库
Posted
技术标签:
【中文标题】Cocoapods:找不到重复的库【英文标题】:Cocoapods : Library Not found Repeated 【发布时间】:2018-09-12 11:39:40 【问题描述】:我有一个 ios 项目已经成功使用 cocoapods 几年了。
我的 macbook 屏幕死了,所以我暂时将其克隆到新的 macbook 并且无法再构建项目。对于我使用的每个 pod,我都会收到如下警告:
ld: warning: directory not found for option '-L/Users/chris/Library/Developer/Xcode/DerivedData/Bloc-dwchsantxfnowlfgcxthlhtnypue/Build/Products/Debug-iphoneos/AWSCognito'
第一个错误:
ld: library not found for -lAWSCognito
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我意识到有几个与此类似的问题,但我已经尝试了大部分答案,包括:退出 XCode、清理项目、pod 更新、pod 安装、pod deintegrate、检查我有最新的 cocoapods、尝试了 beta 版本然后 cocoapods 恢复到最新版本 (1.5.3)(以各种组合多次重复上述所有操作)。
我已经完成了pod init,并且在podfile中放入了正确的目标。
我总是通过双击 .xcworkspace 而不是 .xcodeproj 文件来启动 XCode
我已经根据this suggestion 检查了 $(inherited) 是否在“库搜索路径”中(尽管问题实际上是库没有在正确的位置生成,而不是在那里找不到 - 在事实上,我根本不相信它们正在生成)。
我已按照this suggestion 删除了 Frameworks 组下的 -lPods-Projectname.a(它是红色的...)
根据the accepted answer here,我有:
rm -rf Pods/ Podfile.lock ; pod install
然后将我的 project.xcworkspace 移动到备份位置,重新安装 cocoapods,rm -rf Pods/ Podfile.lock ; pod install
一个奇怪的事实是,让 cocoapods 生成新的工作空间后,并没有项目的方案(新 macbook 上唯一的方案是手动添加的库)。
我的播客文件:
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'Bloc' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for Bloc
pod 'CCBottomRefreshControl'
#pod 'ReactiveCocoa'
pod 'UIView+TKGeometry'
pod 'Branch'
pod 'AWSCognito'
pod 'AWSDynamoDB'
pod 'AWSS3'
pod 'Firebase/Core' #, '~> 4.13.0'
pod 'Firebase/Messaging'
pod 'AppsFlyerFramework'
pod 'TwitterKit', '<3.3.0' # probably 3.2.2
pod 'TwitterCore', '<3.1.0' # probably 3.0.3
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
pod 'QBImagePickerController'
pod 'SDWebImage'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
end
意识到问题在于未构建 pod,我查看了我的目标依赖项 - 有 0 个项目。当我尝试添加依赖项时,没有要添加的 pod 相关项。如果我查看 Pods 目标,它也有 0 个依赖项。在这里,我可以添加依赖项,因此为 libPods-Bloc.a 目标选择了所有 pod 库 .a 文件。然后我为 libPods-Bloc.a 制定了一个新方案并构建了它,我需要的所有库都构建在正确的位置。但是,我仍然无法向我的项目目标依赖项添加任何内容以自动构建 pod(即,我无法拖动 libPods-Bloc.a 并且它不在要选择的列表中)。然而,libPods-Bloc.a 在链接框架和库中
但是,这不能完全工作(显然不是一个好的解决方案) - 库被构建并包含在我的目标中,但随后我得到一个“无效的位码签名”链接错误。我将 Enable Bitcode 设置为 0,我的部署目标是 9.0,并且我在 podfile 中有循环将每个 pod 的部署目标设置为 9.0,这会在某个时候解决这个问题。
【问题讨论】:
【参考方案1】:终于找到了解决方案,感谢this question 中的回答。我已经阅读了那里接受的答案,但重要的信息在其他几个答案中,直到拼命阅读我能找到的关于该主题的所有内容时我才看到。
问题在于确保 Pods 目标和项目目标的 Build Active Architectures Only
设置相同。 debug -> Yes 是明智的,但 release-> No 很重要。 debug 与 release 不同是可以的。在我的情况下,Pods 都设置为 Yes。这大概是 cocoapods 的默认设置,确实应该被视为错误。
这以某种方式解决了我所有的问题。我不确定它是如何修复依赖项的 - 但所有库都是在必要时构建的,而且我也没有可以理解的“无效的位码签名”错误。
【讨论】:
以上是关于Cocoapods:找不到重复的库的主要内容,如果未能解决你的问题,请参考以下文章
Cocoapods - 找不到框架 FirebaseCoreDiagnostics
使用 cocoapods 时找不到 Mantle/Mantle.h' 文件