2016-04-04 12 views
-1

私はの中でのみ使用されるアクティビティを持っています。異なるフレーバー。このアクティビティが2つのフレーバにのみ割り当てられるように、Androidでフレーバを使用することは可能ですか?Android:4つのフレーバーのうちの2つで1つのアクティビティ

+0

具体的なことができますか?私が理解しているところでは、アクティビティクラスと4つのGradle Flavorがあります。このアクティビティをいくつかのフレーバでのみ表示しますか?そうですか? – Arkde

+0

正しい。 2つのフレーバーがアクティビティを表示し、残りの2つはアクティビティを表示する必要があります。 – Ragnar

答えて

0

各フレーバにカスタムソースファイルの場所を定義できます。これが可能である一方、例

productFlavors { 
    flavor2 { 
    } 
    flavor1 { 
    } 
} 

sourceSets{ 
    main { 
    manifest.srcFile 'AndroidManifest.xml' 
} 

flavor2 { 
    manifest.srcFile 'AndroidManifest-flavor2.xml' 
    res.srcDirs = ['res-flavor2', 'res'] 
    java.srcDirs = ['src/flavor2/java','src/java'] 
} 

flavor1 { 
    manifest.srcFile 'AndroidManifest.xml' 
    java.srcDirs = ['src/flavor1/java','src/java'] 
} 

しかしに関しては、は、私は強くあなたが別の味からいくつかの機能をインポートしたい場合は、インポート部分が地獄になりますので、このアプローチを避けるために、あなたをアドバイス。

また、コードを複雑にする可能性があります。これは、維持しにくいif (flavor1)... else if (flavor2)..コードをたくさん作成することになる可能性があるためです。

簡単な解決策は、常に最高です。だから以下を考慮する。

  1. アーキテクチャをsubmodulesに分割します。あなたのメインモジュールは内部に共通のコードを持ちます。
  2. 追加したいさまざまな機能用のライブラリモジュールを作成します。変更
  3. 私は、これは保守性構造を作成する上であなたの出発点を与えることを願っています

のための増加制御し、バックアップを持っているために使用Gitのrepositoriesおよび各モジュールのbranches

  • 、。

  • +0

    詳細な回答ありがとうございます。しかし、これは実際に私の要件を満たすことができないことを意味します。あなたの解決策では、同じ味のjava.srcDirsを使ってActivityAをflavor1とflavor2(mis)に割り当てることができます(flavor3とflavor4にはActivityAが表示されません)。同意しますか? – Ragnar

    +0

    私が使用しないことを示唆した答えでは、フレーバー1と2は同じ構造を指し、フレーバー3と4は他のフレーバーを指すかもしれません。あなたは常にサブディレクトリを持つディレクトリを指し示すことができ、共通のクラスはスーパーディレクトリの1つにあり、利用可能であることを忘れないでください。一方、gitリポジトリとサブモジュールを使用すると、優雅な問題で穏やかに問題を解決できます。 – Arkde

    関連する問題