4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
组件化pod库制作之私有库制作 - 奋斗的青春年华的个人空间 - OS...
来自 : 开源中国 发布时间:2021-03-24
昇腾众智计划火热上线!140个算子/模型等你来挑战!>>>

私有podspec制作步骤: 组件化方案一般都是采用私有podspec

1、创建私有Spec Repo

Spec Repo 是所有公开的Pods 的podspec文件的一个git仓库,当使用Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。因此我们需要创建一个类似于master的私有Spec Repo 。同理这个私有Spec Repo我们也要有一个远程端。那么我们需要创建一个 Git仓库,这个仓库你可以创建私有的也可以创建公开的。如果是私有的话,项目中其他同事,你要给他这个Git仓库的权限。组件化一般都是采用私有的。

在git管理的代码托管网站如github或者码云或则自己服务器上创建一个私有仓库:

#podrepoadd[PrivateRepoName][GitHubHTTPScloneURL]

如:$podrepoaddHFPodSpecshttps://coding.net/xxxx/HFPodSpecs.git 其中HFPodSpecs是私有Spec Repo名称

此时如果成功的话进入到~/.cocoapods/repos目录下就可以看到WTSpecs这个目录了。至此第一步创建私有Spec Repo完成。

PS:如果有其他合作人员共同使用这个私有Spec Repo的话在他有对应Git仓库的权限的前提下执行相同的命令添加这个Spec Repo即可。

2、创建Pod项目工程文件

这个第二步没有什么好介绍的,如果是有现有的组件项目,并且在Git的版本管理下,那么这一步就算完成了,可以直接进行下一步了。

如果你的组件还在你冗余庞大的项目中,需要拆分出来或者需要自己从零开始创建一个组件库,那么我建议你使用Cocoapods提供的一个工具将第二步与第三步结合起来做。

现在来说一下这个工具,相关的文档介绍是Using Pod Lib Create就拿我创建的podTestLibrary为例子具体讲一下这里是如何操作的,先cd到要创建项目的目录CreatLibTestSpec然后执行

$ pod lib create podName

如:pod lib createTestLibSpec TestLibSpec是你pod的名称

终端会显示如下,依次根据需要选择如下:

What platform do you want to use?? [ iOS / macOS ] (选择平台)

ios

What language do you want to use?? [ Swift / ObjC ] (选择语言)

swift

Would you like to include a demo application with your library? [ Yes / No ] (是否包含 demo)

yes

Which testing frameworks will you use? [ Quick / None ] (测试框架)

None

Would you like to do view based testing? [ Yes / No ]

No

Running pod install on your new library.

成功后会在CreatLibTestSpec目录下创建一个pod工程,目录如下:将你的组件化代码放在/Classes目录下

\"\"

cd 在Example工程目录下执行 pod update命令

打开项目工程,可以看到库文件都被加载到Pods子项目中了
不过它们并没有在Pods目录下,而是跟测试项目一样存在于Development Pods/MyLib中,这是因为我们是在本地测试,而没有把podspec文件添加到Spec Repo中的缘故。

注意:这里需要注意的是每当添加了新的文件或则以后更新了podsepc的版本都需要重新执行一遍pod update命令


3、提交pods库到远程库https://xxx/SpecComponent.git上

注意:这是你目前单个组件SpecComponent的远程库地址

cd 到CreatLibTestSpec目录下

$git init

$git add .

$git commit -m \"初始化pod\"

$git remote add originhttps://xxx/SpecComponent.git

$git pushorigin master

对于第二部中说的已经有现有的组件项目,并且在Git的版本管理下的情况,其处理步骤如下:

1、cd 到CreatLibTestSpec目录下

2、创建.podspec podName为你自己的组件名称

$ pod spec create podName 或者 pod spec create podName podName库远程地址

4、编辑.podspec文件,编辑完提交到远程

该TestLibSpec.podspec文件在执行pod lib createTestLibSpec已经被自动创建

可以使用文本编辑器编辑上面生成的podName.podspec文件,根据需要填写内容,一般按照下面的格式填就够了:尤其注意s.version版本号就是你代码的tag版本号

Pod::Spec.new do |s|
s.name = \"TestLibSpec\"
s.version = \"0.1.0\"
s.summary = \"TestLibSpec is a kind of learning tools\"
s.description = -DESC
是一个学习podspec的项目 借助这个项目你可以快速构建一个pod库 有了这个学习项目 就无忧了
DESC

s.homepage = \"https://github.com/zhangsan/TestLibSpec\"
s.license = { :type = \"MIT\", :file = \"FILE_LICENSE\" }

s.author = { \"zhangsan\" = \"zhangsan@qq.com\" }
s.platform = :ios, \"8.0\"
s.source = { :git = \"https://github.com/zhangsan/TestLibSpec.git\", :tag = \"#{s.version}\" }
s.source_files = \"TestLibSpec/**/*.{h,m}\"


# s.exclude_files = \"Classes/Exclude\"
# s.public_header_files = \"Classes/**/*.h\"
# s.resource = \"icon.png\"
# s.resources = \"Resources/*.png\"
# s.requires_arc = true
# s.xcconfig = { \"HEADER_SEARCH_PATHS\" = \"$(SDKROOT)/usr/include/libxml2\" }
# s.dependency \"JSONKit\", \"~ 1.4\"

end

5、打版本tag

// 必须组件代码和podspec都提交后才打tag标签,即最后打tag,不然podspec远程的验证可能通不过,因为podspec的版本号就是这个tag标签

$ git tag -a 0.0.1 -m “V0.0.1”

$ git push —tags

6、验证.podspec文件是否可用($ cd podspec文件所在目录)

一般一下几种验证方式:

验证本地的:

$ pod lib lint (验证)

$ pod lib lint —verbose (验证-并显示详细信息)

$ pod lib lint —allow-warnings (验证—忽略警告)

本地和远程都验证:

$ pod spec lint podName.podspec —verbose (这个从本地和远程验证你的pod能否通过验证,上面三个都是从本地验证你的pod能否通过验证)

忽略警告:

pod spec lint—allow-warnings

注意:由于上面TestLibSpec.podspec已经提交到远程,可以直接使用pod spec lint TestLibSpec.podspec —verbose

7、向Spec Repo提交podspec

提交到远端(有警告选最后一个)

$podrepopushHFPodSpecs TestLibSpec.podspec

$ podrepopushHFPodSpecs TestLibSpec.podspec—verbose

$ podrepopushHFPodSpecs TestLibSpec.podspec—allow-warnings

注意:#前面是Spec Repo名字后面是podspec名字

完成之后这个组件库就添加到我们的私有Spec Repo中了,可以进入到~/.cocoapods/repos/HFPodSpecs目录下查看

\"\"

再去看我们的Spec Repo远端仓库,也有了一次提交,这个podspec也已经被Push上去了。

至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了

8、验证仓库(注意search不到,并不一定是没成功,使用podfile中看看能否拉下来代码)

$ pod search podName (搜索你的podName库)

9、在你新开的项目工程中使用podfile,拉取你组件库代码

Pod ‘podName’

注意:podfile一定要写好spec repo地址,如下:

target \'RepoPod\' do

source \'https://github.com/lihaifengdoushi/HFPodSpecs.git\' // 注意:这个一定要写 否则会报错

source\'https://github.com/CocoaPods/Specs.git\' // 注意:这个也一定要写

pod \'TestLibSpec\', \'~ 0.1.0\'

end

10、删除一个私有Spec Repo

$podreporemoveHFPodSpecs

这样在本地就删除了,还可以通过

$podrepoaddHFPodSpecshttps://coding.net/xxxx/HFPodSpecs.git

再把他加过来

如果我们要删除私有Spec Repo下的某一个podspec怎么操作呢,此时无需借助Cocoapods,只需要cd到~/.cocoapods/repos/HFPodSpecs目录下,删掉库目录对应的podspec

$rm-RfTestLibSpec.podspec

然后将变化提交到远程就可以了

至此,私有podspec库制作就完毕了

参考资料:

http://www.cocoachina.com/articles/11206

https://www.jianshu.com/p/59c2d2c4b737

https://xiaozhuanlan.com/topic/2647180539

https://www.jianshu.com/p/1139a603f413

https://www.jianshu.com/p/7b4667cde80b

https://www.jianshu.com/p/006d6ab89c3c

http://www.cocoachina.com/articles/22509

https://www.jianshu.com/p/0a4fbb94ef9f?utm_campaign=hugo utm_medium=reader_share utm_content=note utm_source=weixin-friends

https://www.jianshu.com/p/a73b6bfdb41a

https://blog.51cto.com/13533483/2057387

关于组件化中资源图片和xib的使用,

[UIImage imageWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForResource:[NSString stringWithFormat:@\"businessactivity@%dx.png\",(int)[UIScreen mainScreen].scale] ofType:nil inDirectory:@\"TestLibSpec.bundle\"]];

NSString *nibName = @\"XibView\";//@\"TestLibSpec.bundle/XibView\"

XibView *view = [[NSBundle bundleForClass:[self class]] loadNibNamed:nibName owner:nil options:nil][0];

资料:

https://www.jianshu.com/p/ad4789d88bad

本文链接: http://sanpod.immuno-online.com/view-714870.html

发布于 : 2021-03-24 阅读(0)