2016-01-14 40 views
0

在我運行我的應用程序之前,我想運行一個外殼來更新我的Info.plist。什麼時候iOS程序運行`運行腳本'並加載Info.plist

使用Build Phases-> Run Script,我可以運行我的外殼。這裏是我的問題,我看到Info.plist在程序構建時更新了數據,但當我遇到我的應用程序時,我發現從plist讀取的數據是舊數據。

我還發現了另一個有趣的事情。一方面,如果我剛建立了項目(command + B),我看到plist更新,然後運行程序,UI中顯示的數據是新數據。另一方面,如果我在Xcode中使用Run Button,當Xcode show build成功時,我看到Info.plist更新,但UI中顯示的數據是舊數據。

那麼,會發生什麼?你能幫我解決它,讓我的數據永遠是最新的。

=============

現在,我已經動了我的「運行腳本」前「編譯源代碼(SWIFT文件)」跑外殼,和它的作品。然而,我仍然無法理解,因爲它在編譯期間運行,所以如果我在'編譯源文件(swift文件)'後運行我的'運行腳本',爲什麼運行的程序無法從Info.plist獲取正確的數據?程序在其運行時間或編譯時間內是否加載數據?

+0

「構建階段 - >運行腳本」只是構建時間的事情 – sage444

+0

哪裏是構建階段的腳本?它需要成爲一個腳本嗎?你可以做它作爲生成設置的一部分嗎? – Wain

+0

@ sage444是的,這是運行時的事情。但問題是,因爲我的shell在編譯期間被調用。爲什麼程序在運行時使用舊數據? – yeyimilk

回答

0

構建一個應用程序涉及許多不同的階段。編譯源代碼只是其中之一,還有鏈接,複製資源,簽名等等。其中一些是在「構建階段」選項卡中明確列出的,其他則不是。

因此,它實際上是在構建過程中的適當時候運行腳本,以便Info.plist在構建過程實際使用它之前進行修改。

如果您點擊「Report Navigator」圖標(左側面板頂部列表中的最後一個圖標),然後在最後一個版本中,您會看到該版本的報告,其中列出了所有在構建過程中執行的步驟,包括運行腳本和處理Info.plist。