2016-02-26 73 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

太棒了!如果它适合你,请注册并接受答案。 –