Cocoapods:找不到库重复

时间:2018-09-12 11:39:41

标签: ios xcode cocoapods

我有一个iOS项目已经成功使用了cocoapods几年了。

我的Macbook屏幕死了,因此我已将其暂时克隆到新的Macbook中,无法再构建该项目。对于使用以下方法的每一个吊舱,我都会收到一条警告:

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解体,检查我是否拥有最新的cocoapods,尝试了beta版本然后将可可足纲恢复为最新版本(1.5.3)(以上多次以各种组合重复多次)。

我已经完成了pod的初始化,并且将正确的目标放在了podfile中。

我总是通过双击.xcworkspace而不是.xcodeproj文件来启动XCode

我已经根据this suggestion检查了$(继承的)是否在“库搜索路径”中(尽管问题实际上是在正确的位置生成了库,因为反对在这里找不到该库) -实际上,我根本不相信它们是在生成。)

我已按照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上唯一的方案是手动添加的库)。

我的Podfile:

# 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,我查看了我的Target Dependencies-有0个项目。当我尝试添加依赖项时,没有要添加的与pod相关的依赖项。如果我看一下Pods目标,它也有0个依赖关系。在这里我可以添加依赖项,因此为libPods-Bloc.a目标选择了所有pod库.a文件。然后,我为libPods-Bloc.a制定了一个新方案,并对其进行了构建,并且将我需要的所有库都构建在正确的位置。但是,我仍然无法向我的项目目标依赖项添加任何内容以自动构建Pod(即,我无法拖动libPods-Bloc.a,并且不在列表中可供选择)。但是,libPods-Bloc.a位于链接的框架和库中。

但是,这不能完全起作用(显然不是一个好的解决方案)-构建了库并将其包含在我的目标中,但是随后我收到了“无效的位码签名”链接错误。我将“启用位码”设置为0,并将“部署目标”设置为9.0,并在podfile中设置了循环,以将每个pod的部署目标设置为9.0,这样有时会解决此问题。

1 个答案:

答案 0 :(得分:0)

由于this question中的回答,终于找到了解决方案。我已经在那儿阅读了公认的答案,但重要的信息是在其他几个答案中,直到拼命阅读了有关该主题的所有内容之后,我才看到这些答案。

问题是要确保Pod目标和项目目标的Build Active Architectures Only设置相同。调试->是是明智的,但发布->否很重要。可以将调试与发行版不同是可以的。就我而言,两者的Pod均设置为“是”。大概这是cocoapods的默认设置,确实应该认为是一个错误。

这以某种方式解决了我所有的问题。我不确定它如何解决依赖关系一-但是所有库都在必要时构建,而且我也没有可理解的“无效位码签名”错误。