iOS中如何使用多個Target去管理你的項目環(huán)境版本(測試環(huán)境與線上環(huán)境)

前言

在實際開發(fā)中粗井,為了保證所開發(fā)的產(chǎn)品能夠盡量完美上線,在上線前會特意測試幾輪,保證所開發(fā)的應(yīng)用沒有問題告唆。但是又能保證測試的一些垃圾數(shù)據(jù)不影響線上的版本數(shù)據(jù)域携,此時就需要區(qū)分生產(chǎn)環(huán)境了簇秒,一般在測試的時候會專門為測試而準備一個測試環(huán)境,而上線的時候?qū)y試環(huán)境改成對應(yīng)的線上環(huán)境以達到上線目的秀鞭。

在進行環(huán)境切換的時候趋观,最簡單的方法就是修改全局的公共接口,這樣做在環(huán)境切換上確實能夠滿足需求锋边,但是皱坛,如果此時測試人員要求你在產(chǎn)品的圖標上面也有所區(qū)分,例如App的icon豆巨、啟動圖等剩辟,當線上的圖標與測試環(huán)境的圖標不一致的時候,就變得略顯麻煩了往扔,因為你每次不僅要切換接口贩猎,還要去來回的更換環(huán)境的圖標。

除了上述情況之外瓤球,有一些App還分為專業(yè)版普通版融欧,而專業(yè)版與普通版的區(qū)別在于一些功能的有無,對于這樣的需求卦羡,難道要專門去獨立出來兩個項目嗎噪馏?如果要是專門去獨立出來兩個項目麦到,那以后迭代的話,兩個項目都得同時去迭代欠肾,工作量是如此浩大瓶颠,而單一的去copy也不是設(shè)計中的一個好的方法。

所以為了解決這樣的問題刺桃,我們可以通過使用今天所提到的方法粹淋,使用多個Target進行項目的版本管理(測試版線上版本等)。

定義

在使用它之前瑟慈,我們先看一下蘋果官方文檔是如何闡述Target的桃移,如下:

A target specifies a product to build and contains the instructions for 
building the product from a set of files in a project or workspace. A 
target defines a single product; it organizes the inputs into the build 
system—the source files and instructions for processing those source 
files—required to build that product. Projects can contain one or more 
targets, each of which produces one product.

含義也很簡單,它是一個項目環(huán)境的設(shè)置文件葛碧,一個Target定義了一個單一項目環(huán)境借杰,在一個項目工程中可以包含一個或者多個Target。也就是說一個項目中可以設(shè)置多種環(huán)境进泼。

使用

其實使用起來還是很方便的蔗衡,在使用之前要說明一下,創(chuàng)建Target的方式有兩種:

  • 直接copy之前項目中的Target配置乳绕;
  • 創(chuàng)建新的Target配置绞惦;

接下來,按照步驟來即可洋措。

  • 步驟一:創(chuàng)建Target

在工程中對已存在的target進行復(fù)制济蝉,點擊Duplicate即可

創(chuàng)建Target

選擇
創(chuàng)建成功

如果你想創(chuàng)建一個新的Target,可以使用下面的方法:

新建一個Target
選擇需要的模板配置
  • 步驟二:更改Target的名稱

創(chuàng)建完Target以后你會發(fā)現(xiàn)名字后面有個copy的字樣菠发,頓時覺得業(yè)余的不行有沒有堆生?此時我們可以通過下面的方法進行名字的修改。

配置Target的名字
修改名字
  • 步驟三:添加不同Target下的應(yīng)用圖標

為了滿足項目中不同環(huán)境下的圖標的更換需求雷酪,我們可以使用這種方法來進行。

創(chuàng)建測試圖標
創(chuàng)建測試圖標
選擇對應(yīng)的Target
在對應(yīng)的Target中選取對應(yīng)的應(yīng)用圖標
  • 步驟四:配置全局宏涝婉,目的是在代碼中進行環(huán)境的區(qū)分
OC中添加對應(yīng)的全局宏哥力,以便代碼中版本的區(qū)分
OC中測試環(huán)境添加宏

而在OC中只需要使用以下方法進行環(huán)境的區(qū)分

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 150, 150)];
    UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 150, 150)];
    
    view1.backgroundColor = [UIColor blackColor];
    view2.backgroundColor = [UIColor yellowColor];
    
    


#if TARGET_VERSION == 1

    [self.view addSubview:view1];   
#else

    [self.view addSubview:view2];
#endif
    

}

Swift中的測試環(huán)境下的配置

在Swift中使用如下的方法去區(qū)分對應(yīng)的環(huán)境

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let view1 = UIView.init(frame: .init(x: 100, y: 100, width: 150, height: 150));
        let view2 = UIView.init(frame: .init(x: 100, y: 100, width: 150, height: 150));
        
        view1.backgroundColor = UIColor.black;
        view2.backgroundColor = UIColor.yellow;
        
        #if DEVELOPMENT
            self.view.addSubview(view1);
        #else
            self.view.addSubview(view2);
            
        #endif
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

對應(yīng)的通過編譯不同的Target,我們也就得到了不同環(huán)境下的App了墩弯,如下所示:

App的icon1
App的icon2
運行效果1
運行效果2

擴展(對于cocopads的使用)

相信很多時候我們的項目離不開pods的框架管理吩跋,在使用cocopods管理的時候,我們不要忘了將這些框架添加到對應(yīng)的Target中渔工,否則锌钮,可能使用的時候找不到對應(yīng)的框架,對于pod的使用引矩,可以參考以下代碼進行構(gòu)建:

platform :ios, '7.0'
workspace 'TestTargetDemo'
link_with 'TestTargetDemo', 'TestTargetDemoDev'
pod 'SDWebImage'
pod 'AFNetworking'

總結(jié)

通過使用不同的Target來管理我們的不同環(huán)境的配置文件梁丘,極大的簡化了我們切換環(huán)境的時間侵浸,方便了我們開發(fā)的工作,某種意義上也提高了我們的開發(fā)效率氛谜,不是嗎掏觉?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市值漫,隨后出現(xiàn)的幾起案子澳腹,更是在濱河造成了極大的恐慌,老刑警劉巖杨何,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酱塔,死亡現(xiàn)場離奇詭異,居然都是意外死亡危虱,警方通過查閱死者的電腦和手機羊娃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來槽地,“玉大人迁沫,你說我怎么就攤上這事“莆茫” “怎么了集畅?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缅糟。 經(jīng)常有香客問我挺智,道長,這世上最難降的妖魔是什么窗宦? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任赦颇,我火速辦了婚禮,結(jié)果婚禮上赴涵,老公的妹妹穿的比我還像新娘媒怯。我一直安慰自己,他們只是感情好髓窜,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布扇苞。 她就那樣靜靜地躺著,像睡著了一般寄纵。 火紅的嫁衣襯著肌膚如雪鳖敷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天程拭,我揣著相機與錄音定踱,去河邊找鬼。 笑死恃鞋,一個胖子當著我的面吹牛崖媚,可吹牛的內(nèi)容都是我干的亦歉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼至扰,長吁一口氣:“原來是場噩夢啊……” “哼鳍徽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起敢课,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阶祭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后直秆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年晌姚,在試婚紗的時候發(fā)現(xiàn)自己被綠了挥唠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焕议。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡唤锉,死狀恐怖窿祥,靈堂內(nèi)的尸體忽然破棺而出蝙寨,到底是詐尸還是另有隱情籽慢,我是刑警寧澤猫胁,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布弃秆,位于F島的核電站髓帽,受9級特大地震影響脑豹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜必盖,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一俱饿、第九天 我趴在偏房一處隱蔽的房頂上張望拍埠。 院中可真熱鬧枣购,春花似錦棉圈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碧聪。三九已至液茎,卻和暖如春捆等,著一層夾襖步出監(jiān)牢的瞬間滞造,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工谒养, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人买窟。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓丰泊,卻偏偏與公主長得像始绍,于是被迫代替她去往敵國和親瞳购。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理亏推,服務(wù)發(fā)現(xiàn),斷路器径簿,智...
    卡卡羅2017閱讀 134,701評論 18 139
  • 首先, 看到snapshot部分篇亭,想必你已經(jīng)對FastLane已經(jīng)有了解。如果你對 Fastlane 還不太了解,...
    春田花花幼兒園閱讀 1,691評論 0 14
  • 很開心柔昼,今天早上起得早了些哑芹,而且中午也進行了坐享。現(xiàn)在的體會是自己依舊過得感覺很緊張乙嘀,時間不夠用末购,但是內(nèi)心已經(jīng)有些...
    側(cè)耳傾聽0114閱讀 153評論 0 0
  • 一、小確幸: 1虎谢、利用晨跑時間完成了吳軍老師的《硅谷來信》1-256章的復(fù)盤盟榴。 二、今日得到: 學習卓克老師的《科...
    清風_bd61閱讀 110評論 0 0