iOS 私有庫(kù)創(chuàng)建遇到的問(wèn)題和podspec文件的編寫

關(guān)于私有庫(kù)的搭建可查看

1.pod lib create失敗

提示:

Failed to connect to raw.githubusercontent.com port 443: Connect

查看解決

2.pod repo push失敗

刪除本地倉(cāng)庫(kù)匾浪,重新添加接口朵你,執(zhí)行:

pod repo remove mySpecs
pod repo add mySpecs https://github.com/*****/MySpecs
3.bitcode支持

配置.podspec文件:

s.xcconfig = {'ENABLE_BITCODE' => 'NO'}

這個(gè)主要是引入組件庫(kù)內(nèi)包含了不支持bitcode的二進(jìn)制文件

4.依賴系統(tǒng)類庫(kù)场晶,如tdb岛心、dylib

依賴frameworks,配置.podspec文件:

s.frameworks = 'AVFoundation', 'SystemConfiguration'

依賴libc++.dylib等文件帚豪,這里需要去掉頭尾的lib凶杖、dylib等种远,配置.podspec文件:

s.libraries = 'c++','z'
5.依賴第三方庫(kù)

配置.podspec文件:

s.dependency 'ZFPlayer/AVPlayer'

依賴的第三方庫(kù)用到了靜態(tài)庫(kù),還需要添加:

 s.static_framework = true
6.依賴自己的私有庫(kù)

配置.podspec文件:

// 例
s.dependency 'ZFPlayer'

這里需要注意一下祝懂,在進(jìn)行私有庫(kù)驗(yàn)證pod lib lint票摇、pod spec lint時(shí),還需要加上source,多個(gè)用逗號(hào)分隔砚蓬,其中必須要包含github的source:

pod lib lint --allow-warnings --sources='https://github.com/*****/MySpecs,https://github.com/CocoaPods/Specs.git'
pod spec lint --allow-warnings --sources='https://github.com/*****/MySpecs,https://github.com/CocoaPods/Specs.git'

在執(zhí)行pod repo push的時(shí)候矢门,也需要加上對(duì)應(yīng)的source。如果執(zhí)行上述命令還是失敗灰蛙,還需要加入一下參數(shù)祟剔,不用全部加入,混合使用即可摩梧,直到執(zhí)行成功:

--no-clean
--allow-warnings
--use-libraries
--verbose
--skip-import-validation

如:

pod lib lint --no-clean --verbose  --allow-warnings --sources='https://github.com/*****/MySpecs,https://github.com/CocoaPods/Specs.git'
pod spec lint --no-clean --verbose  --allow-warnings --sources='https://github.com/*****/MySpecs,https://github.com/CocoaPods/Specs.git'
7.i386報(bào)錯(cuò)提示

配置.podspec文件:

s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7 x86_64' }

其中x86_64即i386物延,是用于模擬器的芯片指令集架構(gòu)文件

8.按條件文件路徑引入

類似shareSDK的`pod 'mob_sharesdk/ShareSDKPlatforms/WeChat',實(shí)現(xiàn)類似精簡(jiǎn)版障本、完整版的SDK

如圖在Classes下分不同的文件夾:

之后配置.podspec文件教届,子模塊也可以設(shè)置不同的依賴,如:

  s.default_subspec = 'ImageView'
      
  # 基礎(chǔ)功能配置
  s.subspec 'ImageView' do |imageView|
      imageView.source_files = 'MyImageView/Classes/ImageView/**/*'
      imageView.public_header_files = 'MyImageView/Classes/ImageView/**/*.h'
      
      imageView.frameworks = 'AVFoundation'
  end
      
  # 附加功能配置
  s.subspec 'GifImageView' do |gifImageView|
      gifImageView.source_files = 'MyImageView/Classes/GifImageView/**/*.{h,m}'
      gifImageView.public_header_files = 'MyImageView/Classes/GifImageView/**/*.h'
      gifImageView.dependency 'MyImageView/ImageView'

      gifImageView.resource_bundles = {
          'MyImageView' => ['MyImageView/Assets/*']
      }
  end
9.添加圖片資源

這里只包括添加圖片的其中一種方式驾霜,就是將編輯完成的圖片資源放入Assets文件加下案训,之后配置.podspec文件:

s.resource_bundles = {
  'MyImageView' => ['MyImageView/Assets/*']
}

這里圖片的獲取也不能用常規(guī)的[UIImage imageNamed:@""]方式了,而是要換成:

- (UIImage *)getImageWithName:(NSString *)nameString{
    NSURL *associateBundleURL = [[NSBundle mainBundle] URLForResource:@"Frameworks" withExtension:nil];
    associateBundleURL = [associateBundleURL URLByAppendingPathComponent:@"MyImageView"];
    associateBundleURL = [associateBundleURL URLByAppendingPathExtension:@"framework"];
    NSBundle *associateBunle = [NSBundle bundleWithURL:associateBundleURL];
    associateBundleURL = [associateBunle URLForResource:@"MyImageView" withExtension:@"bundle"];
    NSBundle *bundle = [NSBundle bundleWithURL:associateBundleURL];
    /// 這里去區(qū)分下用哪種像素的圖片
    NSInteger scale = [[UIScreen mainScreen] scale];
    NSString *imgName = [NSString stringWithFormat:@"%@@%zdx.png", nameString,scale];
    UIImage *image = [UIImage imageWithContentsOfFile:[bundle pathForResource:imgName ofType:nil]];
    return image;
}

這里需要注意一下粪糙,此方法最好不要用在category中强霎,如果使用到了,請(qǐng)將其中的方法名根據(jù)不同的組件做區(qū)分蓉冈,否則會(huì)存在圖片無(wú)法顯示之類的問(wèn)題

10.將組件打包成framework

這里拿opencv的framework做一下演示城舞,將打包好的framework拖入組件工程轩触,如圖:

文件命名建議和framework的命名一致,方便閱讀家夺,使用的時(shí)候如下:

// 前半部分framework名稱脱柱,后半部分為framework內(nèi)部的某個(gè).h文件,可以將頭文件都放在Opencv.h下
#import <opencv2/Opencv.h>

你可以只做framework的組件(如bugly拉馋、shareSDK等)榨为,但是使用者只能根據(jù)你的文檔接入。你也可以在framework的基礎(chǔ)上加上代碼部分(如Jpush煌茴、TalkingData等)随闺,方便使用者理解。

類似的第三方庫(kù)你可以多看看蔓腐,合理規(guī)劃好自己的組件開發(fā)方案矩乐,下面開始配置.podspec文件:

# 自己的framework,這里需要注意下路徑是否正確
s.ios.vendored_frameworks = 'OpenCV/opencv2.framework'
10.在Other Linker Flags添加配置項(xiàng)
s.xcconfig = { "OTHER_LDFLAGS" => "-ObjC"}
11.設(shè)置Allow Non-modular includes in Framework Modules為YES
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末回论,一起剝皮案震驚了整個(gè)濱河市散罕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌透葛,老刑警劉巖笨使,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異僚害,居然都是意外死亡硫椰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門萨蚕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)靶草,“玉大人,你說(shuō)我怎么就攤上這事岳遥∞认瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵浩蓉,是天一觀的道長(zhǎng)派继。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捻艳,這世上最難降的妖魔是什么驾窟? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮认轨,結(jié)果婚禮上绅络,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好恩急,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布杉畜。 她就那樣靜靜地躺著,像睡著了一般衷恭。 火紅的嫁衣襯著肌膚如雪此叠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天匾荆,我揣著相機(jī)與錄音拌蜘,去河邊找鬼杆烁。 笑死牙丽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兔魂。 我是一名探鬼主播烤芦,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼析校!你這毒婦竟也來(lái)了构罗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤智玻,失蹤者是張志新(化名)和其女友劉穎遂唧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吊奢,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盖彭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了页滚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片召边。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裹驰,靈堂內(nèi)的尸體忽然破棺而出隧熙,到底是詐尸還是另有隱情,我是刑警寧澤幻林,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布贞盯,位于F島的核電站,受9級(jí)特大地震影響沪饺,放射性物質(zhì)發(fā)生泄漏躏敢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一随闽、第九天 我趴在偏房一處隱蔽的房頂上張望父丰。 院中可真熱鬧,春花似錦、人聲如沸蛾扇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)镀首。三九已至坟漱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間更哄,已是汗流浹背芋齿。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留成翩,地道東北人觅捆。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像麻敌,于是被迫代替她去往敵國(guó)和親栅炒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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