序文:これは、Androidアプリでビルドタイプと製品フレーバーを使用する方法についての質問ではありません。関連する基本的な概念を理解しています。この質問は、ビルドタイプで指定する必要がある構成、プロダクトフレーバーで指定する必要がある構成、および実際に区別が必要かどうかを理解しようとすることに関する詳細です。
今週は、AndroidアプリのGradle構成について詳しく学びました。私は当初、ビルドタイプと製品フレーバーの両方に優れていると思っていましたが、ドキュメントを深く掘り下げるほど、両者の違いがまったく明確ではないことに気付きました。
明確に定義された階層があるため(ビルドタイプで指定されたプロパティが製品フレーバーで指定されたプロパティよりも優先されるという意味で)、ビルドタイプと製品フレーバーをまったく区別する必要がある理由がわかりません。すべてのプロパティとメソッドを製品フレーバーDSLオブジェクトにマージし、ビルドタイプを(デフォルトの)フレーバーディメンションとして扱う方が良いでしょうか?
私の混乱を招いたいくつかの具体的な例:
signingConfig
プロパティは、ビルドの種類と製品の味の両方に設定することができます...しかし、minifyEnabled
(と、私が想定し、shrinkResources
?)のみビルドタイプに設定することができます。applicationId
製品フレーバーでapplicationIdSuffix
のみ指定できます... ビルドタイプでのみ指定できます!?
実際の質問:
上記の例を考えると、ビルドタイプと製品フレーバーの役割に明確な違いはありますか?
もしそうなら、それを理解するための最良の方法は何ですか?
そうでない場合、最終的にビルドタイプと製品フレーバーを単一の構成可能なDSLオブジェクトにマージする計画ですか?
applicationId
たとえば全体を変更できる方法とタイミングを制限します。