zoukankan      html  css  js  c++  java
  • github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

    一、上传写好的库到github(我这里使用SourceTree客户端)

    1.在github上创建一个仓库

    2.将仓库拉倒本地

    复制仓库地址


    将刚才复制的地址粘贴到这里

    3.上传项目到github

    将写好的库放在上一步的目标路径文件夹里。 可以看到sourceTree里新增的文件,将为暂存文件放到已暂存。

    点下面提交信息的输入框,勾选下面立即推送,可以同时提交到本地及远程仓库

    二、上传到cocoapods

    1.注册cocoapods

    pod trunk register 邮箱地址 ‘用户名’ --description='描述信息'
    执行成功后打开你的邮箱验证即可。
    pod trunk me 命令检查是否注册成功

    2.制作podspec文件

    方法一:cd 你的仓库所在目录 ---> pod spec create xxx(xxx是你的sdk名)。然后vi xxx.podspec 进入文件中进行配置。(方法一比较麻烦,不推荐)

    方法二:拷贝别人的podspec,然后修改一下就可以。

    下面来看看podspec里的内容及含义:

    Pod::Spec.new do |s|
    s.name = 'LFPickerView'
    s.version = '1.0'
    s.license = { :type => "MIT", :file => "LICENSE" }
    s.summary = '将PickerView,DatePicker封装得更加简单易用,并可搭配UITextField使用'
    s.homepage = 'https://github.com/zhanglinfeng/LFPickerView'
    s.authors = { '张林峰' => '1051034428@qq.com' }
    s.source = { :git => 'https://github.com/zhanglinfeng/LFPickerView.git', :tag => s.version.to_s }
    s.requires_arc = true
    s.ios.deployment_target = '8.0'
    s.source_files = 'LFPickerView/LFPickerView/*.{h,m}'
    s.dependency "Masonry"
    end
    s.name 你的sdk名字

    s.homepage 你仓库的主页地址
    s.source 仓库地址(注意跟主页地址不一样)及tag
    s.ios.deployment_target 最低支持iOS 8.0
    s.dependency "Masonry 依赖第三方库
    s.source_files 供别人使用的文件(要根据你的文件路径设置,别搞错了,如下图)

    然后把这个文件也提交到github。

    3.给项目打个tag

    tag要跟上一步制作的podspec文件里的tag一致。

    4.上传你的sdk到cocoapods

    注意:如果你的cocoapods版本低于1.1.0一定要升级。(怎么升级,升级速度慢失败等,网上一堆教程这里不说了)

    cd 到你仓库根目录

    pod lib lint 命令,对打上的标签与podspec标记的标签进行比验证

    pod trunk push 命令,真正执行分支的推送操作

    成功截图如下

    然后等几个小时到2天,差不多就可以搜到自己的库了。

    pod search 你的sdk名

    如果好几天了还搜不到,对于有些类库确实是在Cocoapods中所不存在的,为了确定我们搜索的库是不是真的在Cocoapods的Repos中存在,我们可以到https://cocoapods.org/中进行搜索。如果你的库在Cocoapods里,但pod search 你的sdk名 命令还是搜不到。则执行下面操作:

    终端输入rm ~/Library/Caches/CocoaPods/search_index.json

    pod search

    5.一些使用技巧

    a.使用指定tag

    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
    b.使用指定某次提交,比如你不想频繁打tag,或者要立马使用不想等pod验证
    pod 'LFKit/LFBadge', :git => 'https://github.com/zhanglinfeng/LFKit', :commit => '13b65eb'

    三、解决一些坑

    1.- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

    解决办法:检查你.podspec文件中s.source_files路径有没有填错

    2.did not pass validation ,due to 1 wanrings (but you can use --allow-warnings to ignore them)

    解决办法:在命令后面加--allow-warnings

    3.

    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - NOTE | [iOS] xcodebuild: xcodebuild: error: 'App.xcworkspace' does not exist.
    解决办法:更新你的Cocoapods版本

     4.- ERROR | xcodebuild:  /Users/zhanglinfeng/Library/Developer/Xcode/DerivedData/App-culgapkleglkstaqypgjlqqpywqh/Build/Products/Release-iphonesimulator/LFKit/LFKit.framework/Headers/LFEncryptDecryptUtil.h:10:9: error: include of non-modular header inside framework module 'LFKit.LFEncryptDecryptUtil': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.0.sdk/usr/include/CommonCrypto/CommonCryptor.h' [-Werror,-Wnon-modular-include-in-framework-module]

    解决办法:#import <CommonCrypto/CommonCryptor.h>从.h文件拿到.m文件。原因不明,反正我辛辛苦苦各种尝试,这样就解决了。

    
    
     
  • 相关阅读:
    网络多线程 ---实现网络负载图片
    optimizer for eclipse--Eclipse优化,让你的Eclipse快来飞!
    ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)
    IOS 开展 分别制定了iphone 和 ipad 好? 或开发一个 Universal好?
    DevExpress VCL 2014.1.2 for C++BUILDER XE6
    swift http请求返回json数据和分析
    Spark里面的任务调度:离SparkContext开始
    ftk学习记录(一个进度条文章)
    Appium Android Bootstrap控制源代码的分析AndroidElement
    别忽视了业绩比较基准
  • 原文地址:https://www.cnblogs.com/zhanglinfeng/p/6283178.html
Copyright © 2011-2022 走看看