參考資料:
兩天時間探索,期間不知道遇到了多少問題,各類google和Stack Overflow,甚至都求助了羣友的力量。期間也想過放棄,還好有一顆不甘的心。終於成功了!
開心,哈哈,但願有緣人遇到一樣問題的話,下面的一些記錄能夠幫助到你。
成功後,靜態庫裏swift和OC代碼能夠被OC工程中OC和swift類使用。
1、編譯庫時,選debug能夠成功,可是release不成功
緣由:上面文章中忘記說要把庫設置爲static的步驟了。
正確方式:在靜態庫的buildsetting搜索mach,選擇 Static Library
2、stroyboard放到bundle中沒法被成功加載
須要在綁定了控制器的storyboard的CustomClass處,
指定Module爲包含對應類的靜態庫,同時不勾選Inherit Module From Target
3、圖片放到bundle中格式不對
設置 Build Setting 中的 COMBINE_HIDPI_IMAGES 爲 NO,不然 Bundle 中的圖片就是 tiff 格式了。
4、swift代碼沒法被外界OC代碼訪問
經過相關羣裏與羣友交流,發現是須要在被訪問的swift類前加
@objc public。若是須要繼承swift的類,可能須要加@objc open
5、swift代碼的協議方法沒法回調
Xcode很傻的提示在協議方法前加@nonobjc,很坑!後面在我快要放棄打包探索之路時,不甘心把一樣代碼以非靜態庫形式集成到工程裏,發現竟然仍然有協議方法不回調的問題。因而嘗試
把@nonobjc改成了public,竟然就能夠了!因而又使用git相關命令reset到靜態庫的某個tag版本。發現這麼改以後整個流程就通了!
6、多target引用相同和不一樣第三方庫問題
能夠經過cocopods解決此問題。例如:
1 # Uncomment the next line to define a global platform for your project 2 platform :ios, '11.3'
3 abstract_target 'Shows' do
4
5 # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 use_frameworks!
7
8 #都要用:----------------------
9 pod 'iConsole', '~> 1.5.3'
10
11
12 target 'HTMCommon' do
13 end 14
15 target 'HTMImgRecognise' do
16
17 end 18
19 target 'ZWEasyWalkMap' do
20
21 # Pods for ZWEasyWalkMap 22 pod 'Realm', '~> 3.13.1'
23 end 24
25 target 'ZWEasyWalkMap-SHXJD' do
26 pod 'Realm', '~> 3.13.1'
27 end 28
29
30 end
😔,踩坑了兩天,一把辛酸淚啊!略做記錄,以表欣慰。
原文出處:https://www.cnblogs.com/Dast1/p/10914439.htmlhtml