2016-02-26 103 views
6

我正在構建一個使用Android庫作爲主要代碼源的應用程序。然後我有多個應用程序使用該庫;這些應用程序將具有相同的代碼,但具有不同的配置字段,例如端點等。覆蓋應用程序中的庫buildConfigFields

要做到這一點,我想我可以在我的圖書館的build.gradle文件buildConfigField,然後使用相同的名字,這樣會覆蓋在我的應用程序的build.gradle該值:

的build.gradle庫:

buildConfigField "String", "API_BASE_URL", "\"http://arandomapibaseurl.com\"" 

的build.gradle中的應用:

buildConfigField "String", "API_BASE_URL", "\"http://myrealapi.com\"" 

關於如何完成此任何想法?

謝謝!

+0

IIRC,你有兩個獨立的'BuildConfig'類,一個用於你的圖書館包,另一個用於你的應用程序包。你的庫對應用程序的'BuildConfig'一無所知,我不知道應用程序從庫中重寫'BuildConfig'的方式。您可能需要研究其他選項(例如,''指向XML資源的清單元素,普通的基於Java的配置,覆蓋資產)。 – CommonsWare

回答

7

不幸的是你不能覆蓋構建配置。您可以覆蓋resValue指定的資源值。該應用可以覆蓋該庫,而不是其他方式。你只需要一個上下文來把它們拉出來,你可以在應用程序啓動時將它們粘貼到一個java對象中,你可以將它們分享爲單例或其他類型。

過去,我已經使用了這個技巧來讓應用程序拉入庫並覆蓋其默認值。你可以閱讀它here

+0

我最終採取了這種方法。我只是爲每個應用程序創建一個config.xml來覆蓋庫中的配置資源。 – Jorge

+0

太棒了!如果它適合你,請註冊並接受答案。 –

相關問題