在CocoaPods上创建自己iOS程序的依赖管理

一、github上创建开源项目

GitHub是目前使用最广的分布式项目管理软件。下面是如何从零开始,将自己的项目放到GitHub上面,并能够像SVN那般update和commit。

1、到https://github.com上建立自己的账号

2、按照的指引,创建第一个代码仓库

spacer.gifwKioL1MVNheRL_OOAADWJ6g-4LY453.jpg


“Repository name”可以理解为项目名称。

※现在的Private权限是收费的,所以只能创建Public权限的仓库。

※Private权限,表示只有指定用户可以查看/下载/commit这些代码;而Public权限,则表示所有人都能够看到这些代码并进行下载,但只有你指定的用户才能够进行commit。

wKioL1MVNjSxIkmZAAHOale9f58320.jpg


3、安装和配置git

[root@localhost ~]# git --version
git version 2.5.4(Apple Git-61)

接着就要 设置用户名和Email 了,Email最好和注册时候的一样。
$ git config --global user.name "Your Name Here"
# Sets the default name for git to use when you commit
$ git config --global user.email "your_email@example.com"
# Sets the default email for git to use when you commit

上面的内容都写在配置文件 ~/.gitconfig 里了
恭喜,到这里,基本Git和GitHub都配置好了!

mac已经带有git,查看版本


4、版本库初始化

如果是从头创建版本库,可以采用先克隆,建立提交数据,最后再通过推送完成GitHub版本库的初始化。

步骤如下

(1) 克隆版本库:

git clone https://github.com/skylinbaiyi/HelloWorld.git
Cloning into 'HelloWorld'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

克隆的方式,本地已经存在一个.git文件夹,就不需要执行 git init

(2) 修改文件README.md文件:

创建Repository时,如果选择创建README.md文件的话,github上已经存在该文件,如果没有,则手动创建

$ git add README
# Stages your README file, adding it to the list of files to be committed


(3) 提交

git add . 

这个git add确实够蛋疼的,commit的话当然是把本地修改的所有文件提交上去了,还非得一个一个的add,这是反人类啊

#会把当前路径下的所有文件,添加到待上传的文件列表中

$ git commit -m 'first commit'
# Commits your files, adding the message "first commit"


(4) push

这里所有的更改都只是在本地的, Push之后才会提交到GitHub保存:

git remote add origin https://github.com/skylinbaiyi/HelloWorld.git 

git push origin master


(5)给项目加入一个tag。以便pod能自动识别

git tag -a 0.0.1 -m "Tag release 0.0.1”
git push —tags


二、为自己的项目添加cocoaPods支持

1、注册

trunk需要CocoaPods 0.33版本以上,用pod --version命令查看版本,如果版本低,需要升级:

sudo gen install cocoapods
pod setup

pod setup后必须要注册后才能提交podspec文件,否则会出现下面的错误


更新完成后,下一步是注册trunk

pod trunk register test@163.com 'test' --description=' ' --verbose

注册完后,会提示用户到邮箱验证:


收到的邮箱内容如下:

点击链接验证:



有的地方提示,这一步需要自备梯子,否则就会出现注册失败的问题,经我这里测试,公司网络目前不需要翻墙

注册后CocoaPods会给你的邮箱发送验证链接,点击后就注册成功了,可以用pod trunk me命令查看自己的注册信息:

上面的命令是我注册时使用的,你需要把邮箱和名字以及描述替换成你的,加上--verbose可以输出详细debug信息,方便出错时查看。

  - Name:     Yang Xiaoyu
  - Email:    yulingtianxia@gmail.com
  - Since:    May 25th, 20:27
  - Sessions: 
    - May 25th, 20:27 - September 30th, 22:41. IP: 23.228.209.171
  Description: macbook pro

上面是我的注册信息,CocoaPods不通过密码来验证用户,而是通过一个session token。


2、部署你的Pod

首先你需要建立一个podspec文件,这是我的podspec文件:

Pod::Spec.new do |s|
s.name = "YXYNumberAnimationLabel"
s.version = "1.0.1"
s.summary = "一个可以动起来的数字Label"
s.description = <<-DESC
通过设置数字变化的插值来展现动画效果
DESC
s.homepage = "https://github.com/yulingtianxia/YXYNumberAnimationLabel"

s.license = 'MIT'
s.author = { "YangXiaoyu" => "yulingtianxia@gmail.com" }
s.social_media_url = "http://twitter.com/yulingtianxia"
s.source = { :git => "https://github.com/yulingtianxia/YXYNumberAnimationLabel.git", :tag => s.version.to_s }

s.platform = :ios, '6.0'
s.requires_arc = true

s.source_files = 'YXYNumberAnimationLabel/*'
s.frameworks = 'Foundation', 'UIKit'
#s.private_header_files = 'Classes/ios/private/*.h'

#s.dependency 'FLKAutoLayout', '~> 0.1'
end


在验证和上传你的podspec文件到trunk之前,需要将你的源码push到Github上,tag一个版本号并发布一个release版本,这样podspec文件中的s.source的值才能是准确的:

git add -A 
git commit -m "Release 1.0.1."  
git tag '1.0.1'  
git push --tags  
git push origin master

这两条命令是为pod添加版本号并打上tag:

set the new version to 1.0.1
set the new tag to 1.0.1

pod trunk push命令做了如下三个工作:

在你podspec文件下的路径运行pod trunk push YXYNumberAnimationLabel.podspec 命令,同样需要翻墙梯子自备,别忘了将YXYNumberAnimationLabel.podspec替换成你的podspec文件名。

  1. 验证你本地的podspec文件(你也可以用pod spec lint命令来验证)
  2. 上传你的podspec文件到trunk
  3. 将你的podspec文件转化成trunk需要的JSON文件

如果部署成功,CocosPods会在Twitter上@你

就像文章最开始的架构图描述的那样,你在trunk中的操作依然会在CocoaPods/Specs仓库中更新。以后再做更改时只需要更新版本号然后通过trunk来提交,不用向CocoaPods/Specspull request并等待审核和merge了。

运行pod setup来更新你的Pods依赖库tree后,再使用pod search YXYNumberAnimationLabel命令来查找刚刚加入的名字叫YXYNumberAnimationLabel的依赖库:

-> YXYNumberAnimationLabel (1.0.1)
   一个可以动起来的数字Label
   pod 'YXYNumberAnimationLabel', '~> 1.0.1'
   - Homepage: https://github.com/yulingtianxia/YXYNumberAnimationLabel
   - Source:   https://github.com/yulingtianxia/YXYNumberAnimationLabel.git
   - Versions: 1.0.1, 1.0.0 [master repo]

注意事项:

(1)验证spec文件的有效性:

pod spec lint文件名 验证resp上的文件

pod lib lint 文件名 这是只是验证本地文件


(2) 添加 --verbose 可以显示详细信息,便于查看问题

pod trunk push Bugrpt.podspec --verbose




三、提交 podspec 文件到github的方法对比

提交结果查看地方 
https://github.com/CocoaPods/Specs/tree/master/Specs


1、旧方法  
CocoaPods详解之----制作篇
http://blog.csdn.net/wzzvictory/article/details/20067595
2、新方法 
 Publish Your Pods on CocoaPods With Trunk
http://yulingtianxia.com/blog/2014/05/26/publish-your-pods-on-cocoapods-with-trunk/
iOS:手把手教你发布代码到CocoaPods(Trunk方式)
http://www.cnblogs.com/wengzilin/p/4742530.html
其他文章中提到,需要cocoaPods审核几天,才能有效,但我这里使用的实际情况是,只要pod trunk push成功,就马上有效了,在 CocoaPods/Specs中就可以看到了,CocoaPods也可以使用这个库了




里面有个log信息提示有个beta版本可以使用,这个千万不要下载,可能会有很多问题,还是老老实实使用最新的正式版本才靠谱



四、问题总结


1. github的账号密码问题

如果有多个github账号,在进行账号切换提交项目时,会出现没权限的问题



这时需要在本地切换账号,切换到本项目使用账号。账号密码保存在钥匙串中,先删除,再重新输入新的账号密码



2. 路径不对

Unable to interpret the specified path as a podspec



原因是没有tag标记,代码push完全后,添加一个tag,这个tag需要和podspec文件的version字段对应


3. 找不到branch版本


我们添加tag时,写的是1.0.2,需要加上字母“v”, v1.0.2




4.  编码问题

 生成的podspec文件,MAC下直接用自带的文本编辑器或者其他三方工具:TextWrangler,会提示编码的问题或者其他错误


解决方法:windows下用edit编辑,然后到mac下提交

5. 库的路径问题


比如bugly sdk的cocoaPods配置


source指定的Bugly-1.4.5.zip文件,解压出来必须是 Bugly.framework,而不是其他文件名或者文件夹,否则可能出现以下的错误
提示source_files 或者vendored_frameworks找不到


出现这种问题时,如果检查podspec文件书写没有问题,则有可能是pod本身的问题,换台电脑试试


6. 库的头文件问题




原因:导出的头文件名字跟framework的名字不一致
修改办法:删除Modules文件夹或者修改modele.modulemap文件里头文件的定义或者修改头文件名

7. model找不到




专门下载了bugly的sdk,测试了下也是一样的问题:


查了半天没找到原因,后来猜想有没可能是pod版本的问题,先查了下当前版本:

本机安装了最新的beta版本,所以先把这个版本卸载了,安装最新的正式版,验证通过




8. 奇葩的版本错误



提示vendored_frameworks 和 public_header_files的格式错误,但是仔细对照,始终没发现有什么问题。

有可能是Cocoapods的版本问题,以前使用0.39.0一直正常,更新到1.0.0后就不对了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是创建依赖 CocoaPods 的 Xcode 模板工程的脚本: ```bash #!/bin/bash # 工程名称 PROJECT_NAME="MyApp" # 模板文件夹路径 TEMPLATE_DIR_PATH="./Templates" # 模板文件夹名称 TEMPLATE_DIR_NAME="iOS App.xctemplate" # 文件夹路径 FILE_PATH="./${PROJECT_NAME}" # 创建项目文件夹 mkdir -p "${FILE_PATH}" # 复制模板到项目文件夹 cp -R "${TEMPLATE_DIR_PATH}/${TEMPLATE_DIR_NAME}" "${FILE_PATH}" # 重命名模板文件夹 mv "${FILE_PATH}/${TEMPLATE_DIR_NAME}" "${FILE_PATH}/${PROJECT_NAME}.xctemplate" # 创建临时目录 TMP_DIR=$(mktemp -d) cd "${TMP_DIR}" # 创建 Podfile echo "platform :ios, '9.0'" >> Podfile echo "use_frameworks!" >> Podfile echo "target '${PROJECT_NAME}' do" >> Podfile echo " pod 'Alamofire'" >> Podfile echo "end" >> Podfile # 安装依赖 pod install # 复制 Podfile 和 Pods 文件夹到模板工程 cp -R Podfile "${FILE_PATH}/${PROJECT_NAME}.xctemplate" cp -R Pods "${FILE_PATH}/${PROJECT_NAME}.xctemplate" # 替换模板中的名称 sed -i '' "s/\${PRODUCT_NAME}/${PROJECT_NAME}/g" "${FILE_PATH}/${PROJECT_NAME}.xctemplate/___FILEBASENAME___.swift" # 删除临时目录 rm -rf "${TMP_DIR}" ``` 你只需要将以上脚本复制到一个名为 `create_pod_template.sh` 的文件中,并在终端中运行以下命令: ```bash chmod +x create_pod_template.sh ./create_pod_template.sh ``` 这将创建一个名为 `MyApp` 的文件夹,其中包含一个名为 `MyApp.xctemplate` 的 iOS 应用程序模板,该模板包含了一个依赖 CocoaPods 的 Alamofire 库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值