2016-02-26 11 views
6

私はコードの主要なソースとしてAndroidライブラリを使用するアプリケーションを構築しています。それから私はそのライブラリを使って複数のアプリを持っています。これらのアプリは同じコードを持ちますが、エンドポイントなどの異なる設定フィールドを持ちます。図書館でアプリケーションのライブラリbuildConfigFieldsをオーバーライド

build.gradle:

は、これを実現するために、私は、ライブラリのbuild.gradleファイル内buildConfigFieldを持っているし、このように、同じ名前を使って、私のアプリのbuild.gradleにその値をオーバーライドすると考えていました:アプリで

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

build.gradle:

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

これを達成するためのアイデアはありますか?

ありがとうございます!

+0

IIRCでは、2つの別々の 'BuildConfig'クラスがあります.1つはライブラリパッケージ用で、もう1つはアプリパッケージ用です。あなたのライブラリは、アプリケーションの 'BuildConfig'について何も知らないので、ライブラリから' BuildConfig'をオーバーライドする方法を知りません。他のオプション(例えば、 ' 'マニフェスト要素がXMLリソース、通常のJavaベースの設定、アセットを無効にするなど)を調べる必要があるかもしれません。 – CommonsWare

答えて

7

残念なことに、ビルド設定を上書きすることはできません。 は、resValueで指定されたリソースの値を上書きできます。アプリはライブラリをオーバーライドできますが、それ以外の方法でオーバーライドすることはできません。それらを取り出すためのコンテキストが必要なだけです。アプリ起動時にそのコンテキストを実行して、Javaオブジェクトにスティックして、シングルトンなどで共有することができます。

私は過去にこのトリックを使用して、アプリケーションがライブラリを取得してそのデフォルトを上書きできるようにしました。あなたはそれについて読むことができますhere

+0

私はそのアプローチに従ってしまった。私は、ライブラリごとにconfigリソースをオーバーライドするアプリケーションごとにconfig.xmlを作成しました。 – Jorge

+0

素晴らしい!それがあなたのために働いた場合は、upv​​oteして答えを受け入れてください。 –

関連する問題