iOS-组件化开发- 远程私有库

创建远程私有管理库

  • 在远程服务器(例:码云、Coding等)创建私有管理库

    就是新建一个私有项目

  • 本地添加私有管理库

    • $ pod repo add HQSpecs git@gitee.com:H-Joe/HQSpecs.git

      7.png

创建私有库(组件)

  • 创建私有库(组件)

    • 创建模版库:$ pod lib create HQBase

      使用模版库的好处是,会自动生成测试工程,可以边开发库边测试。

      如果创建不成功,可能原因之一是Xcodecocoapods版本不匹配,升级cocoapods$ sudo gem install cocoapods

    • 设置配置信息


      8.png

      9.png
    • 生成的模版如下:


      10.png
    • 把要做成私有库(组件)的代码放入Classes中,把其他资源文件(图片、文件等)放在Assets

      11.png

    • 在模版中的测试工程Example中,已经配置好了Podfile,只需pod install即可

      12.png

    1. 如果私有库(组件)中有依赖系统库,则需配置s.frameworkss.library
    2. 如果私有库(组件)中有依赖第三方库,类似SDWebImageAFNetworking等,需要在HQBase.podspec中添加依赖关系
      13.png
    • 本地测试
  • 推送到远程服务器

    • 在远程服务器上创建私有库(组件)项目


      14.png
    • 配置HQBase.podspec文件

      homepage是私有库(组件)仓库的地址,source是私有库(组件)代码地址

      15.png
    • 本地验证HQBase.podspec配置是否正确

      • $ pod lib lint
      • $ pod lib lint --allow-warnings
      16.png
    • 提交远程仓库

      • git管理

        • $ git add .
        • $ git commit -m "描述信息"
        • $ git remote add 远程代码地址
        • $ git push origin master
      • 增加标签

        • $ git tag '0.1.0'

        此标签号必须与HQBase.podspec中的s.version一致

        • $ git push --tags
      • 远程验证: $ pod spec lint --allow-warnings

        17.png

  • 推送到远程私有管理库

    • $ pod repo push 远程私有管理库 本地个人私有库.podspec

    • 例: $ pod repo push HQSpecs HQBase.podspec

      18.png
  • 使用

    • 可以通过pod search来搜索查询私有组件

    • $ pod search HQBase

      19.png

      20.png
    • 在宿主项目,直接在Podfile文件中配置

      21.png

    需要注意的是,必须配置两个源,这样就可以同时使用公有库和私有库

升级私有库(组件)

  • 添加代码到Classes

    22.png

  • 本地测试

    • Example$ pod install
    • 编译测试通过
  • 推送到远程服务器

    • 配置HQBase.podspec文件,version版本增加

      23.png

    • git管理

      • $ git add .
      • $ git commit -m "描述信息"
      • $ git push origin master
    • 增加标签

      • $ git tag '0.2.0'
      • $ git push --tags
    • 远程验证: $ pod spec lint --allow-warnings

  • 推送到远程私有管理库

    • $ pod repo push HQSpecs HQBase.podspec
  • 使用

    • 宿主项目中,$ pod update即可。

子私有库(组件)

如果私有库(组件)有很多功能,我们所用的只是其中的一个子功能,就有必要创建子私有库(组件)

  • 配置HQBase.podspec文件,添加子私有库(组件)
    • 增加版本号version

    • 设置依赖dependency

      依赖放在具体的子索引库中,谁需要,谁设置,不需要,不设置

    • 增加subspec

      24.png

    • 本地验证: $ pod lib lint --allow-warnings

  • 推送到远程服务器
    • git管理
      • $ git add .
      • $ git commit -m "描述信息"
      • $ git push origin master
    • 增加标签
      • $ git tag '0.3.0'
      • $ git push --tags
    • 远程验证: $ pod spec lint --allow-warnings
  • 推送到远程私有管理库
    • $ pod repo push HQSpecs HQBase.podspec
  • 使用
    • $ pod search HQBase

      26.png
    • 宿主项目中,可以$ pod install需要的子功能

      25.png

私有库(组件)中资源文件的使用

    1. xib
    • 在私有库(组件)中加载xib文件需注意以下几点:

        1. 所有使用bundle的地方都必须动态获取
        [NSBundle bundleForClass:[self class]] 
        
        27.png
        1. 不能使用mainBundle, 因为此时的xib文件不在mainBundle下,是在xxx.framework
        28.png
    • 使用

       UILabel *l = [[UILabel alloc]init];
      l.frame = CGRectMake(30, 20, 300, 30);
      l.text = @"1、测试加载xib文件";
      [self.view addSubview:l];
      
      TestXibView *t = [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TestXibView" owner:nil options:nil].firstObject;
      t.frame = CGRectMake(30, 60, 300, 100);
      [self.view addSubview:t];
      
    1. 图片
    • 图片资源放置的位置是Assets

      30.png

    • 配置HQMain.podspec文件

      31.png

    • 在私有库(组件)中,图片资源的存放位置和xib文件一样,已经不在mainBundle下,是在xxx.framework下的xxx.bundle

      32.png
    • 使用

        1. xib中使用
        • 在图片名称前面添加组件主bundle, 本例中就是HQMain.bundle
        33.png
         UILabel * l = [[UILabel alloc]init];
        l.frame = CGRectMake(30, 180, 300, 30);
        l.text = @"2、测试加载xib上有图片";
        [self.view addSubview:l];
         
        TestXibImageView * t = [[NSBundle bundleForClass:[self class]] loadNibNamed:@"TestXibImageView" owner:nil options:nil].firstObject;
        t.frame = CGRectMake(100, 220, 120, 100);
        [self.view addSubview:t];
        
        1. 代码加载
        • 不能使用imageNamed方法
        • 使用imageWithContentsOfFile方法
        • 核心代码


          35.png
          UILabel * l = [[UILabel alloc]init];
          l.frame = CGRectMake(30, 340, 300, 30);
          l.text = @"3、测试加载图片";
          [self.view addSubview:l];
          
          NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
          NSString *bundleName = [currentBundle.infoDictionary[@"CFBundleName"] stringByAppendingString:@".bundle"];
          NSString *path = [currentBundle pathForResource:@"aixin.png" ofType:nil inDirectory:bundleName];
          UIImage *image = [UIImage imageWithContentsOfFile:path];
          
          UIImageView * i = [[UIImageView alloc]init];
          i.image = image;
          i.frame = CGRectMake(30, 380, 300, 250);
          [self.view addSubview:i]; 
        

    在加载图片时,图片名称必须是全名, 如: aixin.pngaixin@2x.pngaixin@3x.png

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

推荐阅读更多精彩内容