PROJECT配置多个TARGET


创建一个新target

快捷键“⌘ + D”:创建一份新的target:(Duplicate:复制)

创建好的两个Target

会配套产生相应的“info.plist”文件


更改target的名字:

更改target的名字


配置“info.plist”文件

修改“info.plist”文件名称:

直接修改文件的名字


修改文件名后,在“Build Settings”的“Packaging”项中修改“Info.plist File”选项:改为对应的“info.plist”文件

改对应的“info.plist”文件
改名为对应的“info.plist”文件


为相应的TARGET 选择相应的“info.plist”文件:

为该TARGET 选择相应的“info.plist”文件
选择相应的“info.plist”文件



修改“scheme”项

修改各项“scheme”的名称:

点击 修改“scheme”的名称
修改好“scheme”的名称


修改各个TARGET的“bundle id”
各TARGET,填上各自的“bundle id”


注意⚠️:如果不修改各个TARGET的“bundle id”为不同的值!会出现“使用其他的TARGET运行,会覆盖之前已经运行(安装)过的APP”!



代码里对不同的项目,进行不同的处理(背景色、图片 不同)

PCH”文件:

#define DisplayName ([NSBundle mainBundle].infoDictionary[@"CFBundleDisplayName"]) //Bundle Name

#define IS_FirstOne  ([DisplayName isEqualToString:@"FirstOne"])        //第一个项目
#define IS_targetOne  ([DisplayName isEqualToString:@"targetOne"])      //第二个项目
#define IS_twoTwo  ([DisplayName isEqualToString:@"twoTwo"])            //第三个项目


代码使用:

UIImageView * imgV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_BOUNDS.width/2.f, SCREEN_BOUNDS.width/2.f)];
imgV.center = self.view.center;
[self.view addSubview:imgV];

if (IS_FirstOne) {          //第一个项目
    self.view.backgroundColor = [UIColor redColor];
    
    imgV.image = [UIImage imageNamed:@"1"];
} else if (IS_targetOne) {  //第二个项目
    self.view.backgroundColor = [UIColor cyanColor];
    
    imgV.image = [UIImage imageNamed:@"2"];
} else if (IS_twoTwo) {     //第三个项目
    self.view.backgroundColor = [UIColor yellowColor];
    
    imgV.image = [UIImage imageNamed:@"3"];
} else {   //其他的项目
    self.view.backgroundColor = [UIColor blueColor];
    
    imgV.image = [UIImage imageNamed:@""];
}

图片素材:


效果:






添加新的icon(启动图同理)

为新的APP(新TARGET)添加icon

点击“New iOS App Icon”
新的App Icon“AppIcon-1”
修改名字


TARGET选择相应的“App Icon”:

选择相应的“App Icon”

都选择好“App Icon”,之后的效果:

“App Icon”都选好后



不同TARGET的多语言处理

创建“Strings File”文件:

添加“String File”


添加好的“String File”,再进行处理:

“File.strings”文件: (targetOne、twoTwo) (英语、简体中文、德语、法语)
“File.strings”

“File.strings”对应的TARGET: targetOne、twoTwo
“File.strings”对应的语言: English、Chinese(简)、German、French

“NewFile.strings”文件: (AppManyTargets) (英语、简体中文、日语)
“NewFile.strings”

“NewFile.strings”对应的TARGET: AppManyTargets
“NewFile.strings”对应的语言: English、Chinese(简)、Japanese



“PCH”文件:根据“DisplayName”选择相应的“.strings”文件

#define INTERNATIONAL    //宏定义国际化字符
#ifdef INTERNATIONAL
#define INTERSTR(a)   (IS_FirstOne ? NSLocalizedStringFromTable(a,@"NewFile", nil):NSLocalizedStringFromTable(a, @"File", nil))
//#define INTERSTR(a)   (IS_FirstOne ? NSLocalizedStringFromTable(a,@"NewFile", nil):NSLocalizedString(a, nil))
//NSLocalizedString(a, nil)对应“Localized.string”

#else
#define INTERSTR(a)   (a)
#endif



代码里使用:

UILabel * lb = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 100.f)];
lb.center = CGPointMake(imgV.center.x, CGRectGetMaxY(imgV.frame) + 100.f/2.f);
lb.font = [UIFont systemFontOfSize:30.f];
lb.adjustsFontSizeToFitWidth = YES;
lb.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:lb];

lb.text = INTERSTR(@"我最帅");


效果:








goyohol's essay

推荐阅读更多精彩内容