2015-01-12 4 views
9

私の現在のアプリケーションでは2つのビルドがあり、build 1build 2と呼ぶことができます。私は2つのフレーバーが次のような共通のコード/リソースを共有することができますが、また別のコードとリソースを持つことができることを理解する:Androidスタジオ - 味は他の味とコードを共有できますか?

Two Flavours Diargram

は、私は何をしようとしていることはそう、それはお互いにいくつかのコードを共有することbuild 2を拡大していますビルド(例:build 3)。次のようないくつかのコードを共有し、次のいずれかにも独自のコードセットを持っている能力を持ちながら

Two Flavours Sharing Code

これはBUILD2と3共有いくつかのコード/リソースを構築することになります。 または:ここ

Build 3 Extending Build 2

build 3build 3も独自のコード/リソースを持つことができますが、 build 2はそう build 2からすべてのコードとリソースの両方で利用可能であることを構築する拡張されます。

build 2を延長することが(可能な場合)最良の方法だと思っていますが、アドバイスや正しい方向への私の指向は大変ありがたいです。私は無駄にインターネットを精練して6時間以上過ごしました。

答えて

7

これはうまくサポートされていません。本当にそれをしたいのであれば、シンボリックリンクを使っていくつかのハッカーを試して、さまざまなフレーバーを効果的にフォルダを共有しようとすることもできますが、ソースコントロールでは少し奇妙なものになりますが、ビルドで。

長期的には、特に現在IDEには良い機能がないため、あなたのアプリケーションの書き込みや保守が難しくなるため、ビルドシステムでは細心の注意を払うことをお勧めします(例えば、コードをリファクタリングする場合、非アクティブな製品のフレーバー全体にリファクタリングを適用する方法はなく、一度に1つのみで動作させることができます)。

より良いアプローチはなく、ビルド1味のものの味のための依存関係のAndroidライブラリモジュールにビルド2ビルド3し、それを抽出するのが一般的ですものを取ることであろう。異なる製品のフレーバーは異なる依存関係を持つことができ、そのメカニズムはサポートされ、うまく機能します。

+0

ありがとうございます。私は今のところそれを残すつもりです。私はコードベースを複雑にするハッカー方法を本当にしたくありません。迅速な対応とその答えをありがとう! –

+0

あなたは[この質問では]のような 'sourceSets'を試してみることができます(http://stackoverflow.com/questions/20974524/with-two-res-directories-per-build-variant-gradle-stopped-tracking-changes-in -r) –

関連する問題