CocoaPods Podfile 文件写法有讲究

最近做到一些项目想到用 OC/Swift混编的问题、为了搞懂 bridge header 这个文件是咋个情况、却一致报错。最后不知不觉发现问题问题居然出在 Podfile 上。

开始我是从 IT 江湖的客户端开始了解Swift 的。git 下载下来发现build 不成功局让Clear 都是fail。不明白就把提示的问题放到网上去搜索发现还是不能解决问题。后来干脆自己建一个新项目发现还是存在问题。

error: unable to read module map contents from 'Target Support Files/Pods-SwiftyJSON/Pods-SwiftyJSON.modulemap': Error Domain=NSCocoaErrorDomain Code=260 "The file “Pods-SwiftyJSON.modulemap” couldn’t be opened because there is no such file." UserInfo=0x7faa00b59880 {NSFilePath=/Users/kyjun/Downloads/itjh-new15.01/Pods/Target Support Files/Pods-SwiftyJSON/Pods-SwiftyJSON.modulemap, NSUnderlyingError=0x7fa9fde95400 "The operation couldn’t be completed. No such file or directory"}
error: unable to read module map contents from 'Target Support Files/Pods-SwiftyJSON/Pods-SwiftyJSON.modulemap': Error Domain=NSCocoaErrorDomain Code=260 "The file “Pods-SwiftyJSON.modulemap” couldn’t be opened because there is no such file." UserInfo=0x7faa00ad0e50 {NSFilePath=/Users/kyjun/Downloads/itjh-new15.01/Pods/Target Support Files/Pods-SwiftyJSON/Pods-SwiftyJSON.modulemap, NSUnderlyingError=0x7fa9feadd930 "The operation couldn’t be completed. No such file or directory"}

后来发现“/Users/kyjun/Downloads/itjh-new15.01/Pods/Target Support Files/Pods-SwiftyJSON/Pods-SwiftyJSON.modulemap” 这个路径根本就不是我的项目路径啊!真心搞不懂。

最后将问题锁定在Podfile 上。下面介绍一下我之前的Podfile的写法:

platform :ios, '7.0'
pod 'MBProgressHUD', '~> 0.8'
pod 'FMDB', '~> 2.2'
pod 'SDWebImage', '~> 3.5.2'
pod 'Reachability', '~> 3.1.1'
pod 'ASIHTTPRequest', '~> 1.8.1'
pod 'DTCoreText', '~> 1.6.11'
pod 'MJRefresh', '~> 1.4.6'
pod 'UMengFeedback', '~> 2.2'
pod 'ZBarSDK', '~> 1.3.1'
pod 'CHTCollectionViewWaterfallLayout', '~> 0.9.1'
pod 'DZNEmptyDataSet', '~> 1.5.2'
pod 'MWPhotoBrowser'

其实这样写是没有问题的、但是有可能会照成上面提到的错误信息。原因猜想可能是因为没有指定对应的 porject 或者 podfile 没有指定当前文件应该用于那个项目。导致在其他项目中用到同样的类库是会提示路径不匹配。

给大家一个建议以后创建项目是先创建一个空项目。

接下来看看我现在的Podfile 的写法:

=begin
这里写注释
=end

source 'https://github.com/CocoaPods/Specs.git' 

platform :ios, '7.0'
inhibit_all_warnings!

xcodeproj 'Demo.xcodeproj'

target :Demo1 do
  pod 'MBProgressHUD', '~> 0.9.1'
  pod 'AFNetworking', '~> 2.5.4'
  pod 'MJRefresh', '~> 2.3.2'
end
target :Demo2 do
  pod 'MBProgressHUD', '~> 0.9.1'
  pod 'AFNetworking', '~> 2.5.4'
  pod 'MJRefresh', '~> 2.3.2'
end

说说重点:xcodeproj ‘demo.xcodeporj’ 这个指明用于那个项目.

             target :Demo1 指明对应那个Target

这里说一说 为什么最好先建一个空项目。 大家都知道一个项目可以有多个Target 如果我们的项目名称和Target 的名称一致就会产生一个 Pod.debug 的配置文件,也就不会产生一个和Target 一致的Pod-target.debug 的配置文件。pod.debug 也是一个默认的配置文件。

如果我们在 xcodeporj 和 Target 之间 添加 pod ‘AFNetworking’ 同样会产生这个默认的配置文件。

遇到问题记录下来也希望看到的同仁有不同意见的一起讨论!

posted @ 2015-07-25 17:45  每周报  阅读(18256)  评论(3编辑  收藏  举报