ios一个工程的多个target

iOS 一个工程实现多个Target 我们公司的项目需要涉及多地市,大部分功能是一样的,但是每个地市又有自己的特色,最基本的就是App的icon和LaunchImage的不同,这样讲大家应该会明白··· 用到多个target其实还有很多场景,比如美团的买家和卖家端,滴滴的乘客和司机端,boss直聘的牛人和招聘端,都可以用这样的方法实现,不仅节省了很多时间,还提高了开发效率··· 接下来,我就从一个Demo给大家详细分析一下 阅读详情

转自:http://blog.youkuaiyun.com/yongyinmg/article/details/40985341

由于项目需求,同一项目需要发两个版本,两个版本只有小部分不同,特地研究了一下target,小有了解,把创建target的经过记录在案,方便过后查看,如有疏漏,请网友指正。


创建target有两种方式,

1是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target,可以选择Empty Application模板,不过新建的target有自己的AppDelegate和main,这点还没研究好,如何与原来的AppDelegate和main复用

2.另一种方法是通过对原有的target做duplicate,复制一份,目前只研究了如何通过duplicate来新建target,做下记录。

假设原来的target名字为A,我们需要新建一个target B


1. 在原来的target上右键,选择duplicate,Xcode会复制一个名为A copy的target对象,同时生成一个A copy-info.plist和A copy的scheme

2. 改名

a)对A copy target改名,可以直接单击target来修改,改成B

b)A copy-info.plist,默认生成在程序环境根目录,也就是A.xcodeproj的同级目录中,如果想放到里层(比如与A-info.plist放在同级目录),可以先在Xcode删除A copy-info.plist索引,然后拷贝文件到制定目录中,然后更名为B-info.plist,在add到project中。在Project的Build Settings中,修改Info.plist File选项为B-info.plist的目录(相对路径),这样就可以看到Info页了(就是B-info.plist),接着修改ProductName和Bundle identifier,使之成为另一个app。Prefix Header的路径,视具体需求而定是否要修改,如果两个target可以公用同一个Prefix Header,那么就不需要修改这里的路径

c)修改scheme,在调试的Stop按钮边上,我们可以选择本工程中所有的target来做编译,如果不修改,在这里选择出来的名字就是A copy,为了与新建的target统一起来,同样也要修改这里的名字。点击scheme选择区,然后选Manager Scheme,找到A copy,然后改成你需要的名字,比如B


用duplicate的好处是,如果两个target的相同点很多,用duplicate,就可以把相关的设置全部拷贝过来,而不需要做过多的修改


生成一个新的target,一定会与原target有区别,这里可以定义预编译宏,来区分两个版本的不同代码,预编译宏可以在Build Settings中Preprocessor Macros定义,比如在我们新建的target B中定义预编译宏MACRO,然后在代码中通过

#if defined (MACRO)

//target  B需要执行的代码

#else

//target A需要执行的代码

#endif

来区分


其他:Build Phases(各target编译所包含的内容,需要注意的是,如果创建了target B后,再往A里面添加资源或文件,target B中不会自动增加这些资源,需要手动添加)

1.Compile Sources

需要编译的代码文件

2.Link Binary With Libraries

编译所依赖的库

3.Copy Bundle Resources

编译需要的资源

每个target可以根据具体需要增减里面的内容

iOS一个项目多个target,实现测试或者一个工程多个app管理  公司突然给了个需求,要把另一个项目整合到当前的项目里面,说是大部分页面代码共用少部分差别。后来我想了想,这个需求理论上是可以做的,但是要看两个项目的差别多大,其次!代码写得是不是很规范,耦合性高不高,在我看来我接手的项目代码写得很乱所以不赞成的,但是上面的要求,我还是去研究了一下具体的实现方案。        就如标题所说的,多个target的创建和一些配置而已,直接上图:①直接复制,会在下方多... 阅读详情

相关推荐

iOS添加多个Target,实现打包不同版本

iOS添加多个Target,实现打包不同版本 App开发到测试再到发布这一系列过程中,我们回经过开发环境、测试环境、生成环境、UAT环境等,每一中环境都可能对应如下不同配置

干志雄的博客 2272

XCode同一Project创建多个target

转自:http://blog.163.com/lengfeng_04/blog/static/80470603201273111549529/ 由于项目需求,同一项目需要发两个版本,两个版本只有小部分不同,特地研究了一下target,小有了解,把创建target的经过记录在案,方便过后查看,如有疏漏,请网友指正。 创建target有两种方式, 1是通过新建target

DaLei 1355

从零到一:基于PX4+Gazebo+ROS2的无人机轨迹跟踪仿真环境全栈搭建

本文详细介绍了在Ubuntu 22.04系统上,从零开始搭建基于PX4、Gazebo Garden和ROS2 Humble的无人机轨迹跟踪仿真环境的完整流程。内容涵盖PX4 SITL编译、Gazebo安装、ROS2配置、Micro XRCE-DDS Agent通信桥接以及QGroundControl地面站部署,并提供了创建自定义ROS2节点实现圆形轨迹跟踪的实战代码与关键调试技巧,帮助开发者快速构建全栈仿真开发环境。

swift5iosmith的博客 917

iOS同一项目多个Target的快速实现方法 - 两种使用场景详解

我们项目中,默认建好是只有一个target的,但是,一些场景中,多target能帮助我们更好的使用项目。 场景1: 同一项目,一般会分不同环境:开发环境、测试环境、正式(生产)环境。 这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决,的确不是太方便。 其次一个,就是某一类特殊项目,主功能都一样,可能就是只需要更换icon图标、bundleID等等信息,需...

weixin_30580341的博客 404

使用DeepSeek、MCP和AKShare实现智能金融问答系统技术方案

DeepSeek是由深度求索公司开发的大规模语言模型,最新版本DeepSeek-V3采用混合专家(MoE)架构,拥有671B参数,激活37B参数,在多项基准测试中表现优异3。要使用DeepSeek的API服务:访问DeepSeek平台注册账号获取API Key(形如AKShare是基于Python的金融数据接口库,提供股票、基金、期货、宏观经济等领域的海量数据。主要特点包括:免费开源,数据源丰富支持多种数据格式(DataFrame/JSON)持续更新维护安装命令。

Kin 3174

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

设置Xcode的依赖编译

微软的开发工具中提供了解决方案的概念,可以在添加多个工程进行联编,Mac OSX下的Xcode同样也可以进行联编,具体步骤为:1、把子项目,例如dylib项目,添加到应用程序项目中来。在应用程序的项目中,Ctrl+点击Groups & Files中的项目名称,在磁盘中选中xcodeproj文件,然后“OK”,就可以把这个项目作为参考添加到当前项目中了。2、双击项目的Targets,在弹出窗口的Ge

liq2004的专栏 3195

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1126

xcode快速创建target

如果想在当前的工程里面创建一个新的target话,有两种方式: 1、想创建一个完全新的target话,只需要File——》New——》Target(如下图所示),根据自己需求选择新的target类型: 2、通常我们创建一个新的target,是在当前已经存在的target基础上创建的。所以我们可以在当前的target上单击右键,然后拷贝,如下图所示: 结果如图所示: ...

weixin_30920091的博客 259

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 185

【通信】多径衰落信道的matlab仿真

1 简介 2 部分代码 clearf_c=1e3; %carrier frequency(no modulation)time_1 = (linspace (0, 10, 1000)); %timesignal_in = sin (2 * pi *f_c* time_1); %sine wave plot (time_1, signal_in, 'b');grid on;

qq_59747472的博客 1383

iOS开发: 一个工程多个Target开发

当多个APP项目功能差不多一样,且大多数代码、文件、资源可共用时,就可以在一个项目中通过设置不同的target进行开发。 设置步骤: 1、创建Target 2、Assets.xcassets的设置(app图片、launch启动页),务必勾选对应的target 3、配置Info.plist 修改应用名称、包名、版本号、证书、描述文件等 4、修改Xcode左上角的Target名称 5、 桥接文件pch设置 6、宏定义(Preprocessor Macros)设置 7、pod管理

Dongxk的博客 1742

【嵌入式硬件】DRV8874电机驱动

1)N沟道H桥电机驱动;2)驱动1个双向有刷直流电机;3)2个单向有刷直流电机;4)4.5V-37V工作电压范围;5)集成电流感测和调节;6)成比例电流输出(IPROPI);7)可选电流调节(IMODE):逐周期或固定关断时间;8)支持1.8、3V、5V逻辑输入;9)集成保护:欠压、电荷泵欠压、过流保护、输出关闭、热关断、自动故障恢复。

qq_39200110的博客 4424

iOS - 一个工程多个target引入CocoaPods的方式

一个工程多个target引入CocoaPods的方式 方式一:循环target 添加pod #多个target的pod引入,方式一:如每个pod都引入masonry targetArray = ['target1','target2'] targetArray.each do |t| target t do pod 'Masonry', '~> 1.1.0' ...

appleLg的专栏 3631

2、探索谷歌云平台(GCP):入门指南

本文全面介绍了谷歌云平台(GCP)的入门知识,涵盖其全球基础设施、核心服务和使用方法。内容包括GCP区域与可用区结构、创建免费账户、配置计算资源(如GCE虚拟机)、存储类型(PD、Filestore、GCS)、网络架构(VPC)、组织与项目管理、身份访问控制(IAM),以及计算、存储、数据库、大数据和人工智能等各类云服务。文章还提供了资源规划、安全管理和成本控制等实用建议,帮助用户快速上手并高效利用GCP构建可扩展的云解决方案。

uber9的博客 255

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS 开发 Xcode 一个工程 Project 创建多个 target

同一项目需要发两个版本,两个版本只有小部分不同,可以在一个工程 Progject 中创建多个 target。 创建target有两种方式: 一、是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target,可以选择Empty Application模板,不过新建的target有自己的AppDelegate和main,这点还没

pjc 519

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

iOS开发之 Xcode 一个工程 Project 添加多个 target

http://www.360doc.com/content/14/1203/11/19119980_430056974.shtml# 根据项目需求,同一个工程有多个版本,每个版本只有细微的不同。所以,添加target,节省时间。1 选择 target 里面需要复制的目标,选择Duplicate,就会生成同时生成一个*** copy-info.plist和 *** copy的scheme...

weixin_30535043的博客 101

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IOS小知识点7之IOS静态库打包、工作区关联多个工程、一个工程下关联多个Target、c代码打包

动态库dylib 静态库a。 动态库体积更小,多个应用程序共享内存中的同一份库文件,节省资源。苹果暂时不能自己创建动态库。 (1)首先新建一个静态库的工程

关注IOS、Android网络、音视频编解码、特效、Neon算法优化,DSP等嵌入式驱动开发算法移植 1535

IOS开发之Xcode下使用多target, 让同一份代码,一个工程 Project 管理多个app

为什么要使用多target?      因为在一些外包公司,很多项目都非常类似,甚至有时候只是修改了一下主题颜色,换一下图标,或者增减了一些小功能,但是其他7成以上的代码都是可以复用的。如果我们直接copy多一份代码来做新项目的话,那么当原始代码的某个功能出现bug的时候,我们可能要同时去修改十几个其他项目的那行代码,这是一件非常痛苦的事,繁琐而且容易出错。但是多target的话,就没有这个问题

浪得虚名 1万+

iOS址之Xcode中的 workspace, project, target, scheme、同一个workspace中创建多个project模块化协同工作、工程中引用另外一个工程

workspace, project, target, scheme详细解答:https://www.jianshu.com/p/5740f41881d9 Xcode Project Xcode中的 project里面包含了所有的源文件,资源文件和构建一个或者多个product的信息。project利用他们去编译我们所需的product,也帮我们组织它们之间的关系。一个project可...

代码解释生活 1149

自动打包

本文转载至http://www.devdiv.com/iOS_iPhone-_-thread-209167-1-1.html 本来想接在上一个帖子,更新下脚本,但是实在不知道怎么弄,只有重新开个帖子了。本人对于这方面也是新手,但是觉得有点意思,所以去看了一下这么方面的知识,上次的脚本,比较简单,年前一直加班,就没空,这几天上班,比较轻松一点,所以就升级了一下脚本1.修改了第二个入参,...

a1311010193的博客 98

XCode 同一Project创建多个target

由于项目需求,同一项目需要发两个版本,两个版本只有小部分不同,特地研究了一下target,小有了解,把创建target的经过记录在案,方便过后查看,如有疏漏,请网友指正。 创建target有两种方式, 1是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target,可以选择Empty Application模板,

zrhloveswallow的专栏 695

xcode创建一个工程的多个target,应对不同的环境

在项目中我们有时候会有需要应对不同的开发环境,比如企业版本和AppStore版本等。由于不同的target,他的配置文件也不同,所以在打包的时候可以自定义不同的配置信息。创建target的方式有很多种,今天我只介绍最常用的一种创建方式。 一、创建新的target 1.首先是先通过Duplicate复制一个target,因为在创建工程的时候系统已经默认创建了一个target。 2.修改

枫叶砂的专栏 4982

iOS 新建Target实现同一份代码编译多个定制app

iOS 新建Target新建多个Target一, 新建多个Target的用途二, 新建Target的方法方法一:复制target方法二:新建target三、不同的target作用四、通过创建新Target来实现同一份代码克隆出多个定制版本app使用 copy target方式克隆1、复制工程中的其中一个Target(如果工程中有多个target、复制最相似的target,这样Info.plis...

kyl282889543的博客 2397

要不要一个Xcode工程多个target

相信很多人都注意到XCode中, 有个Target的概念. 这在很多地方都有所体现, 比如打开一个工程后, 左侧的列表中有Targets一项, 而在工程界面的顶部菜单中, project里面也有多个涉及到Target的项目, 那么这个Target到底是什么呢?  Apple的人是这样说的:“ Targets that define the products to build. A targe

code life 1万+
上一篇: 开始学习使用ReactiveCocoa框架
下一篇: IOS上获取图片、文件的MD5值。
lvmaker
博客等级 码龄17年 118粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值