iOS - 組件化開發(fā)

零奏黑、一些小命令

    git tag -a 0.0.1 -m “Release version 0.1.3″
    -a 0.0.1是增加 名為0.0.1的標(biāo)簽
    -m 后面跟著的是標(biāo)簽的注釋

    git push origin --tags
     提交標(biāo)簽到遠(yuǎn)程服務(wù)器上

    pod init ///創(chuàng)建podfile

    pod lib create JHCSpec /// 創(chuàng)建私有庫
    pod repo add GGSpec https://gitee.com/XXX  ///創(chuàng)建私有庫并關(guān)聯(lián)地址
    pod repo update XXXXXmerios-cocoapods  更新私有源
    pod update --no-repo-update      

    pod lib lint --allow-warnings          ///驗(yàn)證本地 pod 配置是否正確        
    pod spec lint --allow-warnings      ///驗(yàn)證遠(yuǎn)端 pod 配置是否正確
    ///其中--allow-warnings 參數(shù)代表忽略警告漠嵌,如果你的代碼在編譯時(shí)有警告青扔,如果不加這個(gè)參數(shù)就會報(bào)錯(cuò)。

    .ruby文件里面打印 :
        puts '哈哈哈'
        print '哈哈哈'        
        puts "#{LOTUS_TARGET.name}哈哈"

一、組件架構(gòu)(待更新)

  1. 創(chuàng)建本地私有庫

    1)查看本地私有庫

     pod repo
    

    2)創(chuàng)建遠(yuǎn)程spec私有倉庫<github舷手,ggitlab等,要選擇readme初始化>,此步不做表述劲绪,復(fù)制鏈接https://gitee.com/zhugemo/GGSpec.git

    3)創(chuàng)建私有的repo倉庫男窟,并通過pod repo查看是否生成

     pod repo add GGSpec https://gitee.com/zhugemo/GGSpec.git
    
圖片.png

二、創(chuàng)建單獨(dú)組件

  1. 創(chuàng)建倉庫:在github或者gitlab上創(chuàng)建倉庫


    圖片.png
  2. 創(chuàng)建對應(yīng)的本地文件LCGeneral<不用到殼工程目錄>:

     pod  lib create LCGeneral
    
  3. cd到本地文件目錄下贾富,將倉庫和本地文件A關(guān)聯(lián)起來:

     <進(jìn)到子組件下> git remote add origin 本地文件clone地址鏈接 
    
  4. 將本地文件推到倉庫中去:

     git push --set-upstream origin master
       或者   
     git push --set-upstream origin main
    
  5. 到此步時(shí)候歉眷,組件已經(jīng)創(chuàng)建好,可以進(jìn)行后續(xù)的大操作(例:關(guān)聯(lián)到殼工程颤枪、鏡像到cocoapods等)

1)在殼工程里面的Pods - Podfile 里面Module部分把新增組件添加進(jìn)去

2)更改子組件內(nèi)容 汗捡,改完提交修改內(nèi)容

3)提交殼工程

三、關(guān)聯(lián)到殼工程

  1. 創(chuàng)建一個(gè)項(xiàng)目畏纲,pod init 一個(gè)Podfile,接著隨意導(dǎo)入個(gè)三方庫扇住,然后破的install,我們稱之為殼工程

  2. 修改組件里面的.podspec文件的source地址和homepage地址盗胀,修改完后艘蹋,cd到組件目錄將其push到組件對應(yīng)的遠(yuǎn)程倉庫

  3. 在組件目錄中,將組件的.podspec推送到第一步創(chuàng)建的私有庫中票灰,

     如果此命令找不到私有庫的話簿训,用下面指令<通過上面指令找到所有的source私有庫并復(fù)制>
    
       pod repo push GGSpec 'GGGeneral.podspec' --sources='https://gitee.com/zhugemo/GGSpec.git,https://gitee.com/zhugemo/HHSpec.git,http://47.97.230.127:18080/LotusCustomeriOS/cocoapods.git,https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git,https://cdn.cocoapods.org/' --use-libraries --allow-warnings
    
     swift版本要特殊一些咱娶,新增 s.swift_version = '5.0', --use-modular-headers等
     如果因?yàn)槲募窂絾栴},可調(diào)整目錄地址順序强品,例如:
       s.source_files = 'NNGeneral/Classes/**/*'
       s.prefix_header_file = "NNGeneral/Classes/Header/NNGeneral.h"
    
圖片.png
  1. 在殼工程里面的Pods - Podfile文件里面,關(guān)聯(lián)下自己的私有庫地址方便pod install屈糊;
圖片.png
圖片.png
  1. 更改子組件重的相關(guān)代碼<例:實(shí)現(xiàn)相關(guān)組件需求功能>的榛,改完后提交該組件<add、commit逻锐、pull夫晌、push等操作>;

  2. 提交殼工程<add昧诱、commit晓淀、pull、push等操作>

四盏档、組件打tag

舊版
     0)遷入fastlane命令文件
     1)注意Example里面的Scheme是否正確(非Tests)
     2)pod install 編譯看下是否成功
     3)打tag  :fastlane release_pod version:0.1.5
新版:
  0)遷入Scripts命令文件
  1)python3 ../scripts/pod_publish.py <單個(gè)的凶掰,需要進(jìn)入對應(yīng)目錄下>
     python3 ../scripts/project_pods_publish.py <工程的>

五、同一個(gè)git地址下多個(gè)spec

案例:https://github.com/dvlproad/CJUIKit.git

六蜈亩、.podspec文件

image.png

七懦窘、.subspec管理功能模塊

1.屏蔽s.source_files
image.png
1、s.version  設(shè)置該組件版本tag

2稚配、s.source  設(shè)置該組件的指向路徑

3畅涂、s.prefix_header_file  創(chuàng)建設(shè)置該組件的全局文件(例如 .pch 或者 .h )

4、s.resource_bundles  創(chuàng)建設(shè)置該組件的資源庫(例如 .xcassets 或者 .json文件)

5道川、s.source_files  設(shè)置該組件的文件目錄

6午衰、s.framworks  設(shè)置該組件需要引用的系統(tǒng)framework (例如  s.frameworks='CoreLocation','CFNetwork' ,注意后綴需要去掉)

7冒萄、s.libraries  設(shè)置該組件需要引用的系統(tǒng)靜態(tài)庫 (例如 導(dǎo)入libz.tbd和libresolv.tbd 只需要導(dǎo)入 s.libraries = 'resolv','z')

8臊岸、s.ios.vendored_frameworks  設(shè)置引用導(dǎo)入到本組件中的三方framework

9、s.public_header_files 設(shè)置引用導(dǎo)入本組件中的三方庫的頭文件(例:s.public_header_files = 'LCLogin/Classes/JiYan/GTCaptcha4.framework/Headers/*.h')

10宦言、s.ios.vendored_libraries  設(shè)置引用導(dǎo)入到本組件中的三方靜態(tài)庫 (例如 s.ios.vendored_libraries ='LCJiguang/libjverification-ios-8.1.2.a'扇单,命名注意需要增加前綴lib)

11、s.resource_bundles 設(shè)置生成ipa包里面的bundle文件奠旺;   
      在ipa根目錄文件下生成LCLogin.bundle和GTCaptcha4.bundle    
     s.resource_bundles = {
          'LCLogin' => ['LCLogin/LCLogin/Assets/LCLogin.xcassets'],
          'GTCaptcha4' => 
         ['LCLogin/LCLogin/Assets/Resources/GTCaptcha4.bundle/*']
     }

12蜘澜、s.ios.deployment_target  設(shè)置該組件的最低iOS版本支持

13、s.dependency 設(shè)置該組件需要依賴的三方組件/庫

14响疚、s.static_framework  設(shè)置該組件支持靜態(tài)庫 (例如 s.static_framework = true)

15鄙信、s.pod_target_xcconfig 設(shè)置該組件支持的指令集 (例如 s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' })

16、s.subspec 設(shè)置該組件子組件

17忿晕、s.preserve_paths = 'YourComponent/**/*.h'  組件內(nèi)混編

八装诡、 cocoaPods hook方法

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鸦采,更是在濱河造成了極大的恐慌宾巍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渔伯,死亡現(xiàn)場離奇詭異顶霞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锣吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門选浑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玄叠,你說我怎么就攤上這事古徒∨槭叮” “怎么了撑刺?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長些阅。 經(jīng)常有香客問我狐粱,道長舀寓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任肌蜻,我火速辦了婚禮互墓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒋搜。我一直安慰自己篡撵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布豆挽。 她就那樣靜靜地躺著育谬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帮哈。 梳的紋絲不亂的頭發(fā)上膛檀,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音娘侍,去河邊找鬼咖刃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憾筏,可吹牛的內(nèi)容都是我干的嚎杨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼氧腰,長吁一口氣:“原來是場噩夢啊……” “哼枫浙!你這毒婦竟也來了刨肃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤箩帚,失蹤者是張志新(化名)和其女友劉穎真友,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膏潮,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锻狗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了焕参。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡油额,死狀恐怖叠纷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潦嘶,我是刑警寧澤涩嚣,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站掂僵,受9級特大地震影響航厚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锰蓬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一幔睬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芹扭,春花似錦麻顶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至轮锥,卻和暖如春矫钓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舍杜。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工新娜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝴簇。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓杯活,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熬词。 傳聞我的和親對象是個(gè)殘疾皇子旁钧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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