我有一個產品風味的應用程序,基本上是單個應用程序的白色標籤。然而,偶爾會有一些與主流有些分歧,因爲客戶想要的東西略有不同。 到目前爲止,我們一直在編輯這些案例的代碼,並使用意大利麪代碼(大量的ifs和elses)來確保其他應用程序不會中斷。毋庸置疑,這不是一個可擴展的(甚至是理智的)方法。Android自定義產品風味工作流程
一種選擇是寫在活動課中productFlavor源文件夾,即src/flavor1/java/AnActivity.java
,src/flavor2/java/AnActivity.java
等 由於productFlavor代碼不能覆蓋src/main
類,這將需要被複製爲每個新的相同的類即使沒有定製的味道。我不太喜歡這個選項。它導致了很多冗餘的代碼和類名變得不那麼具有描述性,因爲它們都必須具有相同的名稱才能覆蓋其他名稱,即使它們可能做了不同的事情。
另一種選擇是使用類似Dagger
的東西來構建ObjectGraph
併爲不同的實現注入Intents。例如,如果它是flavor1
,則單擊按鈕X時,將注入ActivityA
的意圖,如果它是flavor2
,則注入ActivityB
的意圖。
這似乎是一個更好的方法來做到這一點,但我仍然不知道如何實現將覆蓋默認ObjectGraph
中的綁定的類。
關於實現或其他選項的任何想法?我沒有被綁定到Dagger
,我剛剛開始研究依賴注入和測試,以便其他框架也能正常工作。
Booyah!那樣做了...我開始愛上'Dagger' –
哦..只是另一個有點相關的觀點。如果有對公共依賴關係的重寫,是否會影響測試中的任何重寫。換句話說,覆蓋是否可以被覆蓋? –
實際上我不確定。我不知道這是如何處理的。我傾向於說最後一個模塊贏了(因爲它們是有序的),但我必須深入研究。在依靠這種行爲之前在本地進行實驗! –