一、上传写好的库到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文件。原因不明,反正我辛辛苦苦各种尝试,这样就解决了。


 

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法的更多相关文章

  1. jquery.form.js上传文件ie弹出下载文件解决办法

    在ie下如果返回类型为jsonresult,ie老版本无法识别json类型,默认将会采用下载或者打开文件! 如果使用mvc的话.直接修改action返回类型为string即可,例如:return Js ...

  2. 8.Element-ui日期组件上传到后台日期少一天解决办法

    <el-date-picker type="date" value-format="yyyy-MM-dd" placeholder="转出日期& ...

  3. chrome文件上传 /获取文件路径c:/fakepath的解决办法

    jsp页面 <td style="text-align: left;padding-left: 20px;"> <img name="image&quo ...

  4. 用命令行在本地创建一个库并上传到Github

    1  如何在本地创建一个仓库并上传到github? 基本步骤: $ mkdir blog //在桌面上创建一个叫"blog"的目录 $ cd blog //"cd blo ...

  5. 将自己写的库上传到cocoapods(2015)

    2015年以前上传到cocoapods的方式相较于现在比较麻烦,现在用不上在此也就不提了.现在上传到cocoapods只需要简单的几步即可. 1.首先你需要有一个自我感觉写的差不多的库. 2.注册tr ...

  6. [sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表

    写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的 ...

  7. 跟我学SharePoint 2013视频培训课程——怎样创建文档库并上传文档(8)

    课程简介 第8天,怎样在SharePoint 2013怎样创建文档库并上传文档. 视频 SharePoint 2013 交流群 41032413

  8. 在 github 中新建仓库后,如何上传文件到这个仓库里面。

    在 github 中新建仓库后,如何上传文件到这个仓库里面. libin@hglibin MINGW64 /e/github.io (master) $ git remote libin@hglibi ...

  9. 利用git把本地项目传到github+将github中已有项目从本地上传更新

    利用git把本地项目传到github中 1.打开git bash命令行,进入到要上传的项目中,比如Spring项目,在此目录下执行git init 的命令,会发下在当前目录中多了一个.git的文件夹( ...

随机推荐

  1. 用一条SQL语句取出第 m 条到第 n 条记录的方法

    原文:用一条SQL语句取出第 m 条到第 n 条记录的方法   --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)       *    FROM Table     id ...

  2. jquery背景动画插件使用

    在网页制作动画特效的时候,有时候想通过背景插入图片,然后通过控制背景显示的位置来实现一些动画效果,这样就不用使用绝对定位控制left和top来实现动画效果!但是jquery本身的动画函数是不支持背景动 ...

  3. Knockout应用开发指南

    Knockout应用开发指南 第一章:入门 2011-11-21 14:20 by 汤姆大叔, 20799 阅读, 17 评论, 收藏, 编辑 1    Knockout简介 (Introductio ...

  4. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  5. html5学习(一)--canvas画时钟

    利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...

  6. 控制台命令行API

    js调试系列: 控制台命令行API   上次初步介绍了什么是控制台<js调试系列: 初识控制台>,以及简单的 console.log 输出信息.最后还有两个小问题,我们就当回顾,来看下怎么 ...

  7. angularjs执行流程

    angularjs源码分析之:angularjs执行流程   angularjs用了快一个月了,最难的不是代码本身,而是学会怎么用angular的思路思考问题.其中涉及到很多概念,比如:directi ...

  8. 计算image 积分图

    // testopencv.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2\opencv.hpp& ...

  9. .net中的emit

      .net中的emit .net中的emit命名空间是system.reflection.emit.可见,emit是作为反射的一个比较高级的功能. 反射允许我们在运行时获取对象的相关信息,并执行对象 ...

  10. android获取存储卡使用情况

    package com.aib.com; import java.io.File; import android.app.Activity; import android.os.Bundle; imp ...