1、组件化的第一步就是创建私有库,是iOS项目组件化开发的基本操作。接下来就来说一说iOS中私有库的创建方法。为了方便称呼防止后边理解错误,我把私有库称作组件
2、首先我们创建一个空文件夹,名为BSComponent,然后在终端中打开这个文件夹之后创建的其他组件也将存放在这个文件夹便于管理终端进入BSComponent目录
3、执行命令 pod lib create HomePage 创建名为HomePage的组件 这里默认已经安装好了cocoapods
执行创建仓库命令 这个HomePage将来就是首页组件
输入命令行后还会有一系列的选项,
pod lib create HomePage
What platform do you want to use?? [ iOS / macOS ]
> ios
What language do you want to use?? [ Swift / ObjC ]
> objc
Would you like to include a demo application with your library? [ Yes / No ]
> yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> none
Would you like to do view based testing? [ Yes / No ]
> yes
What is your class prefix?
> bs
4
、创建完成后打开Gitee 创建一个私有仓库 HomePage
5、将HomePage上传到远程仓库,依次执行下列命令 先拉取再提交,以免报错,但是如果你创建的是空仓库拉取的时候会报错,如果pull的时候报错,直接push就可以了。
git remote add origin https://xxxxx/HomePage.git
git pull origin master --allow-unrelated-histories
git push -u origin master //如果首次失败可以强制执行 git push -f origin master
6、重点来了。提交完毕后必须给HomePage组件一个tag值。因为组件库中的podspec文件中有对应的tag这两个必须一致。
git add . //添加文件到缓冲区
git commit -m "描述" //从缓冲区提交代码到仓库
git tag -a '1.0.1' -m '描述'
git push --tags
7、这时候可以用sourseTree添加改组件库,方便后期管理维护。直接到BSComponent文件夹添加即可,这样我们远程仓库已经创建完毕并与本地关联成功
8、创建组件索引库,再次打开Gitee ,创建索引库 BSComponent
pod repo add BSComponent https://xxxxxx/BSComponent.git
把添加远程所引库到本地,这个所引库理论上和cocoapods库是同级的。所以所在目录是
cd ~/.cocoapods/repos
pod repo
执行pod repo 看下所引库是否添加成功
luu@deMacBook-Pro Example % pod repo
BSComponent
- Type: git (master)
- URL: https://xxxx/BSComponent.git
- Path: /Users/luu/.cocoapods/repos/BSComponent
cocoapods
- Type: git (unknown)
- URL: https://github.com/CocoaPods/Specs.git
- Path: /Users/luu/.cocoapods/repos/cocoapods
trunk
- Type: CDN
- URL: https://cdn.cocoapods.org/
- Path: /Users/luu/.cocoapods/repos/trunk
9、把组件绑定到组件索引库上,回到HomePage库文件目录下
这一步多容易掉坑里,上边说的tag必须配置正确,
1、保证修改完HomePage组件提交后 再打新tag 每次修改组件都要在组件的.podspec文件中修改tag,之后打得tag也要一致。
2、.podspec目录中有资源所引,一般情况创建出来的所引都是错的,必须要改,所对应的所引就是gitea所对的git地址,也就是HomePage的git地址、HTTPS的就可以 下面就是个.podspec文件,这里要执行成功s.homepage和s.source必须是对的。
Pod::Spec.new do |s|
s.name = 'HomePage'
s.version = '1.0.0'
s.summary = 'A short description of HomePage.'
s.description = <<-DESC
s.homepage = 'https://xxxx/HomePage'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '[email protected]' => '[email protected]' }
s.source = { :git => 'https://xxxx/HomePage.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/'
s.ios.deployment_target = '9.0'
s.source_files = 'HomePage/Classes/**/*'
# s.resource_bundles = {
# 'BSRouter' => ['HomePage/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'HomePage'
end
3、执行pod repo push<私有索引库名称><私有库podspec名称>
pod repo push BSComponent HomePage.podspec --verbose --use-libraries --allow-warnings
--verbose --use-libraries --allow-warnings 是忽略警告
下边这段命令是检测当前Homepage是否正常。如果上边的那段失败可以检测下原因,一般报错都是不太准确。
pod lib lint --verbose --use-libraries --allow-warnings
10、大功告成,去项目Podfile中添加source 'https://xxxxx/BSComponent.git'
source 'https://xxxxx/BSComponent.git'
pod 'HomePage','~> 6.6.8'
执行pod install试试吧。