PodSpecs 本地库的使用

本文介绍了如何创建和管理私有的CocoaPods库,包括建立私有pod索引仓库、创建组件库MYHTTPTool、验证和发布podspec文件到私有仓库,以及在项目中使用私有库的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新库创建:

一、创建私有的pod索引仓库

  1. 创建私有远程索引仓库(例如 http://xxxx/ios/MySpecs-iOS.git

  1. 新建pod spec索引仓库(将私有的远程仓库copy到本地)

pod repo add MYPodSpecs-iOS http://xxxx/ios/MySpecs-iOS.git

  1. pod repo命令查看本地索引库

cocoapods
- Type: git (remotes/origin/master)
- URL:  https://github.com/CocoaPods/Specs.git
- Path: /Users/mac_os/.cocoapods/repos/cocoapods
trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/mac_os/.cocoapods/repos/trunk
MYPodSpecs-iOS
- Type: git (main)
- URL:  http://xxx.xxx.xx/ios/MYSpecs-iOS.git
- Path: /Users/mac_os/.cocoapods/repos/MYPodSpecs-iOS

二、创建私有组件库

  1. 创建组件的git 远程仓库(MYHTTPTool)

  1. 创建私有的pod组件库

.1)pod trunk me (查看自己是否已经绑定过,未绑定,使用如下指令绑定)

  1. pod trunk register myemail@126.com '我的名字' --description='这里是描述'
     ***执行完该命令后,绑定的邮箱会收到一封邮件里面包含一个验证的连接,打开该链接进行验证 
  2. pod trunk me  (查看自己是否已经绑定成功)
  3. pod lib create MYHTTPTool (创建组件)
     (**如果pod失败了 CD到文件里面Example 里面 pod install)

3.删除ReplaceMe文件(可以不删)

4. 将需要封装的文件复制到./MYHTTPTool/MYHTTPTool/Classes中

5.然后cd到Example文件下更新 (pod update --no-repo-update)

6.修改 MYHTTPTool.podspec 文件如下

参考1:https://blog.youkuaiyun.com/z119901214/article/details/90241251
参考2:https://blog.youkuaiyun.com/tfy_2425482491/article/details/89637882?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167522963816800217013645%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167522963816800217013645&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-89637882-null-null.142^v72^insert_down2,201^v4^add_ask&utm_term=You%20can%20use%20the%20%60--no-clean%60%20option%20to%20inspect%20any%20issue.&spm=1018.2226.3001.4187
参考3: https://blog.youkuaiyun.com/z119901214/article/details/90241251

s.name = ""  这里填写你上传的项目文字

s.version = "0.0.1" 你的第一个版本号。

s.summary = "" 这里写你项目的详细介绍和使用方法,

s.description = "版本控制数据" 这里填写具体信息

s.homepage = "https://github.com/13662049573/TFY_Model" 这里填写你github下载地址

s.license = "MIT" 这里是官方规定写这个就可以。

s.author = { "tianfengyou" => "420144542@qq.com" } 这里写你自己刚才注册trunk的时候账户和邮箱就可以

s.platform = :ios,'10.0'  这里是写你项目支持的最低版本。

s.source = { :git => "https://github.com/13662049573/TFY_Model.git", :tag => 'v0.0.1'} 这里写你github上面的下载地址和版本号控制。

s.source_files = "TFY_Model/TFY_ModelKit/*.{h,m}" 这里配置最重要的,文件路径后面对这里遇见问题和配置的更多详细信息。

s.requires_arc = true 这里是否支持ARC 

s.frameworks = "UIKit"  涉及的库多库可以用,隔开。

s.ios.deployment_target = "9.0"

================================================

name:私有库包名
s.name = 'JPUtils'

version:当前版本号
s.version = '1.0.1'

platform:最低支持系统
s.platform = :ios, '8.0'

source:git地址、版本号
s.source = { :git => 'git地址', :tag => '1.0.1' }  
#等价于:s.source = { 'git' => 'git地址', 'tag' => '1.0.1' }

requires_arc:是否为arc
s.requires_arc = true

source_files:代码源文件路劲
s.source_files = 'JPUtils/utils/required/*.{h.m}', 'JPUtils/utils/optional/*.{h.m}'  
s.source_files = 'JPUtils/utils/**/*.{h.m}'

 public_header_files:公共头文件路径
s.public_header_files = 'JPUtils/public/header/*.h' 

libraries:系统libs
s.libraries = 'sqlite3', 'stdc++'  
#等价于:s.libraries = ['sqlite3', 'stdc++']

vendored_libraries:内置libs路径
s.vendored_libraries = 'JPUtils/utils/required/tool.a', 'JPUtils/utils/optional/common.a'   
s.vendored_libraries = 'JPUtils/utils/**/*.a'

resources: 资源文件地址
s.resources = 'JPUtils/utils/resource.bundle'
s.resources = 'JPUtils/utils/*.bundle'

frameworks:系统frameworks
s.frameworks = ['UIKit', 'Foundation']

vendored_frameworks:内置frameworks路径
s.vendored_frameworks = 'JPUtils/utils/required/tool.framework', 'JPUtils/utils/optional/common.framework'
s.vendored_frameworks = 'JPUtils/utils/**/*.framework' 


valid_archs:支持的处理器
valid_archs = ['armv7s', 'arm64', 'x86_64', 'armv7', 'arm64e']

dependency:关联第三方库、组件库
s.dependency  'AFNetworking'   
s.dependency  'MKNetwork'

pod_target_xcconfig:当前库的Build Settings
  s.pod_target_xcconfig = { :OTHER_LDFLAGS => '-lObjC', 
  :CLANG_CXX_LANGUAGE_STANDARD => 'c++11', 
  :CLANG_CXX_LIBRARY => 'libc++' }
 
# :OTHER_LDFLAGS等价于'OTHER_LDFLAGS'
# :CLANG_CXX_LANGUAGE_STANDARD等价于'CLANG_CXX_LANGUAGE_STANDARD'
# :CLANG_CXX_LIBRARY等价于'CLANG_CXX_LIBRARY'
————————————————

user_target_xcconfig: project中的Build Settings

  s.user_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC', 
  'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11', 
  'CLANG_CXX_LIBRARY' => 'libc++' }
————————————————

subspec :pod子模块配置
 
s.subspec 'catogerys' do |ss|
   ss.source_files = "component/catogerys/**/*.{h,m}"
   ss.dependency "JPUtils"
end
 
s.subspec 'controllers' do |ss|
   ss.source_files = "component/controllers/**/*.{h,m}", "component/utils/**/*.{h,m}"
   ss.dependency "component/catogerys"
end
————————————————
备注:文件路径中 * 表示文件名通配符, ** 表示文件夹递归匹配;数组用逗号隔开(如: s.libraries = 'a', 'b' 或者 s.libraries = ['a', 'b'] )。

7.校验本地索引文件 MYHTTPTool.podspec

Example编译通过后,cd到 MYHTTPTool.podspec所在文件夹下,执行

pod lib lint --allow-warnings 或者

pod lib lint --allow-warnings --sources=trunk,MYPodSpecs-iOS

--sources:需要引⽤的spec,默认只依赖master,如果当前pod依赖了私有库,需要将其对应的spec包含进来,不然会报找不到对应库的问题。参数可以是本地spec的名称,也可以是git地址。
--allow-warnings:有警告会通过不了,如果警告是⽆关紧要的,可以加上,让检测通过。
--verbose:打印详细的检验过程
--use-libraries:⼯程或者依赖⾥⾯了静态库(*.a⽂件)或者是framework
pod lib lint 表示在本地校验索引文件
pod spec lint 表示在本地和远程都校验索引文件

8. 将MYHTTPTool本地组件库与远程的仓库git关联起来

9.上传 MYHTTPTool.podspec 索引文件到我们的私有远程索引仓库 MYPodSpecs-iOS,命令如下:(进入到MYHTTPTool.podspec目录)

pod repo push MYPodSpecs-iOS MYHTTPTool.podspec --allow-warnings

上面命令对 MYHTTPTool.podspec 文件做了两个操作:一个是将其推送到私有的远程索引仓库,可以去公司的 git 上面 MYPodSpecs 索引仓库中查看;另一个是将其 copy 到私有的本地索引仓库,这个可以去目录:/Users/admin/.cocoapods/repos/MYPodSpecs 下查看到。

至此私有的组件库MYHTTPTool就创建完成了,可以在终端执行 pod search MYHTTPTool来查询它

之后项目维护使用:

1.pod里面设置

install! 'cocoapods', :disable_input_output_paths => true
platform :ios, '12.0'
inhibit_all_warnings!
source 'http://xxxxx/ios/MYSpecs-iOS.git'
source 'https://cdn.cocoapods.org/'

2.日常开发维护

  pod 'MYShareKit', '0.1.12'      开发完成后pod repo push后可以clone
#    pod 'MYShareKit', :path => '../MYPods/MYShareKit'  开发时候启用
  1. 基本步骤流程

1.
 cd /Users/name/Desktop/Cocoapods/MYHTTPTool/Example
  pod update --no-repo-update
 2.
 cd /Users/name/Desktop/Cocoapods/MYHTTPTool
 pod lib lint --use-libraries --verbose
pod lib lint --use-libraries --verbose
失败有可能使用
pod lib lint --allow-warnings --sources=trunk,MYPodSpecs-iOS

 3.
pod repo push MYPodSpecs-iOS MYHTTPTool.podspec --allow-warnings --verbose
 4.
 pod cache clean MYHTTPTool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值