iOS

如何创建私有podspec

2017-01-18  本文已影响282人  遥遥领先M

创建一个私有的podspec包括如下那么几个步骤:

1.创建并设置一个私有的Spec Repo。
2.创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址。
3.创建Pod所对应的podspec文件。
4.本地测试配置好的podspec文件是否可用。
5.向私有的Spec Repo中提交podspec。
6.在个人项目中的Podfile中增加刚刚制作的好的Pod并使用。
7.更新维护pod spec。

创建并设置一个私有的Spec Repo

创建一个仓库https://github.com/TRZXDev/TRZX_Repositories

屏幕快照 2017-01-16 13.55.34.png

本地添加私有源

pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
---------------------------------------------------------
pod repo add TRZX_Repositories https://github.com/TRZXDev/TRZX_Repositories

此时如果成功的话cd到~/.cocoapods/repos目录下就可以看到TRZX_Repositories这个目录了。


屏幕快照 2017-01-16 14.04.26.png

至此第一步创建私有Spec Repo完成。

创建Pod的所需要的项目工程文件,并且有可访问的项目版本控制地址

创建一个Xcode项目 TRZX_Test
在TRZX_Test项目下创建名为TRZX_Test的文件夹,后面我们需要做成私有pod的文件均放在该文件夹下
在TRZX_Test文件下面添加TRZX_Test文件

屏幕快照 2017-01-17 13.47.04.png

在gitHub新建一个project名为TRZX_Test项目


屏幕快照 2017-01-17 13.48.12.png

关联本地项目推送至gitHub

echo "# TRZX_Test" >> README.md
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/TRZXDev/TRZX_Test.git
git push -u origin master

假如我们的源是origin,分支是master,那么我们 需要这样写需要知道,我们的源可以是本地的路径

git pull origin master --allow-unrelated-histories

因cocoaPods强制添加开源许可文件,在TRZX_Test工程目录下创建FILE_LICENSE

echo MIT>FILE_LICENSE

创建podspec文件

pod spec create TRZX_Test

执行命令vim .TRZX_Test.podspec编辑podspec文件

0.s.summary

s.summary      = "Testing  TRZX_Test."

1.s.description 添加描述

  s.description  = <<-DESC
                            Testing Private Podspec.
                   DESC

2.s.platform 最低支持iOS版本

   # s.platform     = :ios
     s.platform     = :ios, "9.0"

3.s.homepage

s.homepage     = "https://github.com/TRZXDev/TRZX_Test"

4.s.license

   #s.license      = "MIT (example)"
   s.license      = { :type => "MIT", :file => "FILE_LICENSE" }

5.s.source

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

6.s.source_files

  s.source_files  = "CRProtocolManager", "CRProtocolManager/**/*.{h,m}"

退出编辑执行命令
编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令

pod lib lint

当你看到


屏幕快照 2017-01-17 14.34.50.png

时,说明验证通过了,不过这只是这个podspec文件是合格的,不一定说明这个Pod是可以用的,我们需要在本地做一下验证

把刚才的修改Add到本地

git add .
git commit -m '编辑.podspec'

添加tag 一定要和podspec中的version一致

git tag 0.0.1 

把刚才添加的tag提交上去

git push origin master --tags
屏幕快照 2017-01-17 14.28.28.png

把TRZX_Test项目添加到准备工作中的私有源仓库TRZX_Repositories

pod repo push TRZX_Repositories TRZX_Test.podspec --verbose --allow-warnings

执行成功后
pod search TRZX_Test应该就能搜索到了
如果发现搜索不到刚才的组件

rm ~/Library/Caches/CocoaPods/search_index.json

然后在进行搜索就可以搜索到了

注意

此时由于你当前工程B依赖的工程是私有库,于是会报错:

- ERROR | [iOS] unknown: Encountered an unknown error

pod sepc lint 文件名.podspec --sources='http://[privateLibName]/cocoaspecs.git,https://github.com/CocoaPods/Specs.git'

报错 ···

error: include of non-modular header inside framework module ··· [-Werror,-Wnon-modular-include-in-framework-module]

解决办法:在pod lib lint 或者 pod spec lint 以及 pod repo push ....时候加上 --use-libraries

    pod lib lint --use-libraries
    #或者
    pod spec lint --use-libraries

    #当然,在提交的时候也要加上
    pod repo push <repoName> <podspec> --use-libraries

    #或者
    pod repo push TRZX_Repositories TRZX_Test.podspec --verbose --allow-warnings --use-libraries
    
上一篇 下一篇

猜你喜欢

热点阅读