2012-03-09 88 views
0

我只想從一些更有經驗的開發人員那裏找到適合以下情況的設置。正確設置XCode iOS項目?

我們正在從App Store開發iOS應用程序。基本代碼應該與各種應用程序相同,因爲功能相同。但是,每個人都應該收到不同的預編譯器信息(我知道這很容易通過plist文件,所以沒有問題)。現在,每個應用程序應該有不同的資源。圖像,聲音等等(目前我擁有不同文件夾中的所有資源,命名相同,因此我可以隨時將其放入並且應用程序將會更改,但看起來......骯髒至少可以說)。

我應該創建初始版本,然後創建新的目標並複製所有內容嗎?或者我們應該複製目標?那我怎麼指定不同的資源文件夾?

感謝


@j_mcnally

你建議如下:

CORE_PROJECT 
| 
|-- APP 1 PROJECT 
| |-- target -> free 
| |-- target -> paid 
| 
|-- APP 2 PROJECT 
| |-- target -> free 
| |-- target -> paid 
... 

,然後CORE項目只是不應該有任何的目標?簡單的共享來源?對我來說似乎合乎邏輯。還有其他意見嗎?

回答

1

您可以在項目中嵌入項目。所以你可以有一個核心項目,然後將其嵌入到你的父項更具體的項目中。這種方式你應該能夠引用相同的核心代碼,但建立不同的目標。

+0

請參閱我的更新。 – 2012-03-09 06:28:03

+0

是啊,看起來很好,掛出壽,看看別人說什麼。這正是我所要做的,面對你的情況。 – 2012-03-09 06:31:39

+0

還有一件事,因爲你似乎有這個釘牢。我的子項目找不到父項目的頭文件。任何方向糾正這一點? – 2012-03-09 07:06:13

2

你真的打算這些應用程序有多類似?如果他們的目標只是在他們的一些配置上有所不同,那麼我寧願不要維護重複的目標或項目。我相信冗餘配置不應該改變,但其他開發者和我必須盡力保持同步的冗餘配置是一個邀請引入不一致,這將導致錯誤,並最終可能無意中分裂項目。

相反,我嘗試自動化整個過程,並避免在可能的情況下創建重複配置。我將添加一個運行腳本構建階段作爲構建過程中的第一步,在執行構建之前,將適合當前應用程序的資源集符號鏈接或複製到位置。這樣你就可以允許一個環境變量來選擇應用程序使用哪一組資源。如果開發人員需要一種方便的方法在xcode中構建和交換這些環境變量值時,他們應該能夠將非共享方案添加到其本地工作區。

我發現這個功能對於像配置應用程序與開發/分段/生產後端系統進行通信這樣的小配置更改非常有效,而且我已經錯過了在設置大型項目時具有相同級別的一致性以僅基於不同的資源集建立多個應用程序,但這些應用程序迅速分化爲共享單個代碼庫的不兼容系統。

現在,如果您認爲真的需要爲這些不同的應用程序添加獨特的行爲,那麼我建議爲通用代碼創建共享靜態庫生成目標,這些目標可以包含在每個應用程序的應用程序生成目標中。將整個羣集共享爲一個工作區,開發人員只需選擇合適的方案即可切換應用程序。這應該保持共享和特定於應用程序的代碼之間的乾淨分離,而不會增加很多開銷 隨着應用程序的增長和穩定,您可能最終希望將靜態庫項目分支到多個存儲庫,作爲其他庫的通用依賴項。這將導致在應用程序和共享庫上工作的成本,但如果您必須謹慎地對該共享代碼庫進行更改,這可能是可取的。多個存儲庫還允許每個應用程序鎖定共享庫的特定修訂版本,並在接受新更改時進行控制,具體取決於您的流程可能被視爲好或不好。

+0

我正要離開我的腦海。我想在同一個項目中使用單獨的目標(我是怎麼做的),但是我遇到了問題。只要我創建第二個目標(不重複),我就開始出現問題。它會在我導入它們時找到頭文件,但是在編譯時會拋出:「針對體系結構i386的未定義符號:」_OBJ_CLASS _ $ _ *******「,引用自...」,它指的是我試圖從第一個目標使用的課程。有任何想法嗎? – 2012-03-09 09:15:47

+0

這個問題似乎只要我試圖用.xib文件實例化一個UIViewController ...任何想法如何可以共享? – 2012-03-09 09:21:52