1. 程式人生 > >iOS工程中開發環境和釋出環境的切換

iOS工程中開發環境和釋出環境的切換

這篇文件主要是解決以下兩個在開發時經常遇到的問題:

1、        在開發時,有一些程式碼僅在開發時執行,發版時不能執行。比如:測試用的mock資料、自動登入以方便除錯應用、在本次上線時不上線的功能等。

2、        測試人員需要在測試伺服器和線上伺服器間來回切換,原來經常需要為連線測試伺服器和線上伺服器打不同的包,測試人員和開發人員都很麻煩。

1、.pch 檔案

在.pch檔案中增加下面的程式碼:

#warning發版時註釋。發版時只需要註釋此一處即可。

#import"TestAppConfig.h"

將和開發時相關的巨集定義都放在TestAppConfig.h檔案中,在發版時,只需註釋#import"TestAppConfig.h"

應用就切換到了發版狀態。避免了發版時需逐個關閉測試相關的巨集,不容易遺漏。

2、只用於開發時的檔案:TestAppConfig.h

此檔案中定義的巨集全部是僅用於開發的,其內容如下:

#define TEST_APP  1

//線上環境

#define NET_ENVServerTypeOnline

//測試環境

//#define NET_ENV ServerTypeTest

#defineCURRENT_LOGIN_USER_NANE @"lilaping"

#defineCURRENT_LOGIN_USER_PWD @"[email protected]"

//在測試狀態,自動登入

//#define AUTO_LOGIN1

//其它開發相關的巨集…………

其中“TEST_APP”這個巨集是必須的,用來在程式碼中判斷當前是否為開發狀態,這個巨集定義的使用如下:

#ifdef TEST_APP

    //只在開發時執行的程式碼

#endif

3、AppDelegate.m檔案

在此檔案中,如果是開發環境,則在應用啟動後,首先顯示介面,供使用者選擇連線測試伺服器還是線上伺服器。如果是發版,則按正常業務進行。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    [self.window makeKeyAndVisible];

#ifdef TEST_APP

    SetServerTypeVC*setServerTypeVC = [SetServerTypeVC new];

   [setServerTypeVC showSetupWithTarget:self selector:@selector(showFirstVC)];

    self.window.rootViewController = setServerTypeVC;

#else

    [self showFirstVC];

#endif

    return YES;

}

-(void)showFirstVC{

    LoginVC* vc = [[LoginVC alloc] init];

    self.window.rootViewController = vc;

    [self.window makeKeyAndVisible];

}

4、SetServerTypeVC.m檔案。

此檔案為使用者選擇正式伺服器還是測試伺服器的介面。

5、UrlConfig.h檔案

此檔案用於配置伺服器的地址以及其它公用的引數。服務端相關的公用引數應該儘量都放到此檔案中集中管理。

具體內容如下,其它網路引數處理方式相同:

此函式的作用在於,如果是發版狀態,則直接返回網路引數,如果是開發狀態,則根據使用者的選擇,返回測試伺服器的狀態或者正式伺服器的狀態。

CG_INLINE NSString* getLoginUrl(){

#ifdef TEST_APP

    if(![SetServerTypeVC isSelectOnline]){

        return @"http://www.test.com/cas/";

    }

#endif

    return @"https://www.online.com/cas/";

}

使用時:

NSString* logingURL = [NSString stringWithFormat:@"%@login",getLoginUrl()];

此處將取服務端相關引數由原來的巨集定義改成了一個函式。原因在於,在開發環境時,連線那一個服務端是由使用者在應用執行後選擇的,不是在應用啟動前就決定的。如果用巨集解決的話,沒有找到一個好的可以集中管理網路引數的辦法。

    包裝為一個方法後,雖然多了一次呼叫,但是便於集中管理網路相關的引數,方便管理。

相關推薦

iOS工程開發環境釋出環境切換

這篇文件主要是解決以下兩個在開發時經常遇到的問題: 1、        在開發時,有一些程式碼僅在開發時執行,發版時不能執行。比如:測試用的mock資料、自動登入以方便除錯應用、在本次上線時不上線的功能等。 2、        測試人員需要在測試伺服器和線上伺服器間來回切換

vue專案配置生產環境釋出環境的介面地址

平常我們團隊開發時,都在公司的區域網內,呼叫介面也是區域網內部的,但是專案上線時,請求介面是線上伺服器端的,那麼就有介面之間的來回切換問題.在使用vue-cli搭建專案以後,做相關配置就可以實現,不用手動更改介面路徑,也可以請求不同環境下的介面.1.設定不同的介面地址先找到以

vue axios 給生產環境釋出環境配置不同的介面地址

本專案是vue-cli搭建的專案框架,引入axios用於資料請求。配置不同的介面地址,(首先確保已經集成了axios,如對整合axios有疑問的道友,可參看我之間的一篇部落格vue-cli 引入axios)操作如下一、設定不同的介面地址找到如下檔案 /config/dev.e

webpack -- 關於proxyTable的配置在開發環境生產環境的原理解析

前言 首先,proxyTable是我們在本地開發環境中除錯介面用的,目的是為了解決本地跨域的問題,因為本地地址為localhost:xxxx/xxx 在線上的生產環境是沒用的!!! 假設我們用的是vue-cli命令列工具生成的webpack專案模板

vue開發api介面地址區分開發環境線上環境

相關檔案 /config/dev.env.js // 本地開發配置 /config/prod.env.js // 線上打包配置 修改/config下的dev.env.js和prod.env.js這兩個檔案 dev.env.js '

vuejs經驗交流之-開發環境生產環境的啟動

分享 技術 cli cnpm 刪掉 經驗交流 http 開發環境 yarn vue開發環境 首先要下載必要的包 命令 cnpm install/yarn install 1 啟動後臺服務 npm run server

手把手教你用webpack3搭建react項目(開發環境生產環境)(一)

stc reac config nod top llb cor git history 開發環境和生產環境整個配置源碼在github上,源碼地址:github-webpack-react 如果覺得有幫助,點個Star謝謝!! (一)是開發環境,(二)是生產環境。 一、首

Spring Cloud 進階之路 -- Eureka的高可用,搭建 Eureka叢集(開發環境生產環境

  Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。   目錄 一、開發環境簡易配置: 1、配置Configurations 2、在Configurations 裡

ASP.NET CORE 2.0 釋出到IIS,IIS如何設定環境變數來區分生產環境測試環境

0.前言 因為給前端的測試環境是windows,所以要設定windows上的環境變數,如果上Linux就沒有這篇文章了,所以大家不要在意為什麼core不放在linux上。 1.網上的解決方案  a 方式:通過 setx 命令設定環境變數引數,文章地址:https://www.cnblogs.com/xishu

開發環境 測試環境 生產環境的區別

對於一個剛進入公司的新人來說,在熟悉工作環境的時候,會聽著幾個“老人”在自己可視範圍之外或者輕鬆的討論著業務,其措辭拿捏精準,期間,涉及到一系列的概念,可能會讓你不覺明厲,暗歎:“高階,大氣,上檔次”。有些術語,它既有官方稱呼,也有通俗叫法,對於不覺明厲的我們只

iOS專案開發流程釋出流程

專案開發流程 1.需求分析 2.功能設計 3.編寫程式碼 4.測試 5.釋出上線 釋出 1.進入developer.apple.com,點選Certificates&Identifiers,再點選Certificates 2.註冊App Id,輸入專案名稱和Bun

springboot不同環境,不同配置的實現(開發環境生產環境切換

首先,是我實現的最終效果圖可以看到這裡配置了3個application,其中第一個是總的配置,第二個是開發環境,第三個是生產環境。總的配置總是會生效的,而另外兩個配置生效的條件,則要看看我們在總的配置裡配置了什麼,比如這裡,我在application.yml裡配置了開發環境s

webpack開發環境生產環境切換原理

在package.json中有如下設定: "scripts": {     "dev": "node build/dev-server.js",     "build:prod": "cross-env NODE_E

SpringBoot的Profiles根據開發環境測試環境載入不同的配置檔案

參考:https://www.cnblogs.com/bjlhx/p/8325374.html 1、需要有一個預設的配置檔案,然後一個正式的配置檔案,一個測試的配置檔案。啟用配置項,預設的配置檔案application.properties也會載入進去的。程式設計的方式指定生效的profile。 預設的配

Docker 標準化開發測試生產環境

對於大部分企業來說,搭建 PaaS 既沒有那個精力,也沒那個必要,用 Docker 做個人的 sandbox 用處又小了點。可以用 Docker 來標準化開發、測試、生產環境。Docker 佔用資源小,在一臺 E5 128 G 記憶體的伺服器上部署 100 個容器都綽綽有餘,

Spring Cloud 進階之路 -- Eureka的高可用,搭建 Eureka叢集(開發環境生產環境

Eureka 作為註冊中心,必須保障高可用,否則會直接影響有關的整個服務體系。 以下分別進行開發環境和生產環境的多服務中心叢集配置。 目錄 一、開發環境簡易配置: 1、配置Configurations 在上一

vue利用axios處理開發環境生成環境的跨域問題

1.跨域,是一個需要前後端一起解決的伺服器問題,在vue-cli的webpack有解決這個問題的功能。 例如前端向後臺伺服器(http://localhost/echoIp/index.php)傳送一個請求,然後將收到的資料列印到頁面。 那麼由於開發環境不在

react+webpack 打包,開發環境生產環境整合一體拿來就能用

直接上程式碼: webpack.config.js import webpack from "webpack"; import path from "path"; var path = path.resolve(__dirname,"/main.j") var

CentOS配置PHPNginx環境變數

一、摘要 在Linux CentOS系統上 安裝完PHP和Nginx後,一般需要執行檢視版本命令’php -v’和’nginx -v’,確認是否安裝成功,如果在沒有新增到環境變數之前,執行“php -v”命令檢視當前php版本資訊時,則會提示命令不存在的錯誤,

騰訊雲的開發環境生產環境傻傻分不清

開發環境和生產環境 為了方便開發除錯,防止影響到線上服務,騰訊雲提供開發和生產兩套環境,兩套環境擁有以下特點: 開發環境 免費使用 自動分配測試用二級域名:xxxxxxx.qcloud.la 自動部署免費 HTTPS 僅可用於線上除錯,不可釋出