zoukankan      html  css  js  c++  java
  • iOS开发设计多个target

    创建target有两种方式,

    1>.是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target进行创建

    2>.另一种方法是通过对原有的target做duplicate,复制一份

    今天主要讲第二种方式创建target过程:

    1、创建工程命名:CeShiTarget

    2、在TARGET中选中项目,右键->Duplicate->Duplicate Only

    3、经过以上步骤创建出来的target命名为之前工程名+copy(CeShiTarget copy),接下来做一下修改:

    • 双加CeShiTarget copy重命名如:OtherApp
    • 修改生成的CeShiTarget copy-Info.plist文件命名为OtherApp.plist
    • 设置OtherApp的Bundle Identifier如:come.huaban.OtherApp,修改Bundle display name 如:OtherApp
    • 在Build Setting中搜索packaging设置Info.plist File路径为我们创建的plist路径,Private Headers Folder Path修改为OtherApp/PrivateHeaders
    • 在manager schmes中修改新创建target的名称,选中新创建的target->设置->Duplicate->命名为OtherApp,此时可选择将CeShiTarget copy删除

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

    分别双击Debug、Release点击+号按钮,输入CHANNEL=1

    效果:

    此时在代码中就可以根据宏做事情

    #ifdef CHANNEL

    //OtherApp中需要执行的代码

    #else

    //CeShiTarget中需要执行的代码

    #endif

    具体怎么执行,一下步骤(我将Main.storyboard删除了,纯代码写)

    1>在TARGET(CeShiTarget、OtherApp)->Main Interface清空

     2>appDelegate中:

    self.window  = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        self.window.rootViewController = [ViewController new];

    3>在ViewController:

    #ifdef CHANNEL
    
    self.btn.hidden = YES;
    
    #else
    
    self.btn.hidden = NO;
    
    #endif

     经过以上就完成设置

    可以更进一步设置,如果想设置两个main.m、appdelegate文件分别管理两个应用,其实也很简单

    1>选择CeShiTarget文件->show in finder ->创建文件夹命名为OtherApp,将文件夹拖入工程(记得add to targets选择OtherApp),此时工程中两个文件夹CeShiTarget、OtherApp在同一级

    2>在OtherApp中创建类OtherAppDelegate继承UIResponder,注意target为OtherApp

    创建类OtherAppDelegate,注意targets选择OtherApp

     3>创建main.m文件,注意targets选择OtherApp,修改代码如下

    3>可以讲OtherApp.plist->show in finder中移动到OtherApp文件夹下并移动到工程,在General中从新选择OtherApp.plist就可以了,在Build Setting ->packaging下查看info.plist file路径是否正确

    4>设置AppDelegate、ViewController、CeShiTarget的main.m的target设置为CeShiTarget(点击.m文件在右侧可看到),不要勾选OtherApp

    5>以后再创建类或文件是注意targets,否则报错找不到文件

    最终目录如下:

     

    同时可以分别设置AppIcon和LaunchImage:

    1>Assets.xcassets中创建CeshiTargetAppIcon、CeshiTargetLaunchImage和otherTargetAppIcon、otherTargetLaunchImage,并分别设置图片

    2>删除LauchScreen.storyboard,分别在TARGET中设置CeshiTarget和CeshiTarget,如下:

    完成

  • 相关阅读:
    简单验证码生成
    java编译器不匹配问题(java compiler level does not match the version of the installed java project facet)
    jQuery中$.fn
    ThreadLocal是什么?
    xmind 快捷键
    powerdesigner 连接oracle
    vs2019 System.FormatException:“Could not parse the JSON file.”
    svn常见操作
    sqlserve报错处理“数据类型 text 和 varchar 在 equal to 运算符中不兼容”
    数据库随机数据
  • 原文地址:https://www.cnblogs.com/czc-wjm/p/5899437.html
Copyright © 2011-2022 走看看