2013-07-01 2 views

答えて

58

私はちょうど私のGradleファイルに異なる味を持っていることによって、これを行うために管理:

free { 
     packageName 'com.sample.free' 
     buildConfigField "boolean", "HAS_AD", "true" 
    } 

    paid { 
     packageName 'com.sample.paid' 
     buildConfigField "boolean", "HAS_AD", "false" 
    } 

、その後、私は「RES」

というフォルダを「自由」と呼ばれるSRCの下に新しいフォルダを作成し、その下に
src/ 
+ free/ 
| + res/ 
+ src/ 

、そのフォルダ内に、次のコードを使用して新しいファイル「のAndroidManifest.xml」を作成:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.sample" > 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
</manifest> 

Androidのツールプロジェクトサイト上Gradle Plugin User Guideによると:

タイプの構築と同様に、製品のフレーバーは、独自のsourceSetsを通じてコードと 資源に貢献。使用されている

  • すべてのソースコード(SRC/*/javaの):

、すべてのsourcesetsを扱うとき

は、次の規則が使用されているが、単一のAPKを構築するために を使用しました単一の出力を生成する複数のフォルダとしてまとめられます。

  • マニフェストはすべて1つのマニフェストにまとめられます。これにより、ビルドタイプと同様に、Product Flavorsに異なるコンポーネントおよび/または パーミッションが付与されます。
  • すべてのリソース(Androidのresとアセット)は、オーバーレイの優先度を使用して使用されます。この場合、ビルドタイプはProduct Flavorをオーバーライドします。 はメインのsourceSetをオーバーライドします。
  • 各ビルドバリアントは、リソースから独自のRクラス(またはその他の生成されたソースコード)を生成します。 のバリアントは何も共有されていません。
  • srcの下に各フレーバ名のフォルダを作成してカスタムファイルを置くことができるという意味です。上記のファイルがAndroidManifestのgradleの場合、メインファイルのマニフェストとマージされます。

    関連する問題