iOS 组件化-本地私有库

CocoaPods本地私有库

组件化-使用CocoaPods管理的本地私有库,可以分为3种

  1. 本地私有引用(本地pod)
  2. 本地工程嵌套
  3. 内部framework

第一种 本地私有引用(本地pod)

  1. 新建项目根文件夹TestProject(包含主工程和各个库工程的文件夹)

  2. 在 TestProject 内部

    1. 新建主工程文件夹TestProject
    2. 新建库文件夹TestProjectLib
  3. TestProjectLib 库文件夹下

    1. 新建 Classes 文件夹,用于存放库文件
    2. 初始化 git 仓库
      $ git init
    3. 初始化 spec 文件
      $ pod spec create TestProjectLib
      执行命令则会出现一个 TestProjectLib.podspec 文件。
  4. 配置 spec 文件

    • s.name
    • s.version
    • s.summary = "TestProjectLib 对库的简单注释"
    • s.description = "xxxxx具体描述信息运用什么思想什么技术使用了xx实现了xx解决了xx取得了xx"
      或者
      s.description   = <<-DESC
                          xxxxx具体描述信息运用什么思想什么技术使用了xx实现了xx解决了xx取得了xx
                        DESC
      

    注意:description描述内容要比summary概要内容长,不然会出问题!

    • s.homepage = "http://EXAMPLE/TestProjectLib"

      • 本地库,homepage默认即可;
      • 远程库,需要配置远程地址;
    • s.licence = "MIT" 去掉(example)即可

      原始s.licence = "MIT (example)"

    • Source Location
      s.source = { :git => "", :tag => "#{spec.version}" }
      本地库将git指向地址设置为空即可。

      原始spec.source = { :git => "http://EXAMPLE/TestProjectLib.git", :tag => "#{spec.version}" }

    • Source Code

      • spec.source_files = "Classes", "Classes/**/*.{h,m}"
      • spec.exclude_files = "Classes/Exclude"
  5. 创建对应测试工程

    • 在.podspec同目录下,新建测试工程文件夹,名称为Example
    • cd到Example中,新建测试工程,名称与库名称一致即可,也可加后缀Example
  6. 在主工程中配置pod
    进入主工程TestProject文件夹,与.xcodeproj文件在同一目录下

    • 初始化Podfile文件
      $ pod init
    • 配置pod
      • 编辑Podfile,指定库的路径
        $ pod 'TestProjectLib', :path => '../TestProjectLib'
        注意: 保证本地路径的准确性
    • 安装库
      $ pod install
      安装成功
  7. 主工程中使用库
    通过.xcworkspace打开主工程,在导航区域查看文件结构

    • 如果是本地库,可以看到在 Pods - Development Pods 下看到引入的本地库 TestProjectLib;
      • 本地库会全部出现在 Development Pods 文件夹下;
    • 在主工程中,编辑库文件,会自动同步修改本地库;
补充:使用模板自动创建一个库和对应的测试工程
  1. 创建
    $ pod lib create xxx
  2. 测试工程使用pod本地依赖的方式引入私有库来使用

第二种 本地工程嵌套

  1. 新建主工程

  2. 在主工程文件夹下新建多个本地库工程

  3. 在主工程的导航文件系统中添加库工程文件

  4. 使用库

    1. 导入头文件,注意路径
      import "../组件02/组件02/Person.h"
    2. 可能会报一个Undefined symbol: _OBJC_CLASS_$_Person的错误。
      解决方法为
    3. 在Xcode中打开主工程,可以选择不同的scheme菜单来调试不同的库工程
  5. 缺点
    库工程也在主工程的目录下,没有在物理层很好地隔离,造成管理不便。


第三种 内部framework

  1. 新建主工程
  2. Xcode中,选中主工程target,在target导航窗口,点击左下角加号+,选择新建framework
  3. 缺点
    库framework也是在主工程目录下,没有很好隔离。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容