簡體   English   中英

構建配置和目標之間有什么區別?

[英]What's the difference between Build Configurations and Targets?

我們有五個幾乎相同的應用程序,有幾個不同的圖標/名稱/設置。 它們是同一個應用程序的不同“品牌”,區別僅在於幾個不同的圖標、單獨的 AppGroups 和代碼中的一些默認設置。 這些在 Xcode 中創建為它們自己的目標 這是一個代碼庫,但有 5 個目標指向它。

它開始看起來非常好,有五個不同的目標。 但是,我們現在為應用程序添加了兩個擴展。 一個自定義“NotificationContentExtension”和一個“TodayExtension”(小部件)。 由於我們有 5 個不同的目標和 5 個不同的權利/組,我們發現除了將這些擴展添加到每個目標之外,沒有其他方法可以實現這一目標。 由於擴展是另一個目標,這意味着我們現在有 15 個不同的目標。

我們現在正在經歷極其緩慢的編譯時間,因為每次我們打開故事板時,Xcode 都會為每個(主)目標編譯一次整個內容。 我不需要構建我的故事板 5 次。 或者我的任何其他文件。 我有一個應用程序,但有一些不同的文件和一些運行時設置。

這讓我感到奇怪 - 這 15 個目標中的每一個默認都有兩個構建配置:RELEASE 和 DEBUG。 我注意到可以自定義這些,並添加更多。 為什么不添加配置而不是目標?

例如,不要將“RELEASE”和“DEBUG”設為“MYAPP1”、“MYAPP2”、“MYAPP3”等。每個配置都可以有自己的產品名稱、圖標等等,對嗎?

有什么好的理由這樣做嗎? 在處理不同的 AppGroups/Entitlements 等時,是否有可能? 我們將 CoreData 數據庫存儲在 AppGroups 中。 重要的是,這些應用程序可以全部安裝在同一設備上而不會相互損壞。 據我所知,只要每個配置有幾個不同的 FLAG 並且自定義代碼,這應該不是問題。 簽了怎么辦?

我閱讀了有關該主題的這篇文章/教程,其中解釋了基礎知識並讓我入門,但要實際使用數據庫和權利等對其進行測試將需要大量工作。

幾年后回答:順便說一句,答案是肯定的。 使用 BuildConfigurations 是安全的並且工作得很好。 它還刪除了所有不必要的構建時間。 我們轉換了項目設置,最終得到了三個目標(app、widget1、widget2)和多個 BuildConfiguration。

要自定義構建配置,請在 Project Navigator 中單擊您的項目,然后單擊藍色的“MyApp”(在 PROJECT 下,而不是在 TARGETS 下),然后在頂部欄中選擇“Info”。 您將看到配置列表。 默認情況下,它們將是“DEBUG”和“RELEASE”。 您可以在此處添加/刪除/自定義。 將其設為“MyApp1”、“MyApp2”和“MyApp3”。 然后單擊“目標”下的“我的應用程序”,轉到“構建設置”,然后搜索例如“產品名稱”。 如果將鼠標懸停在它上面,“產品名稱”旁邊會出現一個箭頭,單擊它展開它,然后您會看到您可以為不同的配置單獨更改值,因此“MyApp3”可以命名為“MyApp3”而無需影響他人。 這可以為所有構建設置完成。

如果您有多個“口味”,並且可能以后需要添加更多,我建議不要直接在“構建設置”中更改各個值,因為它們更難找到且更容易忘記。 您應該讓每個相關值(例如 ProductName)從外部鍵繼承,並為每個“風味”創建自己的 .xcconfig 文件,其中包含這些鍵的所有單獨值。 這樣,如果您需要添加另一種風格,您可以簡單地添加另一個包含所有相關更改的 .xcconfig 文件,並且您不必查看 BuildSettings 中的所有值並可能忘記其中的一些。

完成此操作后,為了能夠實際構建/運行每個配置,您必須為每個配置添加一個方案。

我從這種方法中注意到的唯一負面影響是方案下拉列表中的應用程序圖標是錯誤的。 即使“應用程序圖標集名稱”不同,它們也會相同。 應用程序的圖標在運行/安裝時是正確的,但在 Xcode 的內置下拉列表中會顯示錯誤。

不過要小心,在更改構建設置時,您應該知道自己在做什么。 默認情況下,當您運行應用程序時,DEBUG-config 運行,而 RELEASE 用於“存檔”(發布時)。 如果您不尊重這兩者之間的差異,而只是為您的每個應用程序/風格創建一個構建配置,您要么在開發時獲得更長的構建時間,要么在發布后獲得更差的性能。 這取決於“優化級別”等構建設置。因此,為了安全起見,您應該為每個應用程序創建“MyApp1DEBUG”和“MyApp1Release”,它們分別是原始“DEBUG”和“RELEASE”的克隆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM