![](/img/trans.png)
[英]In Xcode run-script how can I pring the real value from plist edited by xcconfig
[英]How to enable parts of code with external files .plist or .xcconfig
我有一個項目正在使用fastlane工具鏈進行構建。
我有多個部署目標(曲棍球應用,試飛,應用商店)-對於每個部署,我都想禁用和啟用某些功能。
例如-當我使用hockeyapp的企業證書進行Alpha構建時,我想禁用flurry分析。
當我進行Beta版構建時,我想更改應用程序ID和/或更改快速鍵
我目前可以使用各種sed
命令在fastlane中進行所有工作,以搜索和替換文件等。
話雖這么說,我相信還有更好的方法。
我知道在Obj-c中我可以針對某些構建環境標志#ifdef
來啟用/禁用部分代碼。 快速解決此問題的最佳方法是什么。
我是否使用某種自定義.plist
文件或.xcconfig
設置來告訴應用程序要做什么/使用什么,或者有其他方法嗎?
我感興趣的是
API_KEY
或類似名稱)中使用的值 您仍然可以迅速使用類似於#ifdef
預處理程序的東西,並且可以將其與.xcconfig
結合使用,后者可用於指定各種變量。 您的腳本可以生成將進入.xcconfig
變量的值。
基本設置為:
.xcconfig
文件,並將其與所需的構建配置關聯(在項目設置->信息中)。 .xcconfig
。 例如,如果要激活ALPHA構建,可以執行以下操作: IS_ALPHA_BUILD=-D ALPHA
。 注意此處需要的-D
。 如果要關閉該標志,腳本可以將變量保留為空。 .xcconfig
文件變量添加標志: ${IS_ALPHA_BUILD}
。 如果正確設置了.xcconfig
則在完成變量的編輯后,應該會看到其內容。 在代碼中使用標志:
#if ALPHA print("alpha") #else print("not alpha") #endif
我希望這會有所幫助,或者至少會為您提供適合您的最佳方法的想法。
我建議將可選代碼放在使用擴展名實現的單獨文件中。 然后,您可以使用項目導航器中的文件屬性來啟用/禁用文件。
即使對於一個項目中有3個目標的單個應用程序,我也要這樣做:完整的IOS版本(付費),有限的IOS版本(免費)和Apple TV版本。
我還使用相同的技術來啟用/禁用用於多個地方的整個類的存根,但實際上只能在其中一個目標中工作。
我有一個類似的概念問題。 我想使用FDD,然后根據需要使用一種機制來禁用功能。 我將嘗試使用pList。 我最初的想法是在plist中聲明所有功能,並為它們提供布爾值。 因此,如果需要啟用功能,我將僅在plist中啟用它。
在編程方面,我計划將所有功能都寫為帶有條件語句的父數據類型的擴展。 因此,從控制器的角度來看,我的代碼工作將減少為僅調用行為/函數。
我希望這是有道理的,我可能會遲早重寫答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.