应用场景
场景1:
同一项目,一般会分不同环境:开发环境、测试环境、正式(生产)环境。
这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决,的确不是太方便。
其次一个,就是某一类特殊项目,主功能都一样,可能就是只需要更换icon图标、bundleID等等信息,需要发布多款APP,这种情况下,你如果每次发布一个就手动替换这些信息,真的要哭了。。。
场景2:
就是同一产品会有两种客户端构成,现在有很多这种场景下的项目,类似滴滴的司机端和乘客端,教学项目的学生端和教师端等等。。
这种项目,会生成2个App,但其中很多东西可以共用,因此在一个项目里创建管理,会更好更方便。
创建方法
方法一(新建target):
对于一个项目两个用户端的情况,从开发初期就需要管理两个target,这种适合新建target的方式,xcode 的File -> New -> Target,选择Application中你需要的模板,然后命名创建
xcode会自动生成新的target对应文件夹,以及对应的一个新app的基础文件,对应的scheme也自动配置好,可以直接运行,如图 新的target对应的文件夹和文件届时,你已经可以同时进行两个app的开发
方法二(复制target):
对于一个项目,需要多个开发测试发布环境进行管理,或者如上所说只是appicon和bundleID等不同,可以直接复制当前已开发完成的target,如图 duplicate targetxCode会生成当前target的copy和一个完全copy的info.plist文件。
新的target的配置工作
设置步骤:
1、创建Target
2、修改Target名称、Scheme名称
3、配置Info.plist
4、桥接文件设置
5、宏定义(Preprocessor Macros)设置
6、Assets。xcassets的设置(app图片、launch启动页)
修改Target名称、Scheme名称:
直接上图: target名称直接编辑 manager schemes: project的manager scheme配置Info.plist
配置info.plist之前,需要对xcode默认生成的plist文件重命名(项目名+info),配置info.plist文件有两个方法: 直接在build settings中修改文件路径直接选择配置文件
新target的bundleID,build号,appIcon等等配置可一同完成
配置桥接文件:
记得pch文件吧,根据两个项目的差异性决定是否公用一个pch文件或者创建新的pch文件 pch文件配置文件路径宏定义(Preprocessor Macros)设置:
两个target开发有一种情况很常见,同一个类文件可能小部分代码对于两个target处理方式有所不同,这时候需要定义一个宏去进行target的区分; preprocessor macro定义全局的宏 if (pro_target == 1) { //新的target
}else{
}
Assets.xcassets的设置
两个target如果是类似于同一个项目,不同的环境,那就是用一个Assets.xcassets文件就够了,Target Membership勾选两个target Target Membership 是单纯的要上线的两个app,可以新建一个Assets.xcassets,新的target需要的图片用此Assets.xcassets管理 新建Assets.xcassets文件两个target的pod管理
pod是作为.a静态库文件进行应用的,podfile文件的target指定的谁,创建的.a文件就是libPods-target名称.a pod1、两个target的pod库一样,就可以用一个target管理pod, 两个target的Build Phases的library Binary导入同一个.a 文件libPods-qmp_ios_v2.0.a
target 'qmp_ios_v2.0' do
pod 'AFNetworking', '~> 3.1.0'
pod 'MJRefresh', '~> 3.1.0'
pod 'SDWebImage'
end
2、如果两个target所用的库不一样,或者不尽一样,可以使用下面这种优雅的方法,会生成两个pod的.a文件,libPods-qmp_ios_v2.0.a和libPods-qmp_ios_app.a,各自用各自的
def commonPod
pod 'AFNetworking', '~> 3.1.0'
pod 'MJRefresh', '~> 3.1.0'
pod 'SDWebImage'
end
target 'qmp_ios_v2.0' do
commonPod
pod 'JPush'
end
target 'qmp_ios_app' do
commonPod
pod 'YYText'
end
网友评论