pod 私有库的制作

声明: 该文章描述,将制作好的 framework ,打包成pod 私有库

创建私有库模板

pod lib create MyLIbName

根据创建的提示,选择库的基本配置信息


WeChatcdf8a1a48343d96065fe7943dc78bc9b.png

远端创建私有仓库

1 远端通过新建仓库创建一个私有仓库
2 将本地仓库和远端仓库做关联
git remote add origin https://xxxxx/MyLibName.git
拉取远端仓库
git pull origin master --allow-unrelated-histories
提交远端
git push -u origin master
提交文件

git add
git commit -m "提交信息"
 ```

注:后续的拉取和提交等操作可以通过git的可视化工具操作包括标签的提交等信息
提交标签

git tag -a '版本号' -m '提交信息'
git push --tags

远端创建索引库

将远端索引库添加到本地

pod repo add MyPodSpecs https://xxxxxx/MyPodSpecs.git

现在通过执行 pod repo 可以查看当前pod 下的源是否已经添加成功

编写库的基本信息

Pod::Spec.new do |s|
 s.name             = '库名称'
 s.version          = '版本号'
 s.summary          = '描述'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

 s.description      = <<-DESC
TODO: Add long description of the pod here.
                      DESC

 s.homepage         = 'https://xxxxx'
 # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
 s.license          = { :type => 'MIT', :file => 'LICENSE' }
 s.author           = { 'tiantian' => '[email protected]' }
 s.source           = { :git => 'https://xxxx.git', :tag => s.version.to_s }
 # s.social_media_url = 'https://twitter.com/'
 #  系统支持的最低版本
 s.ios.deployment_target = '10.0'
#   由于项目库是通过导入的framework 形式集成的,所以在这个位置填写上,多个库之间用 “,” 隔开
 s.vendored_frameworks = 'xx/Classes/xx.framework','xx/Classes/xxx.framework'
#    如果项目是通过源码形式导入,采用下边的方式,
 # s.source_files = 'xx/Classes/**/*'
#    依赖的系统库
 s.frameworks = 'UIKit','Foundation','AdSupport'
#    依赖的系统library
 s.libraries = 'c++','bz2','c++abi','resolv.9','sqlite3.0','sqlite3','xml2.2','xml2'
#    bundle 资源文件,以下这种写法,bundle 不会主动添加的 mainBundle 中
 s.resource_bundles = {
   'xx' => ['xx/Assets/*.{xib,png,xcassets,nib,bundle,csv,lproj}']
 }
#    依赖的三方库
 s.dependency  'AFNetworking', '~> 4.0.1'

 # s.public_header_files = 'Pod/Classes/**/*.h'

end

将组件库和索引库关联

1 回到组件库的项目目录下
2 执行 pod repo push<索引库名称><私有库名称>
eg:

pod repo push MyPodSpecs MyLIbName --verbose --use-libraries --allow-warnings

eg2:

pod repo push 'MyPodSpecs' 'MyLIbName.podspec' --sources='https://gitlab.playnexx.net/PluginsRepo/pluginlibspecs.git,https://cdn.cocoapods.org/' --verbose --allow-warnings --use-libraries  --skip-import-validation

截止到目前,私有库的制作已经完成,可以通过项目接入去验证 , 在关联库和repo时,根据需求选择 source,source可以是多个,通过 "," 分割

注意

1 添加source源
source 'https://xxxxx/MyPodSpecs.git'
2 一旦我们提交了,通过pod 可以下载到我们自己的私有库,假如这时我们需要修改一部分文件重新提交,重新打tag,然后我们重新拉取,发现会拉取不到最新的节点的库,而且能通过 pod lib lint --allow-warnings,通过远端查看代码和版本号一致,spec 下的podspec 文件也是修改好正确的,通过 pod install --verbose --no-repo-update命令去安装库,通过安装信息我们可以查看到

Fetching external sources
-> Pre-downloading: `xx` from `xxxxxxxxxxxxxxxx/xx-xl.git`, tag `1.0.0`
  > Copying xx from `/Library/Caches/CocoaPods/Pods/External/xx...` to `Pods/xx`

上述可以查看到,并没有去远端重新下载,而是copy本地的库,所以,我们需要根据上边的提示删除掉缓存,删除删除~/Library/Caches/CocoaPods/Pods/External/xx中的所有文件

参考: https://www.jianshu.com/p/96e0f25260ac
常见问题参考:https://www.jianshu.com/p/1e83969bb5a1

你可能感兴趣的:(pod 私有库的制作)