2016-11-07 63 views
0

我正在編寫一個可以以幾種風格(今天只有3個,可能長期20-30個)構建的應用程序。如何高效地編寫一個具有不同版本風格的Android應用程序,針對同一個私人圖書館的不同版本

該應用程序現在是一個簡單的git倉庫中的一個大型Android項目。它有幾個特性(大部分都是在他們自己的java包中獨立出來的),現在大約有4或5個特性,我認爲長遠來看,這種特性會增長十幾倍。

爲了簡單起見,假設應用程序有兩種版本,香料1和風味2,並提供三種功能, 特徵1個特徵2和特徵3

眼下味道使用所有的功能和風味B使用特徵1 & 2.該設置由服務器配置在外部控制,但它確實是事先已知的業務決策(即在構建時),並且特徵3的代碼可以被剝離Flavor B的構建沒有太多的麻煩:通過孤立庫項目中的特徵3,並僅在應用程序的build.gradle中包含Flavor A。

問題是,除了剝離未使用特徵的代碼外,我還有以下要求:特徵必須能夠使用特徵的特定版本。例如,Flavor A將使用Feature 2 v1.0,而Flavor B將不得不使用Feature 2 v1.1。我們可以假設這些功能不依賴於其他功能。

味:

  • 特徵1個1.0
  • 特徵2 1.0
  • 特點3 1.0

香精B:

  • 特徵1 v1.0
  • 特徵2 v1.1

我想盡量保持簡單。我看到的解決方案是隔離其git存儲庫中的功能,對它們進行版本化並將它們推送到專用存儲庫(如Nexus),並在應用程序的build.gradle文件中包含我需要的每種類型的aar。風味A將取決於特徵2 v1.0和風味B在特徵2 v1.1上。

我需要真正設置這個來看看這是否可行,但我已經預測了一個功能的乏味發展階段。我應該如何測試我目前正在開發的功能,當我需要在主應用程序的環境中進行測試時,並參考Nexus服務器上的aar?我是否必須在每次代碼更改時推送一個虛擬版本(我將結束多少個版本?)我應該在開發和引用本地庫文件夾時註釋掉aar依賴項,以便它使用我的本地代碼?兩個開發人員可以使用相同的功能嗎?

更一般地說,這是一種好方法,還是我有更好的選擇?

+0

這是一個廣泛的問題,只是爲了讓你的意見。關於StackOverflow的主題。 –

+0

我應該問哪裏? – Nodjo

回答

0

我會組織它的分支機構和功能。 Flavors應該用於不同的構建類型,例如DEV,QA,PROD等......這意味着您將擁有分支功能 1和2,並且您可以在所有功能中運行這些功能構建類型。
因此,所有分支機構可以在所有構建類型運行時,功能綴合將在分支創建。

科答:
- F1
- F2

科B:
- F1
- F3

等等...

希望它能幫助。

+0

我真的不明白爲什麼我會忽略gradle的productFlavors並使用分支,我正在使用buildTypes與productFlavors結合使用。此外,如果我使用分支機構的功能,我會得到很多分支機構和大量的使用相同功能的口味(又名分支機構)的維護工作。它也阻止了我輕鬆激活一個功能的風味 – Nodjo

相關問題