Why? 为什么根据target区分、优缺点
代码区分 | target区分 | |
---|---|---|
UI表现(icon、开屏) | 不可区分 | 自定义icon、开屏 |
打包问题 | 打包忘记修改易出问题 | 根据不同需求打包不同target |
操作 | 频繁修改代码 | 运行不同target即可 |
操作流程
1、新建target,选中project,选择主target,右键Duplicate,创建出一个copy版的target

2、新建target后,项目目录会生成新的plist文件,修改新建的target的名称以及匹配的plist名称

3、修改scheme里的target名称。 选择"Product"->"Scheme"->"Edit Scheme"


4、配置target对应的plist文件,选中对应target 下的 "Build Settings",输入搜索 "Packaging",修改为target对应的plist文件"TargetTestProject_dev-Info.plist"。

5、(推荐非必选)新建一组AppIcon以区分正式版和测试版本,选中 Assets.xcassets 然后添加新的 App 图标。选择"icon" > "App Icons & Launch Images" > "New iOS App Icon". 将新图标命名为 "AppIcon-dev"添加对应的icons。这种便于传包人员和用户区分当前App是哪个正式/测试版本。

6、给两个版本的target 同时设置一个预处理宏和编译器标志。这样在之后的开发中我们就可以在代码中使用这个标识来检测当前运行的应用是哪个版本。
选择 "Building Settings",搜索"Preprocessing",滚动到 Apple LLVM 7.0 - Preprocessing。展开 "Preprocessor Macros" 并且为 Debug 和 Release 添加一个变量。对于测试环境版本target(即 TargetTestProject_dev),设置变量的值为** DEVMODE=1**(校对注:等号两边不能有空格)。相对地,设置正式环境版本target 的值为 DEVMODE=0。

7、根据预处理宏判断区分正式环境和测试环境下一些key值、证书、请求URL的选择

8、如果项目使用cocoapods集成第三方库的话需要对Podfile做如下处理
platform :ios, '8.0'
# target数组 如果有新的target直接加入该数组
targetsArray = ['TargetTestProject', 'TargetTestProject_dev']
# 循环
targetsArray.each do |t|
target t do
pod 'FMDB' #
pod 'pop','~> 1.0.7' #
pod 'Masonry','~> 0.6.1' #
end
end
注意事项
新建文件时记得需要勾选测试环境对应的target

网友评论