PodSpecs 本地库的使用

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

新库创建

一、创建私有的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://47.94.224.176/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 文件如下

参考1https://blog.csdn.net/z119901214/article/details/90241251
参考2https://blog.csdn.net/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.csdn.net/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'

sourcegit地址、版本号
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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6