声明: 该文章描述,将制作好的 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' => 'lifeng@playdayy.com.com' }
s.source = { :git => 'https://xxxx.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
# 系统支持的最低版本
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
网友评论