美文网首页
组件化管理

组件化管理

作者: Johnny_Wu | 来源:发表于2021-01-21 21:03 被阅读0次

通过cocopods来管理我们自己的组件,把开发好的组件上传到github,然后通过cocopods导入到我们的项目,类似其他的第三方库一样。

一、pod组件管理的灵魂:podspec文件

#
# Be sure to run `pod lib lint dbMule.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'dbMule'
  s.version          = '0.1.4'
  s.summary          = 'A short description of dbMule.'

# 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://github.com/wulang150/dbMule'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'wulang150' => '475750165@qq.com' }
  s.source           = { :git => 'https://github.com/wulang150/dbMule.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'dbMule/Classes/*'
  
  # s.resource_bundles = {
  #   'dbMule' => ['dbMule/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

主要参数意思:
s.name = 'dbMule'
pod导入后,生成的组件的名字

s.source_files = 'dbMule/Classes/*'
其他项目pod导入这个组件后,只需要的文件。一般都是组件代码和测试项目代码一起提交到github的,别人要用我们库的时候,不可能把测试的工程也导过去。这个就是控制导入的文件。

s.source = { :git => 'https://github.com/wulang150/dbMule.git', :tag => s.version.to_s }
podspec和组件文件不需要在同一个地方,有podspec文件就可以了,它会在s.source路径下找到对应组件文件。所以你也可以这个podspec放到其他的git空间进行统一的管理:

执行: pod repo push 私有索引库名称 spec名称.podspec
pod repo push ZYHModule XXModule.podspec --allow-warnings

s.private_header_files = "#{mydir}*/.{h,hpp}"
私有头文件,不公开出来,别人看不到

s.resource = "#{mydir}/.plist","#{mydir}Resources/.lproj"
资源文件,导入后,统一在Resources文件夹中

s.frameworks = 'OpenAL', 'MobileCoreServices'
依赖的frameworks

s.libraries = 'bz2.1.0', 'bz2'
依赖的系统库

s.dependency 'ZXMQTT'
依赖其他组件

s.vendored_libraries = "#{mydir}AKVideoPlayer/AVBaseMedia/AVMedia/libAVBaseMedia.a"
一些组件使用的静态库

s.pod_target_xcconfig = {
'HEADER_SEARCH_PATHS' => "{PODS_ROOT}/../BCMain/libs/basestationlibs/OpenLib{PODS_ROOT}/../BCMain/libs/basestationlibs/home_security/inc"
}
对应的Xcode build settings配置项:

截屏2021-01-21 下午9.01.49.png

其他的xcode配置项,也可以类似处理

二、有两种导入方式:

1、本地导入

我们的组件开发,总得有一个调试的工程对应。本地导入就是居于这种思路。

通过指令:pod lib create 组件名
自动会生成一个组件文件和对应的调试工程。对应的podfile如下:

use_frameworks!

platform :ios, '8.0'

target 'dbMule_Example' do
  pod 'dbMule', :path => '../'

  target 'dbMule_Tests' do
    inherit! :search_paths

    
  end
end

(1)重点:pod 'dbMule', :path => '../'
后面的path => '../'就是对于的podspec文件所在位置:

截屏2021-01-21 下午8.40.09.png

如上,podfile目录的上一级就有podspec文件

(2)pod 'dbMule',:git => '../', :branch => 'myBranch'
也可以在其他分支导入,上面命令是从分支myBranch导入组件dbMule。这里引入一个工程管理方案:可以通过多分支管理多品线在同一个工程的项目,每个品线单独一个分支,独立开发,有相互关联的品线,就通过上面的指令引入其他品线内容。

2、远程导入(我们导入的其他第三方库就是这种)

pod 'dbMule', :git => 'https://github.com/wulang150/dbMule.git'
如上,pod后面对应一个git地址了,这个地址根目录下必须有对应的podspec文件

相关文章

  • tomcat-4-Lifecycle

    什么是Lifecycle 组件tomcat启动时初始化依赖的下层组件父组件管理子组件 Servlet加载和实例化(...

  • tomcat-5-Pipeline

    什么是Lifecycle 组件tomcat启动时初始化依赖的下层组件父组件管理子组件 Servlet加载和实例化(...

  • iOS端组件化架构开发与管理

    iOS组件化参考: Casa大神的iOS应用架构谈 组件化方案 组件化架构漫谈 开发管理 得益于Git&Cocoa...

  • 组件化管理

    通过cocopods来管理我们自己的组件,把开发好的组件上传到github,然后通过cocopods导入到我们的项...

  • (21)打鸡儿教你Vue.js

    组件化思想: 组件化实现功能模块的复用 高执行效率 开发单页面复杂应用 组件状态管理(vuex) 多组件的混合使用...

  • iOS组件化 03 - xib和Storyboard的使用

    往期回顾 iOS组件化 01 - 本地私有库的使用iOS组件化 02 - 组件中图片资源管理方案优化 1. 使用...

  • iOS组件化之生命周期管理

    组件化之生命周期管理 组件化过程中,不同模块可能需要实现UIApplicationDelegate的代理方法。非组...

  • Vue --- 组件化

    组件化让代码更加方便组织和管理,并且扩展性也更强 组件化基本使用过程: 创建组件构造器:cpnC = Vue.ex...

  • web前端开发环境搭建

    使用到的工具: NodeJs (组件管理) GIT (代码管理) browserify (模块化) Sass (...

  • 微信小程序(四) 组件化管理

    基于之前学过 react 以及 react native,觉得组件化管理真的是很棒,所以在想小程序是否也能用组件化...

网友评论

      本文标题:组件化管理

      本文链接:https://www.haomeiwen.com/subject/erndzktx.html