生成对的 Target 文件:TestA-coply,TestA-coply.plist
选择 Manager Schemes ->TestA-coply ->TestB
target列表->TestA-coply ->TestB
plist文件 TestA-coply.plist ->TestB.plist
一般是plist,可以调整名字,然后 修改 对应关联target 路径
若有xxx.entitlements文件也可以, 修改 对应target 路径
类似图片资源集合、三方配置文件等
Build settings ->搜索 plist ->修改 info.plist File 路径为:$(SRCROOT)/TestA/TargetB/TestB.plist
测试验证是否成功,修改TextB.plist中项目名,看target中TestB项目名是否改变
同理->搜索 entitlements ->修改 Code Signing Entitlements 路径
右键 New File ->选择 Asset Catalog ->创建是选择关联对应Target
关联单独target的资源不起作用,会使用关联多个Target资源的,
比如 TestAAssets 图片资源关联两个Target(TestA,TestB)
则 TestBAssets 图片资源关联TestB的就不生效了,
这是运行 TestB 项目,用到图片资源也是 TestAAssets
同理其他资源文件也可以设置不同Target,如类、LaunchScreen等
选择Target中项目 TestA ->Build Settings ->搜索 Macros
Preprocessor Macros 中,默认是 DEBUG=1 ,双击添加 APP_TYPE=1
(APP_TYPE可以自己定义,值也可以自己设置定义,这里用1,2,3,标识不同Target),
需要 Preprocessor Macros 中Debug\Release模式里都对应设置
同理Target的 TestB 也对应设置, APP_TYPE=2
切换对应项目调试
Swift项目中桥接OC文件相对来说比较简单,一般在第一次创建OC文件的时候Xcode会d出创建桥接头文件的提示
直接点击Create Bridging Header系统就自动为我们创建好了桥接头文件,并且自动将头文件路径配置好了,所以这种方式非常便捷
但是,有时候我们并不是第一次在Swift项目中创建OC文件时,Xcode并不会再为我们自动创建桥接文件,需要我们自己创建,然后配置路径。
我们自己新建一个.h文件。命名为xxx-Bridging-Header.h就行了,也可以随意命名,创建好以后,在Build Settings中找到上图中的Objecttive-C Bridging Header选项,然后将创建好的head文件拖到这个路径配置中,就可以了
然后在创建的这个head文件中#import需要使用到的OC文件。就可以在Swift中索引出OC文件的类了。
一般在OC项目中桥接Swift文件,只需要引入头文件#import "xxx-Swift.h"就可以在OC中调用Swift相关的类了。xxx为项目的Project Name
但是,在实际桥接中,常常会遇到报错'xxx-Swift.h' file not found,头文件找不到的情况。
因为项目配置中桥接头文件的名称有可能和我们项目名称不一致,所以会导致桥接头找不到。
这个时候我们需要检查Build Setting中的Objecttive-C Generated Interface Header Name选项是否和我们import的名称一样,需要改成一样的就可以解决报错问题了。
如图,如果这个选项中的名称为test-Swift.h,那么我们在OC中桥接的时候就应该为#import "test-Swift.h",才能不报错。
如果遇到项目中有多个TARGETS的情况,我们在创建相应的OC/Swift文件的时候需要选中所有需要桥接的TARGETS选项,才能在对应的TARGETS的Build Setting中看到对应桥接路径配置的选项,然后每个TARGETS的Head都需要配置一样
不然在切换到不同的TARGETS下以后,也有可能因为不同TARGETS下配置的Head不一致,导致在不同的TARGETS下再次出现'xxx-Swift.h' file not found的错误。
<article class="_2rhmJa">
本篇文章主要引自 Simple_Dev
写的 IOS开发日记1-项目中配置多个target及podfile文件配置
</article>
53人点赞
iOS踩过的坑系列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)