iOS-組件化開發(fā)- 遠(yuǎn)程私有庫(kù)

創(chuàng)建遠(yuǎn)程私有管理庫(kù)

  • 在遠(yuǎn)程服務(wù)器(例:碼云镣煮、Coding等)創(chuàng)建私有管理庫(kù)

    就是新建一個(gè)私有項(xiàng)目

  • 本地添加私有管理庫(kù)

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

      7.png

創(chuàng)建私有庫(kù)(組件)

  • 創(chuàng)建私有庫(kù)(組件)

    • 創(chuàng)建模版庫(kù):$ pod lib create HQBase

      使用模版庫(kù)的好處是您访,會(huì)自動(dòng)生成測(cè)試工程斗忌,可以邊開發(fā)庫(kù)邊測(cè)試。

      如果創(chuàng)建不成功第晰,可能原因之一是Xcodecocoapods版本不匹配开缎,升級(jí)cocoapods$ sudo gem install cocoapods

    • 設(shè)置配置信息


      8.png

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


      10.png
    • 把要做成私有庫(kù)(組件)的代碼放入Classes中斤寂,把其他資源文件(圖片、文件等)放在Assets

      11.png

    • 在模版中的測(cè)試工程Example中诚镰,已經(jīng)配置好了Podfile,只需pod install即可

      12.png

    1. 如果私有庫(kù)(組件)中有依賴系統(tǒng)庫(kù)奕坟,則需配置s.frameworkss.library
    2. 如果私有庫(kù)(組件)中有依賴第三方庫(kù),類似SDWebImage怕享、AFNetworking等执赡,需要在HQBase.podspec中添加依賴關(guān)系
      13.png
    • 本地測(cè)試
  • 推送到遠(yuǎn)程服務(wù)器

    • 在遠(yuǎn)程服務(wù)器上創(chuàng)建私有庫(kù)(組件)項(xiàng)目


      14.png
    • 配置HQBase.podspec文件

      homepage是私有庫(kù)(組件)倉(cāng)庫(kù)的地址,source是私有庫(kù)(組件)代碼地址

      15.png
    • 本地驗(yàn)證HQBase.podspec配置是否正確

      • $ pod lib lint
      • $ pod lib lint --allow-warnings
      16.png
    • 提交遠(yuǎn)程倉(cāng)庫(kù)

      • git管理

        • $ git add .
        • $ git commit -m "描述信息"
        • $ git remote add 遠(yuǎn)程代碼地址
        • $ git push origin master
      • 增加標(biāo)簽

        • $ git tag '0.1.0'

        此標(biāo)簽號(hào)必須與HQBase.podspec中的s.version一致

        • $ git push --tags
      • 遠(yuǎn)程驗(yàn)證: $ pod spec lint --allow-warnings

        17.png

  • 推送到遠(yuǎn)程私有管理庫(kù)

    • $ pod repo push 遠(yuǎn)程私有管理庫(kù) 本地個(gè)人私有庫(kù).podspec

    • 例: $ pod repo push HQSpecs HQBase.podspec

      18.png
  • 使用

    • 可以通過pod search來搜索查詢私有組件

    • $ pod search HQBase

      19.png

      20.png
    • 在宿主項(xiàng)目函筋,直接在Podfile文件中配置

      21.png

    需要注意的是沙合,必須配置兩個(gè)源,這樣就可以同時(shí)使用公有庫(kù)和私有庫(kù)

升級(jí)私有庫(kù)(組件)

  • 添加代碼到Classes

    22.png

  • 本地測(cè)試

    • Example$ pod install
    • 編譯測(cè)試通過
  • 推送到遠(yuǎn)程服務(wù)器

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

      23.png

    • git管理

      • $ git add .
      • $ git commit -m "描述信息"
      • $ git push origin master
    • 增加標(biāo)簽

      • $ git tag '0.2.0'
      • $ git push --tags
    • 遠(yuǎn)程驗(yàn)證: $ pod spec lint --allow-warnings

  • 推送到遠(yuǎn)程私有管理庫(kù)

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

    • 宿主項(xiàng)目中首懈,$ pod update即可绊率。

子私有庫(kù)(組件)

如果私有庫(kù)(組件)有很多功能,我們所用的只是其中的一個(gè)子功能究履,就有必要?jiǎng)?chuàng)建子私有庫(kù)(組件)

  • 配置HQBase.podspec文件滤否,添加子私有庫(kù)(組件)
    • 增加版本號(hào)version

    • 設(shè)置依賴dependency

      依賴放在具體的子索引庫(kù)中,誰(shuí)需要最仑,誰(shuí)設(shè)置藐俺,不需要,不設(shè)置

    • 增加subspec

      24.png

    • 本地驗(yàn)證: $ pod lib lint --allow-warnings

  • 推送到遠(yuǎn)程服務(wù)器
    • git管理
      • $ git add .
      • $ git commit -m "描述信息"
      • $ git push origin master
    • 增加標(biāo)簽
      • $ git tag '0.3.0'
      • $ git push --tags
    • 遠(yuǎn)程驗(yàn)證: $ pod spec lint --allow-warnings
  • 推送到遠(yuǎn)程私有管理庫(kù)
    • $ pod repo push HQSpecs HQBase.podspec
  • 使用
    • $ pod search HQBase

      26.png
    • 宿主項(xiàng)目中泥彤,可以$ pod install需要的子功能

      25.png

私有庫(kù)(組件)中資源文件的使用

    1. xib
    • 在私有庫(kù)(組件)中加載xib文件需注意以下幾點(diǎn):

        1. 所有使用bundle的地方都必須動(dòng)態(tài)獲取
        [NSBundle bundleForClass:[self class]] 
        
        27.png
        1. 不能使用mainBundle欲芹, 因?yàn)榇藭r(shí)的xib文件不在mainBundle下,是在xxx.framework
        28.png
    • 使用

       UILabel *l = [[UILabel alloc]init];
      l.frame = CGRectMake(30, 20, 300, 30);
      l.text = @"1吟吝、測(cè)試加載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

    • 在私有庫(kù)(組件)中菱父,圖片資源的存放位置和xib文件一樣,已經(jīng)不在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浙宜、測(cè)試加載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、測(cè)試加載圖片";
          [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]; 
        

    在加載圖片時(shí)蛹磺,圖片名稱必須是全名粟瞬, 如: aixin.pngaixin@2x.png称开、aixin@3x.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亩钟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳖轰,更是在濱河造成了極大的恐慌清酥,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕴侣,死亡現(xiàn)場(chǎng)離奇詭異焰轻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)昆雀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門辱志,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狞膘,你說我怎么就攤上這事揩懒。” “怎么了挽封?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵已球,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)智亮,這世上最難降的妖魔是什么忆某? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮阔蛉,結(jié)果婚禮上弃舒,老公的妹妹穿的比我還像新娘。我一直安慰自己状原,他們只是感情好聋呢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颠区,像睡著了一般坝冕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓦呼,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音测暗,去河邊找鬼央串。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碗啄,可吹牛的內(nèi)容都是我干的质和。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼稚字,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼饲宿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胆描,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤瘫想,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后昌讲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體国夜,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年短绸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了车吹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡醋闭,死狀恐怖窄驹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情证逻,我是刑警寧澤乐埠,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響饮戳,放射性物質(zhì)發(fā)生泄漏豪治。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一扯罐、第九天 我趴在偏房一處隱蔽的房頂上張望负拟。 院中可真熱鬧,春花似錦歹河、人聲如沸掩浙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厨姚。三九已至,卻和暖如春键菱,著一層夾襖步出監(jiān)牢的瞬間谬墙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工经备, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拭抬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓侵蒙,卻偏偏與公主長(zhǎng)得像造虎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纷闺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 首先算凿,也許有人覺得,開發(fā)使用遠(yuǎn)程私有庫(kù)很麻煩犁功,還不如直接寫好氓轰,拖到項(xiàng)目中直接使用來的方便〔ㄗ可我想說的是戒努,在一個(gè)小的...
    悠閑自在的蝸牛閱讀 2,174評(píng)論 0 10
  • 最近在學(xué)習(xí)vue.js的時(shí)候發(fā)現(xiàn),vue的組件化的思想對(duì)于編寫代碼是一個(gè)非常有用的事情镐躲。 首先為什么需要組件化储玫? ...
    拂曉的云閱讀 7,155評(píng)論 6 23
  • 前言 本篇主要講解組件化架構(gòu)思想,從零教你如何組件化一個(gè)項(xiàng)目萤皂。 如果喜歡我的文章撒穷,可以關(guān)注我微博:袁崢Seemyg...
    袁崢閱讀 21,131評(píng)論 41 338
  • 項(xiàng)目組件化、平臺(tái)化是技術(shù)公司的共同目標(biāo)裆熙,越來越多的技術(shù)公司推崇使用pod管理第三方庫(kù)以及私有組件端礼,一方面使項(xiàng)目架構(gòu)...
    swu_luo閱讀 21,485評(píng)論 0 39
  • 本地私有庫(kù)不能滿足團(tuán)隊(duì)開發(fā)的需要禽笑,存在一下問題: 需要主動(dòng)指明路徑,然后庫(kù)的本地位置就不能動(dòng)了蛤奥,否則Podfile...
    Lovell_閱讀 379評(píng)論 0 0