• 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’ 同样会产生这个默认的配置文件。

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

  • 相关阅读:
    IOS添加pch预编译文件
    UITableview控件基本使用
    两种单例模式的写法
    提交app Store审核时,Missing 64-bit support问题的解决办法
    IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
    获取UITableView每行中不同的UITextField输入的内容(例如修改登陆密码)
    UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等,iosuitextfield
    UITabBarController(标签栏控制器)
    iOS基础控件UINavigationController中的传值
    IOS开发之多线程
  • 原文地址:https://www.cnblogs.com/softwaretailor/p/4676287.html
Copyright © 2020-2023  润新知