參考鏈接: http://www.reibang.com/p/83b6e781eb51
目錄:
- 新建 Build Configuration
- 新建 Scheme
- 新建 User-Defined Setting
- 修改 Info.plist 和 Images.xcassets
- 配置和獲取環(huán)境變量
具體步驟
1. 新建 Build Configuration
Project 默認包含一個 Debug 和一個 Release. 這將作為開發(fā)環(huán)境配置, 此處我們需要配置Test環(huán)境, 所以我們分別復制 Debug 和 Release, 將其命名為 TestDebug 和 TestRelease.
如果此時項目里有 cocoapods 的話, 需要先 pod update, 然后再給新添加的 TestDebug 和 TestRelease 選擇應對的xconfig.
2. 新建 Scheme
為新的 Configuration 新建一個 Scheme. 此處命名為 Test. 新建完成之后, 編輯這個 Scheme, 把 Run 和 Archive 都改成對應的 Configuration.
注: 如果使用了 Git 等協(xié)同工具的同學, 這里要把新建的 Scheme 共享出去, 否則其他人看不到. 選擇 Manage Schemes...
3. 新建 User-Defined Setting
回到 Project 的 Build Settings, 點擊+, Add User-Defined Setting.
這里新加入2個參數(shù), CustomAppBundleId 和 CustomProductName.CustomAppBundleId 是為了分開打包, 這里需要4個不同的 Id, 建議直接在原來的 BundleId 加上 Scheme 的名字. CustomProductName 是為了 app 安裝到手機上之后, 手機上顯示不同的名字, 比如測試版等.
4. 修改 Info.plist 和 Images.xcassets
由于新添加了 CustomAppBundleId 和 CustomProductName, 這里需要把 Info.plist 里的 Bundle identifier, Bundle name & Bundle display name 改成我們自定義的字典.
另外, 還需要在 Assets.xcassets 里新添加一個 New iOS App Icon. 新建完 APPIcon 后, 再到 Build Settings -> Asset Catalog Compiler, 為不同的模式設置對應的圖標.
5. 配置和獲取環(huán)境變量
利用 plist 文件動態(tài)配置環(huán)境變量. 先新建2個名字一樣的 plist 作為2個環(huán)境的配置文件. 接下來要在編譯的時候, 運行之前, 動態(tài)地 copy Configuration.plist 到 app 里面, 這里需要設置一個 copy 腳本. 在 Build Phases 里, 新建一個 New Run Script Phase, 并且重命名為 Copy Configuration Files, 腳本如下.
注:這里名字一樣的好處是寫代碼方便. 但同名文件不能放在一個文件夾內(nèi), 所以分別放在4個文件夾內(nèi).
echo "CONFIGURATION -> ${CONFIGURATION}"
RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/config/${CONFIGURATION}
BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
echo "Copying all files under ${RESOURCE_PATH} to ${BUILD_APP_DIR}"
cp -v "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
代碼調(diào)用
- (NSString *) readValueFromConfigurationFile {
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"Configuration" ofType:@"plist"];
NSDictionary *config = [NSDictionary dictionaryWithContentsOfFile:path];
return config[@"serverURL"];
}