目前,公司正在做靜態(tài)庫的封裝工作,期間遇到不少坑辨图,所以總結(jié)了一些關(guān)于集成遇到的問題和解決辦法。本文包含從創(chuàng)建framework項(xiàng)目開始肢藐,到添加測試Demo故河,再到framework打包,最后到上傳到Pods吆豹,都有涉及鱼的,期間有些問題還沒解決,希望看到的朋友能一起解決痘煤。話不多少凑阶,上干貨...
1. 請確保已經(jīng)正確安裝CocoaPods環(huán)境,這里不多說衷快,自己去網(wǎng)上找教程很簡單宙橱。
2. 打開終端,先cd到指定目錄下,再執(zhí)行pod lib create LCFramework师郑, 接下來需要確認(rèn)5個(gè)問題环葵,如下:
創(chuàng)建出來的工程目錄如下:
3. 打開 Core-JJSNetworking.podspec 文件,并修改配置信息宝冕,如下:
Pod::Spec.new do |s|
#SDK 名稱
s.name = 'LCFramework'
#SDK 版本
s.version = '0.0.1'
s.summary = 'A virtual card manage SDK .'
s.description = <<-DESC
An optional longer description of BZLib
* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = 'http://172.18.80.22/iOS/LCFrameworkDemo'
s.license = 'MIT'
s.author = { 'lcc152' => 'lcc152@zcsmart.com' }
#這里寫自己的項(xiàng)目所在地址张遭,一般在我們以打tag的方式來標(biāo)記
s.source = { :git => 'http://172.18.80.22/iOS/LCFrameworkDemo.git', :tag => "v0.0.1" }
s.ios.deployment_target = '8.0'
s.requires_arc = true
#表示類庫的源文件存放目錄(從上面的目錄結(jié)構(gòu)大家可以看到我們的framework源文件都是放在Classes文件夾下,
#這里是可以修改的猬仁,如果你想改的話帝璧,隨便放在哪里都行,只要在podfile文件中指定好路徑都行湿刽。我這里就和classes同級添加了新的文件夾Library)
s.source_files = 'LCFramework/Classes/**/*','LCFramework/Library/include/*'
# 資源文件 逗號后面不能有空格??
s.resource_bundles = {
'LCFramework' => ['LCFramework/Assets/*.{jpg,pack,png}']
}
# 暴露出去的頭文件
s.public_header_files = 'LCFramework/Classes/public/*.h'
# pch文件
s.prefix_header_file = 'LCFramework/Classes/project/LCPrefixHeader.pch'
# 依賴的Library
s.ios.vendored_libraries = 'LCFramework/Library/lib/libpos.a'
# 依賴的系統(tǒng)庫 (包含第三方依賴的)
s.frameworks = 'UIKit','Foundation','SystemConfiguration','CoreGraphics','MobileCoreServices','Security'
# 依賴的三方庫
s.dependency 'AFNetworking'
# 依賴的Framework
#s.ios.vendored_frameworks = 'LCFramework/Library/lib/*.framework'
end
4.然后把要封裝的SDK文件 放到對應(yīng)的目錄的烁,再切換到Example目錄下,執(zhí)行
Pod install
結(jié)構(gòu)目錄如下:
這里L(fēng)CFileManage是我要封裝的sdk诈闺,CCKSControl和CSCSoftcardUtil以及l(fā)ibpos.a是一套靜態(tài)庫渴庆,INIT.pack是資源文件,LCPrefixHeader是pch文件雅镊,這樣一個(gè)基本的SDK模型結(jié)構(gòu)就出來了
5.全部弄完以后就可以上傳到Git了襟雷,并且記得打個(gè)tag,以供等下打包靜態(tài)庫使用仁烹。
6.打包之前使用 pod lib lint 驗(yàn)證類庫是否符合 pod 的要求耸弄,可以使用 --allow-warnings 來忽略一些警告。(注意要切換到根目錄)
pod lib lint LCFramework.podspec --allow-warnings
如果顯示passed validation就可以了
7.打包卓缰。此時(shí)你需要安裝一個(gè) CocoaPods 打包插件
sudo gem install cocoapods-packager
8.然后就可以愉快的打包了
pod package LCFramework.podspec --force
如果命令后面加條尾巴 --library 則表示打包成 .a 文件计呈,如果不帶,則會(huì)打包成 .framework 文件征唬。 --force會(huì)覆蓋之前已存在的文件捌显。完成了就可以在目錄下看到LCFramework-0.0.1,里面就是你想要的Framework了总寒。
9.如果你還想上傳到cocoapods接著執(zhí)行
pod trunk push LCFramework.podspec