可以直接看我優(yōu)化后的另外一篇文章:
http://www.reibang.com/p/9572b56590e2
1.首先在xcode新建一個framework
2.創(chuàng)建好了之后是這樣阿弃,然后自己修改需要支持的設備和系統(tǒng)版本
3.接著創(chuàng)建pod文件鳖敷,把需要的三方庫導入進來藐吮。
再把代碼文件放進來,然后項目結(jié)構(gòu)如下
4.創(chuàng)建bundle用來放資源文件
5.修改Build Setting
的一些配置
6.繼續(xù)修改bundle的一些配置
7.項目里需要用的的資源添加進bundle里面
-
framework
和bundle
的Edit Scheme
→Run
→Info
→Build Configuration
都修改為Release
把需要暴露的頭文件拖到Public
下面
分別run
一下僵缺,讓Products
文件夾下的這兩個由紅色變成黑色棋蚌,這就是我們最終需要的東西
Show in Finder
獲得
把.bundle
文件放入.framework
里面,里面的nib文件和一些不需要的資源文件可以刪除掉,不影響使用,因為bundle
里面已經(jīng)有了
創(chuàng)建一個文件夾,新建一個.podSpec
文件 把framework
文件也放進來
.podSpec
這個里面按照自己的需求寫桦踊,注意依賴的三方庫
和bundle的路徑
Pod::Spec.new do |spec|
spec.name = 'TestSDK'
spec.version = '1.0'
#spec.license = { :type => 'BSD' }
spec.homepage = '111'
spec.authors = { 'xxx' => 'xxx.com' }
spec.summary = 'TestSDK'
spec.source = {:git => 'https://xxx.com'}
spec.ios.deployment_target = '11.0'
#spec.source_files = 'TestSDK/**/*.{h,m}'
spec.xcconfig = { 'CLANG_MODULES_AUTOLINK' => 'YES' }
spec.requires_arc = true
spec.static_framework = true
spec.vendored_frameworks = 'TestSDK.framework'
spec.resource = "TestSDK.framework/TestSDKResource.bundle"
spec.dependency 'AFNetworking'
spec.dependency 'MJRefresh'
spec.dependency 'WebViewJavascriptBridge'
spec.dependency 'Masonry'
spec.dependency 'YYKit'
spec.dependency 'DZNEmptyDataSet'
spec.dependency 'FMDB'
spec.dependency 'IQKeyboardManager'
spec.dependency 'KLCPopup'
spec.dependency 'SocketRocket'
spec.dependency 'VTMagic'
spec.dependency 'IJKMediaFramework'
end
最后把這個文件夾放入需要引入SDK的項目根目錄下椅野,修改Podfile
终畅,添加
pod 'TestSDK' , :path => 'TestSDK'
然后再pod install
即可,到此SDK就引入完成了竟闪。
其他注意點:
- 如果
framework
里面有category
离福,那么需要在Other Linker Flags
添加-all_load
(加載靜態(tài)庫中所有文件) - 訪問bundle里的資源文件要這樣取,不然取不到
[NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"TestSDKResource" withExtension:@"bundle"]];
- 項目中如果有MRC的文件需要給對應文件增加
-fno-objc-arc
- 上傳提審時報錯
Missing Code Signing Entitlements. No entitlements found in bundle 'com.test.xxxResource' for executable 'xxx/xxx.app/xxxResource.bundle/xxxResource."
這是因為bundle
里面包含了可執(zhí)行文件
把這個文件刪除掉炼蛤,然后把Versioning System
改為None
在bundle
的info.plist
里面把Executable file
項也刪除掉
再次上傳就沒問題了妖爷。
參考文章:
IOS開發(fā)SDK(.FRAMEWORK靜態(tài)庫,.BUNDLE資源文件,腳本打包SDK和.BUNDLE)
https://www.freesion.com/article/3001905534
IOS SDK制作
http://www.reibang.com/p/e8f4684fa9aa
http://www.reibang.com/p/6536ef96add6
http://www.reibang.com/p/88022bb5d4fb
http://www.reibang.com/p/f5dcca0ee4bb
http://www.reibang.com/p/ed65aed59fd1
http://www.reibang.com/p/62abd9ab0407