起因:
項(xiàng)目包含四種build Configuration(DEBUG(開(kāi)發(fā)),FAT(測(cè)試),UAT(預(yù)發(fā)布),Relase(上線)),每種環(huán)境對(duì)應(yīng)不同的服務(wù)器域名,開(kāi)發(fā)階段經(jīng)常需要頻繁切換前三種環(huán)境,但隨著項(xiàng)目越來(lái)越龐大,目前每次切換環(huán)境編譯時(shí)長(zhǎng)大概在三分鐘左右,花費(fèi)很多不必要的時(shí)間,為了解決此問(wèn)題,考慮在App內(nèi)部添加一個(gè)切換環(huán)境的入口.
思路:
由于每種環(huán)境對(duì)應(yīng)相應(yīng)的服務(wù)器,所以思路是在不切換環(huán)境下,更改需要調(diào)試的服務(wù)器域名,Dev開(kāi)發(fā)為調(diào)試環(huán)境,故以下操作都可在DEBUG中進(jìn)行.
方案:
- 設(shè)置中添加切換域名入口,且僅在DEBUG環(huán)境下有此選項(xiàng).不影響FAT,UAT,Relase環(huán)境.
- 具體邏輯為:設(shè)置中添加切換入口,點(diǎn)擊切換環(huán)境入口,把所選環(huán)境的key存在本地記錄.
- 殺掉進(jìn)程,下次打開(kāi)根據(jù)本地存儲(chǔ)的key值重新注冊(cè)本地請(qǐng)求域名,TCP host等.
- 注:經(jīng)測(cè)試,會(huì)出現(xiàn)殺掉進(jìn)程后保存key的操作還沒(méi)有完成,導(dǎo)致下次進(jìn)入app后沒(méi)有成功切換,故將殺掉進(jìn)程操作exit(0)延時(shí)1s執(zhí)行.
- 重新進(jìn)入APP后,會(huì)根據(jù)上次存在本地的key判斷當(dāng)前所需的服務(wù)器域名,TCP host等實(shí)現(xiàn)切換.(默認(rèn)為DEBUG環(huán)境下的服務(wù)器域名.)
使用:
DEBUG環(huán)境下,選擇設(shè)置->當(dāng)前環(huán)境 進(jìn)行切換 .切換后APP進(jìn)程結(jié)束,重新打開(kāi)完成切換
注意:
由于DEBUG環(huán)境不再只針對(duì)一個(gè)服務(wù)器環(huán)境,故項(xiàng)目中有一些針對(duì)DEBUG進(jìn)行mock的數(shù)據(jù),需要同時(shí)判斷當(dāng)前的服務(wù)器域名是否為測(cè)試環(huán)境.