2017-07-30 22 views
0

私は長年にわたりAndroidアプリケーションにGoogle-Androidの依存関係を導入しないように気を配り、隔離を維持する2つの味、withAmazonwithGoogleを持っています。GMS google-servicesプラグインを条件付きで適用する

app 
|_ main 
|_ test 
|_ withAmazon 
|_ withGoogle 

最近、私は(some reportsがありますが、それはありません)非常にGoogle OHA only製品であり、私はGoogleのエコシステムの外で働くことを意図しているとは思わないFirebase解析の実験をしてきました。 firebaseのセットアップの一部がgoogle-servicesプラグインを適用しています。

apply plugin: 'com.google.gms.google-services' 

だけでなく、それはGoogleのためではありません...しかし、withAmazon味は... google-service.jsonが含まれていません。

app 
|_ main 
|_ test 
|_ withAmazon 
    |- java 
    |- AndroidManifest.xml 
|_ withGoogle 
    |- java 
    |- AndroidManifest.xml 
    |- google-services.json 

...しかしGradle plugins appear to need to have to be applied project wideので、それは味の一つにプラグインGMSのみ適用することができますか? Amazonのフレーバをコンパイルするときに、上記のシナリオでビルドに失敗するのは、google-services.jsonが存在しないという不都合があります...正しいことです。

私の回避策はgoogle-services.jsonapp/ディレクトリの下に移動することです。問題が解決しました。しかし、Google &の間の私の非常に明確な区分が、「純粋な」Android OSが侵害されているとは思わない。

喜んで援助を受けました。

+0

次に、firebaseは 'withGoogle'フレーバーの一部だけを作成し、' google-services.json'をメインフレーバーに移動します。 – Shark

答えて

1

私はそうのように私の親build.gradleファイルを変更することによってこの問題を解決しました。

if (getGradle().getStartParameter().getTaskRequests().toString().contains(withGoogleFlavor)){ 
    apply plugin: 'com.google.gms.google-services' 
} 

プラグイン(および関連するGoogle Playサービスの依存関係)は、アプリのAmazonのフレーバに追加されません。さらに、google-services.jsonは現在「withGoogle」フレーバーのもとに生きています。

注:withGoogleは、「withGoogle」という値を持つ他の場所で定義されているdefです。 肯定応答:https://stackoverflow.com/a/43336869/1348379

関連する問題