PROJECT配置多个TARGET

257 阅读2分钟

创建一个新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(@"我最帅");

效果:

2018.08.01

goyohol's essay