• cocoapods的安装和使用


    cocoapods的安装和使用参考:

    https://www.jianshu.com/p/b656c3c59af5

    如果要让自己的工程能够被引入,比如其他人的ipa只需要一句配置就能导入你的ios的sdk工程,那么首先,你的工程要具有被cocoapods引用的特性,需要将工程放到github上,并添加cocoapods能识别的spec文件,参考:

    https://www.jianshu.com/p/f146fa5358d5?mType=Group    (如何使用Cocoapods管理自己github上的项目,并让其支持pod)

    遇到的问题:

    (1)Unable to find a pod with name, author, summary, or description matching:

       解决: https://blog.csdn.net/huang512715681/article/details/51885361

        command: rm ~/Library/Cashes/Cocoapods/search_index.json

    (2)高版本mac报错:MAC /usr/bin/目录下 Operation not permitted的解决

        解决:https://blog.csdn.net/yemao_guyue/article/details/80575532

    command:

      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    (3) pod setup失败或者太慢

    解决:http://www.cocoachina.com/bbs/read.php?tid-193398.html

    再加一点:我本地使用git clone 下我fork的,还是很慢,最后决定去一台网络比较好的linux克隆,克隆好以后,修改了.git文件夹的名字问git_bak,并压缩成git_bak.tar,然后复制到mac上,放到~/.cocoapods下的repo的master下(如果路径不存在,就创建一个),然后在master目录下执行以下动作:

      tar -xvf git_bak.tar

      mv git_bak .git

      git checkout .

    最后删掉git_bak.tar

    再执行pod setup ,很快就好了

    (4)gem source --add  https://ruby.taobao.org/ 失败

      解决:我没有使用淘宝的镜像,因为一直报404找不到,也尝试过其他镜像,也失败了,所以我使用了默认镜像。

     (5)在执行git trunk push 时报错:‘You need to register a session first’

    解决:https://blog.csdn.net/Yj_sail/article/details/52363920

      比如:pod trunk register test@163.com 'test' --description='my pro'   ,然后你写的邮箱会收到邮件(我的被归类到垃圾邮箱了,你的也可能会,不要一位自己没收到,找找看),然后按照说明,打开他给的链接,就可以了,然后再执行下git truck push ,你的gitHub仓库代码配置CocoPods支持就完成了。

     (6)Podfile中导入指定库的方式:

      (6.1)导致指定版本:pod ‘库名’, ‘版本’    比如: pod ‘afnetworking’ , '~2.3.1'

      (6.2)导入最新版本:pod ‘库名’, : 引入库,什么版本都可以(一般就是最新版本了)  比如: pod  'afnetworking'

    所以,pod更新的时候是根据podspec中的tag来查找源文件的,所以我们在上传sdk到github后还需要标记tag,tag必须跟podspec定义的一样。

    然后,这步很重要,给你的项目提交版本号标签,别人使用你的pods时,Trunk找的就是你的标签。

    (7) pod update 指定库 :

          pod update 库名      ,比如pod update MJRefresh

    (8)CocoaPods 执行pod install /pod update 慢的问题:

    参考:https://www.cnblogs.com/yiqiedejuanlian/p/3698788.html

    command:

    pod install --verbose --no-repo-update

    pod update --verbose --no-repo-update

    (9) pod update 自己的库  发现没有更新版本号

    场景: 我在其他app工程的podfile中写的引入我的库是: pod ‘my_framework’ 意味这当我执行pod update的时候,肯定是可以拿到my_framework的最新版本的,但是我分明修改了my_framework的版本号,并且提交了代码,但是我执行pod update 没有拿到最新版本,还是上一个版本。

    解决: 原来是修改版本号以后,忘记发布到cocoapod的管理了,所以需要在my_framework工程下执行:pod trunk push

    (10)[iOS] File Patterns: The LBLelinkKit (1.0.3) spec is empty (no source files, resources, resource_bundles, preserve paths, vendored_libraries, vendored_frameworks, dependencies, nor subspecs

      说明:如果代码库里只有framework,比如只有mytest.framework,这是podspecs文件中的s.source_files的的值类似如下:

          s.source_files='my.framework/**/*'

    (11)ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone https://github.com/lebo123/LBLelinkKit.git /var/folders/nz/_6d9dzs17fl29_lh1n91md9r0000gp/T/d20180829-41657-tzjl49 --template= --single-branch --depth 1 --branch 1.0.4

    是因为我的podspec文件中的这一行:

      s.source = { :git => "https://github.com/lebo123/LBLelinkKit.git", :tag => "#{s.version}" }

    可以看出,版本号和tag是强相关的,所以修改了版本号就要添加一个tag,比如修改了版本号为‘1.0.2’,就要推 ‘1.0.2’的tag到git上,如果不想绑定两个的关系,

    把:tag => "#{s.version}" 拿掉,不过,拿掉的话,在执行pod trunk push的时候会有告警“source:Git source should specify a tag”,不过可以添加 --allow-warnings来忽略告警,即

    pod push trunk --allow-warnings

    (12) Unable to accept duplicat entry for :test(1.0.4)  

    说明:已经发布的版本,不能重复发布,必须修改版本号以后在发布。

     (13)CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`

    解决:https://www.cnblogs.com/yajunLi/p/6386239.html

      按照说明,执行pod repo update  --verbose

    最后,我的LBLelinkKit工程如下:

     

    其中的LBLelinkKit.podspec的内容如下:

    Pod::Spec.new do |s|
    s.name = "LBLelinkKit"
    s.version = "1.0.4"
    s.summary = "lebo ios framework LBLelinkKit"
    s.homepage = "https://github.com/lebo123/LBLelinkKit"
    s.license = "MIT"
    s.authors = { "lebo123" => "cm@hpplay.cn" }
    s.platform = :ios, "5.0"
    s.source = { :git => "https://github.com/lebo123/LBLelinkKit.git", :tag => "#{s.version}" }
    s.source_files ='LBLelinkKit.framework/**/*'
    s.requires_arc = true
    end

    有一个test_app,要引用我的LBLelinkKit。要怎么做呢?

    test_app:

    (1)在Podfile中添加: 

      pod  'LBLelinkKit'

     (2) 首次的话执行pod install ,如果是后期更新版本的话,执行pod update

    LBLelinkKit:

    (1)如果有新版本要发布,需要修改版本号,不能只修改代码,重复发布相同的版本,并提交版本修改的代码

    (2)然后执行pod trunk push 到cocoapods上管理

    如果LBLelinkKit上有版本发布,test_app只要执行pod update就可以拿到最新版本了。

    参考文档:

    cocopods使用总结: https://www.jianshu.com/p/7d0ad4cde012

    cocoapods醒目添加trunk支持问题汇总:

            https://www.jianshu.com/p/64e30843ff28?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

  • 相关阅读:
    设计模式(连载)
    菜鸟成长记录——2015-2016半年总
    订餐系统——TreeView显示目录结构
    网上商城——ApplicationContext.xml
    订餐系统——Gridview、Repeater和DataList 区别
    订餐系统——后台获取GridView值
    网上商城——邮件发送(二)
    网上商城——邮件发送(一)
    J2EE基础概念
    工作流——顺序工作流
  • 原文地址:https://www.cnblogs.com/zndxall/p/9547158.html
Copyright © 2020-2023  润新知