2016-03-21 27 views
2

私は、Androidアプリのために異なる会社の異なるビルドバリエーションを作成するためにgradleを使用してきました。私は味を構築する必要があり例えばGradle:特定のフレーバーのビルドタイプのみを定義するにはどうすればよいですか?

  • Company1の
  • Company2の

そして、私は種類を構築する必要があり:

  • 生産
  • プレビュー
  • 開発だから、これは6つのビルドバリアントが作成されます

  • をCompany1Production
  • Company1Preview
  • Company1Development
  • Company2Production
  • Company2Preview
  • Company2Development

そこで質問です: は実際に私が会社2の開発ビルドタイプを必要としない、私は唯一の企業1

のためにそれを必要と私は唯一の企業1の開発を持って指定することができる方法はありますビルドタイプ?

私は自分のプロジェクトに多くの企業を持っていますが、ビルドタイプの中にはそれらの企業にとって意味をなさないものもあり、アプリケーションを構築したい人は混乱します。

+0

ビルドバリアントを削除することはできません。あなたが避けようとしている混乱は何ですか?有効な組み合わせを文書化できますか? –

+0

たとえば、会社2は開発ビルドを持ってはいけませんが、これをgradleから構築することができます。企業2は開発ビルドを持つことができますが、それは実際には意味がありません。 – Wesley

答えて

5

、私はGradle Plugin User Guide

フィルタリングバリアントのドキュメントを発見しました

ディメンションとフレーバーを追加すると、意味をなさない変形で終わる可能性があります。たとえば、Web APIを使用するフレーバーとハードコードされた偽データを使用するフレーバーを定義して、より高速なテストを行うことができます。 2番目のフレーバーは開発にのみ役立ちますが、リリースビルドでは役に立ちません。

  • realDataRelease

    realDataDebug

  • を:上記の構成により

    android { 
        productFlavors { 
         realData 
         fakeData 
        } 
    
        variantFilter { variant -> 
         def names = variant.flavors*.name 
    
         if (names.contains("fakeData") && variant.buildType.name == "release") { 
          variant.ignore = true 
         } 
        } 
    } 
    

    、あなたのプロジェクトが唯一の3種類があります:あなたはこのように、variantFilterクロージャを使用して、このバリアントを削除することができます

  • fakeDataDebug

+0

これは私が探していたものです。あなたに大きなおかげで、不要なビルドバリアントを削除することができました – MatPag

-1

Androidプラグインがすべてのビルドのマトリックスを作成するのを止めることはできませんが、有効でない場合はビルドが失敗する可能性があります。あなたはFlavor2デバッグが動作するように構築したくない場合たとえば、あなたがこのようにそれらを停止することができます:自分の質問に答えるために

afterEvaluate { 
    tasks['prepareFlavor2DebugDependencies'].doFirst { 
     throw new IllegalArgumentException("This project is not valid") 
    } 
} 
関連する問題