关于组件化,推荐Casa Taloyum的这篇文章,个人也觉得用runtime来实现组件化编程才是最apple的方式,这篇文章写的通俗易懂,内容很详细,感谢Casa Taloyum的这几篇架构的文章🙏。
以该片文章内容为前提,记录下私有pod源仓库的创建过程。(示例demo)
1.在github上new 一个 repository作为我们的私有Pod源仓库。然后分别new三个repository作为我们的组件部分:A, A_Category & B_Category.
2.执行一下命令,将该仓库添加到本地。
pod repo add [私有Pod源仓库名字] [私有Pod源的repo地址]
3.当在本地把A, A_Category, B_Category等组件做好之后,要先把他们push到gitHub并打一个tag,以B_Category为例:
git add .
git commit -m "0.0.1"
git push
git tag 0.0.1
git push origin master --tags
tag打完之后,先验证一下我们的podspec文件是否正确,B_Category的podspec内容如下
Pod::Spec.new do |s|
s.name = "B_Category"
s.version = "0.0.1" //这里要和上面的tag对应。
s.summary = "A short description of B_Category."
s.description = <<-DESC
A short description of B_Category.
DESC
s.homepage = "https://github.com/LFModulizationDemo/B_Category"
s.license = "MIT"
s.author = { "archerLj" => "lj0011977@163.com" }
s.platform = :ios, "7.0"
s.ios.deployment_target = "7.0"
s.source = { :git => "https://github.com/LFModulizationDemo/B_Category.git", :tag => "#{s.version}" }
s.source_files = "B_Category/B_Category/**/*.{h,m}"
s.requires_arc = true
s.dependency "CTMediator"
end
创建podspec文件的命令
pod spec create B_Category
执行下列命令验证podspec正确性:
pod spec lint B_Category.podspec --verbose --allow-warnings
验证通过之后,将其push到我们的私有Pod源仓库中去即可
pod repo push PrivateRepo B_Category.podspec --verbose --allow-warnings
如果本身组件还依赖其他的私有pod源中的组件,以A模块为例,它不但依赖CTMediator
, 还依赖B_Category
, 其中B_Category
是我们的私有Pod源中的一个组件,这时候验证podspec文件就要指定B_Category组件的位置。
pod spec lint --sources='PrivateRepo,master' A.podspec --verbose --allow-warnings
这里sources中指定私有Pod源的名字,不要使用url,通过下列命令查看名字即可:
pod repo list
4. 将三个组件全部push到私有源之后,在主工程的Podfile文件中添加他们即可:
source 'https://github.com/LFModulizationDemo/PrivateRepo.git'
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'MainProject' do
pod 'A'
pod 'A_Category'
pod 'B_Category'
pod 'HandyFrame'
end
这里需要指定我们私有源的位置https://github.com/LFModulizationDemo/PrivateRepo.git
, 一旦指定了私有源,就一定要把官方的也带上。
执行pod install
去玩即可。
最后帮朋友打个小广告