之前有同事寫好一個(gè)A項(xiàng)目,由于沒有集成SDK,并且還在版本迭代中,我的B項(xiàng)目需要使用。A項(xiàng)目中有很多pods使用的第三方,B項(xiàng)目也要使用。
最終決定的方案是把A項(xiàng)目集成framework,B項(xiàng)目使用A.framework,TargetA,TargetB共用podfile.
第一步:創(chuàng)建workspace,A.framework,項(xiàng)目B,A和B都放在workspace中。
第二步:創(chuàng)建podfile。
遇到報(bào)錯(cuò)Unable to find a target named `A`等。
最終解決方案:podfile的結(jié)構(gòu)如下
1.加上workspace '[name].xcworkspace'
2.target 之后要注明project
target'A'do
? ? project'A/A.xcodeproj'
? ?end
? ??target'B'do
? ? project'B/B.xcodeproj'
? ?end
3.共用的第三方可以 def 一下,再使用。
第三步:由于A.framework的代碼是swift和OC混編。直接把橋接文件放進(jìn)來,會(huì)報(bào)錯(cuò)"using bridging headers with framework targets is unsupported"。A.framework中不支持橋接文件,所以要放在A.h中。
遇到的報(bào)錯(cuò)“Include of non-modular header inside framework module 'A'
?對于A中的OC的頭文件的引用,會(huì)報(bào)此錯(cuò)。解決方案是:
找到要導(dǎo)入的OC的.h,show inspectors,將Target MemberShip改成public。
或者Target->Build Phases->Headers在Projects中找到要導(dǎo)入的.h,拖到Public中即可。
而對于A中要引用pods中的.framework或者.a的頭文件時(shí),也會(huì)報(bào)此錯(cuò)。解決方案是:
Target->Build Phases->Headers 按+按鈕,“Add Other”找到Pods中要導(dǎo)入的.framework或者.a的頭文件,不要勾選copy,放到public欄目中即可。
暫時(shí)已經(jīng)沒有報(bào)錯(cuò)了。