題庫基礎(chǔ)庫静秆,支持富文本,支持多種題型

用法:
Podfile 中添加
source 'https://github.com/CocoaPods/Specs.git' # 官方庫
source 'https://github.com/QinKingHan/BX_Podspec_Repo.git' # 私有庫

pod 'TiKuBaseModulesRepo', '~> 0.3.0'

最后 pod install

截圖:
未命名.gif

私有庫創(chuàng)建

1: 創(chuàng)建兩個(gè)repo 一個(gè)放項(xiàng)目 一個(gè)放spec

'分別初始化git'
cd TiKuBaseModulesRepo/SL_Specs_Repo
echo "# InitPodFrameWork" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:JeeneDo/InitPodFrameWork.git
git push -u origin master

2: 關(guān)聯(lián)私有源到遠(yuǎn)端

pod repo add BX_Podspec_Repo https://github.com/JeeneDo/BX_Podspec_Repo.git

此時(shí)如果成功的話進(jìn)入到 ~/.cocoapods/repos 目錄下加袋,就可以看到SL_Spec_Repo這個(gè)目錄了砖第。至此第一步創(chuàng)建私有Spec Repo完成导盅。  這個(gè)是私有庫的 文件夾 集合缠黍,里面放的是你建的各個(gè)私有庫

3: 在TiKuBaseModuleRepo中初始化, 會生成一個(gè)podspec 文件

pod lib create TiKuBasdeModulesRepo
pod lib create BaseClassModulesRepo

4: 編輯/校驗(yàn)podspec

pod lib lint --allow-warnings --use-libraries //驗(yàn)證 pod 和 podspec代碼是否編譯通過
--use-libraries // 第三方lib 要加上
// podspec
soure:->  http://172.16.117.224/zhangxinxin02/TiKuBaseModulesRepo.git

5: 將配置完代碼倉庫 和 podspec 將代碼同步Git


git add .

git commit -m '編輯.podspec and Example and Pod Class'

git remote add origin ssh://git@172.16.117.224:39876/zhangxinxin02/TiKuBaseModulesRepo.git

git pull origin master --allow-unrelated-histories

git push origin master

git tag -m "first release" 0.1.0  
<tag 一定要和Spec文件一樣,每次改動都要 pod lib lint 進(jìn)行校驗(yàn) 同時(shí)tag加1>

git push --tags

6: 把Spec 推送到遠(yuǎn)端的私有源倉庫


pod repo push BX_Podspec_Repo  TiKuBaseModulesRepo.podspec  --allow-warnings --use-libraries --verbose

執(zhí)行成功后
pod search TiKuBaseModulesRepo
如果發(fā)現(xiàn)搜索不到剛才的組件 rm ~/Library/Caches/CocoaPods/search_index.json
'同時(shí)也會推送到 spec 的repo'

以上流程要分清 spec 和 repo. 同時(shí)注意名字不要混

7: 使用

source 'https://github.com/CocoaPods/Specs.git'  # 官方庫
source 'https://github.com/JeeneDo/BX_Podspec_Repo.git'   # 私有庫
platform :ios, '7.0'

8: 日常更新維護(hù)

1:   代碼更新:

1.1: 修改Sepc 并
pod lib lint --allow-warnings --use-libraries // 確認(rèn)

//引入第三私有 
pod lib lint --allow-warnings --use-libraries --sources='https://github.com/JeeneDo/BX_Podspec_Repo.git,https://github.com/CocoaPods/Specs.git'

//OC Swift 混編去掉--use-libraries 但這樣會引起其他問題
pod lib lint --verbose --allow-warnings --swift-version=4.0 --sources='https://github.com/JeeneDo/BX_Podspec_Repo.git,https://github.com/CocoaPods/Specs.git'

//d.同時(shí)依賴了第三方靜態(tài)庫和第三方非靜態(tài)私有庫
pod lib lint XGCommonView.podspec --sources='http://git.ops.com/XGN-IOS/xgn.git,https://github.com/CocoaPods/Specs.git' --use-libraries --allow-warnings --no-clean

//依賴了第三方非靜態(tài)私有庫
pod lib lint XGCommonView.podspec --sources='http://git.ops.com/XGN-IOS/xgn.git,https://github.com/CocoaPods/Specs.git'  --allow-warnings --no-clean

//b.依賴了第三方靜態(tài)庫
pod lib lint XGCommonView.podspec --use-libraries --allow-warnings --no-clean


打開你的xx.podspec文件,將原本的版本號改為0.2.0妻味,與剛剛的tag保持一致正压。
(如果代碼確定沒有問題的話,就不需要pod lib lint责球,直接執(zhí)行第4步)


1.2 
git add .
git commit -m '更新描述'


2: 代碼庫版本更新
git tag -a '新版本號' -m '注釋'
git push --tags


3: 私有庫更新索引庫
pod repo push 索引庫名稱 xxx.podspec --allow-warnings
pod repo push BX_Podspec_Repo  TiKuBaseModulesRepo.podspec  --allow-warnings --use-libraries --verbose 
pod repo push BX_Podspec_Repo  BaseClassModulesRepo.podspec  --allow-warnings --use-libraries --verbose



4:  別的電腦可以用pod repo update命令來使用倉庫 (也可以用pod repo update 倉庫名來更新指定倉庫)

  • 遇到的問題

    • 找不到 libxml2.dylib

      • 按照網(wǎng)上流程引入libxml2

        • 注意這個(gè)import <libxml/tree.h> 只能在項(xiàng)目中編程蔑匣,直接拖到Pod中編譯會報(bào)錯(cuò)。真坑

        • 在 .xcconfig 設(shè)置環(huán)境 雖然編譯通過了棕诵,但是pod lib lint 失敗裁良。

          • 原因是.xcconfig 是不會push到遠(yuǎn)端的。解決方法在Podspec 中添加

            s.xcconfig = { 'HEADER_SEARCH_PATHS' => "$(SDKROOT)/usr/include/libxml2" }

            • Podspec 的配置
          # ――― 代碼文件 ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #  
            # 代碼文件匹配,**指匹配任意文件夾,*.{h,m}指匹配任意.h和.m文件
            s.source_files  = "Classes", "Classes/**/*.{h,m}"  
            s.exclude_files = "Classes/Exclude"  
            # SDK需要暴露的.h文件,默認(rèn)暴露所有
            # s.public_header_files = "Classes/**/*.h"  
                
          # ――― 資源路徑 ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #  
             #s.source           = { :git => 'http://172.16.117.224/zhangxinxin02/TiKuBaseModulesRepo.git', :tag => s.version.to_s }
          
            # 指定資源,比如xib,圖片等資源都是
            # s.resource_bundles = {
              'XXXKit' => ['XXXKit/Classes/**/*.{storyboard,xib,cer,json,plist}','XXXKit/Assets/*.{bundle,xcassets,imageset,png}']
            }
          
            # s.resource_bundles = {
              'LazyTableViewModel' => ['Assets/*.png']
            }
          
           # ――― 系統(tǒng)庫依賴以及靜態(tài)庫―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― 
            # s.framework  = "UIKit"  
            # s.frameworks = "UIKit", "AnotherFramework"  
            # s.library   = "iconv"  
            # s.libraries = "iconv", "xml2" 校套, 'c++' < 用于.mm 文件>
          
          # ――― 其他三方庫依賴 ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #  
          
            # Pod 引入的
            # 比如你的SDK依賴AFNetworking,注意這里和podfile中的語法不同在于,這里無法指定其他依賴的具體路徑
            # 比如這種寫法就不支持 s.dependency 'XMPPFramework', :git => "https://github.com/robbiehanson/XMPPFramework.git", :branch => 'master'
            # s.dependency "AFNetworking", "~> 3.0"  
          
            # 手動引入的第三方framework
            # s.vendored_frameworks = 'vendors/IJKMediaFramework.framework'
            # s.vendored_libraries = 'ProtocolBuffNetWorking/StaticLib/*.a'
          
            # swift 要指定版本
            s.swift_version = '5.1'
            s.pod_target_xcconfig = { 'SWIFT_VERSION' => '5.1' }
                
           # ――― Xcode配置相關(guān) ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― 
            # s.xcconfig = { 'HEADER_SEARCH_PATHS' => "$(SDKROOT)/usr/include/libxml2" }
                
            # spec.user_target_xcconfig = { # 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
                
            # s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }
          
          
  • 文件結(jié)構(gòu)問題處理

    • TiKuBaseModulesRepo/Classes 放實(shí)體文件价脾,在 Example 引用這些文件進(jìn)行編譯(在pod也可以但是Example 可以建幾個(gè)文件夾進(jìn)行分類。便于理解)
      • 上面兩種創(chuàng)建方式不同 Target 也不同笛匙。避免踩坑 還是在Pod建立吧
  • fatal: 遠(yuǎn)程分支 0.1.8 在上游 origin 未發(fā)現(xiàn)

    • 這個(gè)一般就是tag 打錯(cuò)了侨把。重新打一個(gè)就行
  • 不能在項(xiàng)目·中直接改動POD 改動后調(diào)試有異常。無法正確調(diào)試

  • 本地私有庫 ** (一般用到打包私有靜態(tài)庫**)

    • podFile 改為

          pod 'TiKuBaseModulesRepo', :path => File.expand_path("../..", Dir.pwd)+'/TiKuGit/TiKuBaseModulesRepo'
      
          pod 'BaseClassModulesRepo', :path => File.expand_path("../..", Dir.pwd)+'/TiKuGit/BKX_BaseClassModule'
      
    • 將處理好的文件夾放到和項(xiàng)目同一個(gè)目錄下

    • 基本完成了,這時(shí)引入文件會報(bào)錯(cuò)妹孙。在 Build Setting — Header Search Paths 中將Development Pods下面的文件家拖入即可

    • pod 打包靜態(tài)庫/動態(tài)庫

      pod package POPModulesRepo.podspec --force --no-mangle --exclude-deps --spec-sources=https://github.com/JeeneDo/InitPodFrameWork.git,https://github.com/CocoaPods/Specs.git
      
      pod package YYKitModulesRepo.podspec --force --no-mangle --exclude-deps --spec-sources=https://github.com/JeeneDo/YYKitModulesRepo.git,https://github.com/CocoaPods/Specs.git
      
      '遇到的問題
      
      '打包出來的framework 引入后報(bào)錯(cuò)找不到'
      解決: 將framwork 目錄結(jié)構(gòu)和正常的弄成 一樣秋柄。特別是'modules.modulemap 里面的東西 才是主要
      這里加入引入的頭文件
      
      '引入問題
      'swift 
      - 單個(gè)文件 引入 import YYKitModulesRepo, 
      - '全局'引入在 XXX-Bridging-Header.h 加入#import <AfnAndSDWebRepo/AfnAndSDWebImageHeader.h>
      
      OC中  
      - #import <YYKitModulesRepo/YYModel.h>
      
      '最好自己創(chuàng)建一個(gè) 頭文件來引入各個(gè)類', 這樣打成framework后只用在modules.modulemap 添加引入就可以了
      
      'duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_packager'
      Fixed by appending --no-mangle --exclude-deps
      
      
      • 測試步驟
        • 修改引入afn 代碼 查看編譯時(shí)間 記錄下來,并記錄當(dāng)前包大小

        • 將afn 封入自己創(chuàng)建的私有pod庫中蠢正,并進(jìn)行打包成動態(tài)庫

        • 刪除項(xiàng)目中afn代碼骇笔,引入afn-framework。

        • 重復(fù)第一步嚣崭,并比較編譯時(shí)間和包大小

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笨触,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雹舀,更是在濱河造成了極大的恐慌芦劣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件说榆,死亡現(xiàn)場離奇詭異虚吟,居然都是意外死亡寸认,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門串慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來废麻,“玉大人,你說我怎么就攤上這事模庐。” “怎么了油宜?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵掂碱,是天一觀的道長。 經(jīng)常有香客問我慎冤,道長疼燥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任蚁堤,我火速辦了婚禮醉者,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘披诗。我一直安慰自己撬即,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布呈队。 她就那樣靜靜地躺著剥槐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宪摧。 梳的紋絲不亂的頭發(fā)上粒竖,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音几于,去河邊找鬼蕊苗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沿彭,可吹牛的內(nèi)容都是我干的朽砰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼喉刘,長吁一口氣:“原來是場噩夢啊……” “哼锅移!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饱搏,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤非剃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后推沸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體备绽,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡券坞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肺素。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恨锚。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖倍靡,靈堂內(nèi)的尸體忽然破棺而出猴伶,到底是詐尸還是另有隱情,我是刑警寧澤塌西,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布他挎,位于F島的核電站,受9級特大地震影響捡需,放射性物質(zhì)發(fā)生泄漏办桨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一站辉、第九天 我趴在偏房一處隱蔽的房頂上張望呢撞。 院中可真熱鬧,春花似錦饰剥、人聲如沸殊霞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脓鹃。三九已至,卻和暖如春古沥,著一層夾襖步出監(jiān)牢的瞬間瘸右,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工岩齿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留太颤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓盹沈,卻偏偏與公主長得像龄章,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子乞封,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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