Cocoapods搭建私有库

    xiaoxiao2021-03-25  130

    近段时间再给公司APP做重构,重构后的每个模块都是以pod导入的,所以牵扯到cocoapod私有库的搭建问题。

    想要创建自己的私有库,还需要创建另外一个git仓库去维护里面所有的其他私有库的版本,比如这个仓库取名为specs.git。

    这个specs.git维护的是你所有的其他私有库的版本号对应的podspec文件。

    目录如下所示

    下面注意yourRepoName和yourPodName是两个不同的仓库,yourRepoName是管理其他私有库的仓库,yourPodName则是其中的一个私有库。

    创建管理私有库的仓库

    在服务器端创建私有库 注意:创建git仓库必须用git账号登录创建才能有效,如果用root在某些情况下会显示权限错误。

    git init --bare yourRepoName.git chown -R git:git yourRepoName.git/

    创建完成后回到本地终端,执行

    pod repo add yourRepoName git@xxx.xxx.xxx.xxx:/yourRepoName.git

    执行成功后,去~/.cocoapod/repos/目录下会发现多了一个文件夹

    这里的ll-specs只是我自己仓库的名字,实际文件夹名取决于你的yourRepoName。

    创建私有库

    使用命令pod lib create yourPodName来创建私有库项目。期间需要回答几个问题。

    创建完成后有一个Example文件夹和私有库文件夹,把项目文件放到私有库文件夹中的class文件夹内。

    然后打开Example项目,执行pod update。这样,私有库项目文件就导入到example项目中了,可以在example项目中调试私有库程序。

    编写podspec文件

    项目的根目录中,有一个podspec文件。

    Pod::Spec.new do |s| # 项目名称 s.name = 'yourPodName' # 版本号 s.version = '0.1.0' # 项目摘要 s.summary = 'A summary.' # 项目描述 s.description = <<-DESC A description. DESC # 主页,这里要填写可以访问到的地址,不然验证不通过 s.homepage = 'http://github/xxx' s.license = { :type => 'MIT', :file => 'LICENSE' } # 作者信息 s.author = { 'author' => 'author@email.com' } # 项目地址,这里不建议用ssh的地址,会有警告,建议HTTP和HTTPS,最好使用HTTPS s.source = { :git => 'git@xxx.xxx.xxx.xxx:/yourPodName.git', :tag => s.version.to_s } # 最低支持的iOS版本 s.ios.deployment_target = '8.0' # 代码源文件地址 s.source_files = 'yourPodName/Classes/**/*' # 依赖的framework s.frameworks = 'UIKit', 'MapKit' # 依赖的公共库或私有库 s.dependency 'AFNetworking', '~> 2.3' end

    把其中的s.source换成有效的地址就行了,cocoapod建议是https开头的地址。

    验证podspec文件

    使用pod lib lint yourPodName.podspec命令进行本地验证文件有效性。 使用pod spec lint yourPodName.podspec命令进行本地和远程验证文件有效性。

    把私有库添加到cocoapod中

    执行pod repo push yourRepoName yourPodName.podspec命令把私有库添加到私有repo中。

    这个命令还会验证一次podspec文件的有效性,成功后可以在 ~/.cocoapods/repos/yourRepoName/路径中看到私有库已经被添加进yourRepoName文件夹了。如果有警告则加上--allow-warnings。

    团队中使用私有库

    把你的管理私有库的仓库的git地址发个同事,让他们执行下面语句即可。

    pod repo add yourRepoName git@xxx.xxx.xxx.xxx:/yourRepoName.git

    一些坑

    需要注意的一点是使用pod lib create yourPodName创建项目的时候会自带.git文件夹,这个.git是只能commit到本地的(看.git/config文件就知道了,里面没有remote信息),需要用户自己把远程git地址设置到push命令中去。

    git remote add origin git@xxx.xxx.xxx.xxx:/yourPodName.git

    再设置push默认分支

    git push --set-upstream origin master

    如果在校验podspec文件中出现warning而验证不通过的时候,可以在命令尾部加上--allow-warnings忽略警告,这样验证就可以通过了。 如果有错,则必须处理。如:

    pod spec lint yourPodName.podspec --allow-warnings

    如果私有库中依赖私有库,则验证podspec文件的时候需要加上–sources参数,否则会出现找不到你依赖的私有库。如:

    pod spec lint yourPodName.podspec --sources='git@xxx.xxx.xxx.xxx:/yourRepoName.git,https://github.com/CocoaPods/Specs'

    如果你的Podfile中的私有库依赖了其他的私有库,在执行pod update的时候报错

    Unable to find a specification for `privatePod` depended upon by `privatePod`

    但是你在执行pod search的时候是可以search到你的私有库的,就是update报找不到的错误。

    这是因为pod update默认只会searchmaster目录下的库,如果你想search你的specs目录,则需要在podfile第一行添加私有库的源即可。

    source 'git@xxx.xxx.xxx.xxx:/yourRepoName.git'
    转载请注明原文地址: https://ju.6miu.com/read-8509.html

    最新回复(0)