2011-01-31 37 views
9

我正在尋找一種在iOS應用程序的構建過程中動態添加有關應用程序信息的方法。在iOS應用程序(日期/時間應用程序構建)中構建信息

在測試過程中,這將是巨大的,知道什麼時候我已經安裝在設備上的應用程序建成並可能誰建造這將是一個很好的瞭解,以及。

我預想中settings.app一個部分,將給予基本建成信息進行調試。我不想在每次構建之前手動更新構建信息文件 - 應該動態生成數據。

+1

這些類似的問題可能會提供有關如何在構建時值郵票到文件中的一些想法:在Xcode中插入的Subversion版本號](http://stackoverflow.com/questions/372218/insert-subversion-revision-number- in-xcode)和[如何在應用程序的設置包中顯示應用程序版本修訂版?](http://stackoverflow.com/questions/877128/how-can-i-display-the-application-version-revision- in-my-applications-settings-b) – 2011-01-31 23:42:25

+0

感謝Brad,這些都是很好的資源。 – 2011-02-11 00:49:37

回答

7

你可以寫在Xcode運行在您的構建過程的最後一個shell腳本生成階段。在這個階段,您可以使用defaults命令將數據寫入任意文件。我已經使用這種技術來寫入Info.plist文件,但是你可以寫任何你想要的文件[1]。

下面是一個示例腳本來寫入當前的git版本的Info.plist:

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
gitversion="$(cd "$SRCROOT" && git describe --always --dirty 2>/dev/null)" 
if [[ -n "$gitversion" ]]; then 
    defaults write "${infoplist%.plist}" GitVersion "$gitversion" 
fi 

你應該能夠適應這種指向你想要的文件(例如,您的設置包)和寫入信息你要。

[1]如果您寫信給Info.plist,Xcode有一些錯誤可以阻止它實現Info.plist在構建過程中更改,這可能會在設備構建時破壞配置。

+0

好主意,但是...我這樣做是爲了保存一個關鍵的BuildDateTime。我可以讀[[一個NSBundle mainBundle] objectForInfoDictionaryKey:@「BuildDateTime」]精細在模擬器,但是當我建立即席分佈,並加載在設備上的應用程序,[[一個NSBundle mainBundle] objectForInfoDictionaryKey:@「BuildDateTime」]返回空。有任何想法嗎? – mputnamtennessee 2012-05-15 18:01:30

13

您也可以使用標準的宏__DATE__這將導致串像當然與構建適當的當前日期「1980年6月25日」。