之前有同事写好一个A项目,由于没有集成SDK,并且还在版本迭代中,我的B项目需要使用。A项目中有很多pods使用的第三方,B项目也要使用。
最终决定的方案是把A项目集成framework,B项目使用A.framework,TargetA,TargetB共用podfile.
第一步:创建workspace,A.framework,项目B,A和B都放在workspace中。
第二步:创建podfile。
遇到报错Unable to find a target named `A`等。
最终解决方案:podfile的结构如下
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混编。直接把桥接文件放进来,会报错"using bridging headers with framework targets is unsupported"。A.framework中不支持桥接文件,所以要放在A.h中。
遇到的报错“Include of non-modular header inside framework module 'A'
对于A中的OC的头文件的引用,会报此错。解决方案是:
找到要导入的OC的.h,show inspectors,将Target MemberShip改成public。
或者Target->Build Phases->Headers在Projects中找到要导入的.h,拖到Public中即可。
而对于A中要引用pods中的.framework或者.a的头文件时,也会报此错。解决方案是:
Target->Build Phases->Headers 按+按钮,“Add Other”找到Pods中要导入的.framework或者.a的头文件,不要勾选copy,放到public栏目中即可。
暂时已经没有报错了。
网友评论